First look at a new integrated workshop that makes it easier to create and upload skins, and lots more.
Hey, here’s the update in video form.
Integrated Workshop (Prerelease)
The Rust SDK sucks. Forcing people to download and use Unity to make skins sucks. Us downloading skins, fixing them because they look different in game, then manually adding them to the game sucks. This is all why we stopped adding new skins a while back. Because it all fucking sucks.
But now it’s easy peasy lemon squeezy. Here’s how it works. You’re in the main menu:
Click on “Workshop”. In the workshop, click on “New” to make a new item:
Then select the type of item you want to make from the dropdown:
Then click the “Edit” tab and click the download button to download the default diffuse texture:
Then draw all over it in Paint, Photoshop, or whatever open source crap you have installed:
Click the folder button to update the texture to use the new one:
If you keep editing the texture, it will automatically update in game. Clicking “Publish” generates an icon and uploads it to the Steam Workshop for everyone to see.
This is available right now on the prerelease branch, though it’s still a heavy work in progress. The Rust Workshop has a project page with an almost empty wiki here. If you’re finding something particularly hard to do, or having trouble converting your existing items please let me know via twitter.
Component System (Prerelease)
I shared this on twitter yesterday showing some of the new components that have been added to the prerelease branch. These include
- Metal Pipe
- Sewing Kit
- Metal Blade
- Rifle Body
- SMG Body
I’ve added spawns to barrels and some loot crates and adjusted the crafting recipies for some early game items to use these new components. There is still a bunch to do, but in a day or two all of the items that should use components as their limiting factor should have their recipes adjusted. I hope to have a good balance for the spawn rates. Once this is all done I can start seriously listening to feedback, adjusting everything so when we launch it (targeting the 3rd) it won’t be a disaster!
I tracked down and fixed the entity leak I was talking about in last week’s devblog. The problem was that parented entities, especially when nested, were missing some networking group changes from their parent, which could make child entities belong to different networking groups than their parents on the server. This would in turn leak them on the client when the parent’s group was destroyed. There’s still a somewhat rare problem that entity group change messages can sometimes arrive on the client after that group has already been left, but I’ll have to look into that in more detail next week.
Alistair’s been doing some digging and gathered a list of things that are currently being exploited by private cheats. I fixed some of those exploits this week, starting with the two highest profile ones: a gathering rate increase and an attack verification bypass. Both of those should now no longer be possible.
On the prerelease branch we noticed that the deeply nested object hierarchies of caves and dungeons slow down our LOD calculations and even add additional CPU overhead to our mesh rendering. Since we want to keep those hierarchies for artists when designing the scenes but we don’t need them at runtime, I added some automatic processing that flattens all cave and dungeon prefabs as far as possible at edit time and at the same time strips any empty game objects that aren’t used as reference points. This is now being tested on the prerelease branch and will go live with the next wipe.
The deflooding code I built a couple of weeks ago was essentially for testing and cave assembly. It required a bit more work to get it working properly across both client and server. This feature has been deployed to prerelease in order to deflood Vince’s new caves and dungeons. You should be able to explore them properly now, all the way down to their deepest, most claustrophobic areas. We’ll be testing it up until the next forced wipe. Please report any weird issues you may find.
Underwater effects like bubbles and plankton got unintentionally disabled a while ago and, since it’s a low priority task, it got frequently delayed. I brought them back this week.
During one of our aggressive optimization passes we ended up drastically reducing the number of particles in the rain effect. This caused rain to start falling in waves, even at maximum intensity. I’ve tweaked the effect to make them appear more natural. I’ve also optimized the rain shader to halve the GPU memory bandwidth required under heavy rain, and resized the necessary textures. We ended up with more particles, but they cost less.
There are still a lot of improvements to be made, of course. One of the biggest problems right now, as you know, is rain inside buildings and caves. I’ll be tackling this problem very soon.
Improved Map Loading Time
I took some time to optimize coarse height and slope map generation. These are global terrain maps that are used for a number of different things, from rock blending into terrains, foliage displacement, ocean coastal wave attenuation, and so on. They’re recomputed during map load, each time the player reconnects.
Last week we had to increase resolution for these maps due to precision concerns, causing loading times to increase. Now it’s 6x faster and should reduce current loading time between 0.5 and 1.5 seconds depending on the size of the map, resulting in an overall net positive improvement.
I’ve finished the shipping containers that I showed off last week. They come in various colors, and some are open to will allow players to explore their interiors. In addition I’ve made LODs for the industrial props that were included in last wipe.
You probably haven’t noticed, but you’ve been running around holding a white cube like a total noob since the camera was added. So now there’s a real model for you (which you’ll only ever see when you drop it, spectate, or someone else has one).
I’ve been working through some models this week to reduce the amount of burlap sacks getting dropped. The environment art guys are going to be attacking the rest very soon.
Muzzle Flash Improvements
This week I’ve been looking at ways to improve the muzzle flashes. Helk and I went over some videos of real muzzle flashes and we noticed that they’re much more random in shape and size compared to the current ones. I experimented with several methods in how to improve them and came up with a new method that I feel better mimics real life. Look.
I went over the various LODs for all of the weapon models and optimized them even further. This improves FPS in scenes where lots of weapons are being rendered.
Sound Optimization & Bug Fixes
I got pretty caught up in optimizing and bug fixing land this week. I had a hell of a time tracking down that pitch bug a lot of people have been getting (it took a while to kick in so it was a pain to reproduce) but it should be sorted now!
Most of the optimizations are tweaks to the way voice limiting (controlling how many simultaneous sounds are playing) works. When people are spraying with automatic weapons we stop older sounds more quickly but we also fade them out so things sound a bit smoother now.
I found a few situations where looping sounds that were outside of audible range would still be playing, so we’re automatically pausing/unpausing looped sounds when they come in and out of range now, which helps quite a bit.
Additionally, when we’re doing distance based crossfades on sounds, we’re being a little bit more aggressive about skipping playback on layers that are barely audible which helps when there’s lots of gunshots going off at once.
All in all, the number of active voices in a busy battlefield server, which is the most stressful thing I’ve found so far audio wise, has been reduced by about 1/3rd, sometimes more if tons of people are spraying. I’m not sure that you’ll see much of a framerate improvement from this but it’s good stuff to have done.
I was bug fixing instead of playing on Saturday, which means sound occlusion didn’t get tested in a live environment as much as I’d have liked. The couple hours of playtesting I did get in went really well though! I didn’t notice any issues with occlusion yet, but there’s a few situations I didn’t run into yet that I want to check out more thoroughly before I turn it on by default though, so it’s staying off this week.
Do “audio.occlusion 1” in the console and let me know what you think if you want to help.
I finished up all the non-gunshot sounds for the MP5 this week.
Deployable Item Placement Sounds
These were mostly finished last week but there’s a handful of them I wasn’t really happy with yet, so I’ve recorded some new source material this week and should have these ready to go next week.
I’m finishing off the low poly and bakes for the Hazmat suit this week – transferring the high polygon detail from the sculpting program to the lower poly mesh we use in game. I’ll be moving onto the texturing this week. There’s not much new to show off visually but you can look forward to seeing some textured shots next week!
I finished the Recycler, completing the LODs. It’s ready to be implemented into the game.
Take a spin of it.
New mp5 sounds Misc sound voice count optimizations Misc sound bugfixes Fixed rare NRE with sentry turret Fixed hit decals not showing on shadowed or unlit areas Fixed underwater FX not showing Fixed weapon attachments sliding when using TSSAA Improved and optimized rain effect Improved map loading times Fixed a client side entity leak Enabled player collider and nametag pooling by default Fixed an exploit that would bypass the server side attack verification Fixed an exploit that would bypass the server side attack cooldown Fixed the censorship cubes sometimes not showing when they should Fixed rare NRE with the sign texture update Camera worldmodel added + LODS world model for LR300 when dropped + LODS world model for double shotgun when dropped + LODS world model for bota bag when dropped + LODS world model for silencer when dropped + LODS world model for scope when dropped + LODS world model for holosight when dropped + LODS world model for muzzle boost when dropped + LODS world model for muzzle brake when dropped + LODS world model for building plan when dropped + LODS