Loadout lockers, optimisations, fixes, and more.
I didn’t want just another deployable for decorating your base, so I actually added some functionality to the Lockers that I think everyone will really appreciate. Basically, the Locker has three sections, each with a ‘swap’ button. When you press it, all of your clothing and the contents of your belt will be moved to the locker, and whatever was in the locker will be equipped on your player. This makes it very easy to change loadouts, or to simply undress quickly and know where everything is.
A lot of people were exploiting the Helicopter AI and preventing it from doing strafing runs by some Tool Cupboard voodoo. I’ve changed how the AI works to combat this. It used to never go for a strafing run if its target was not authorized in the area. Now it’ll do the strafe, but it will use napalm instead of rockets. Napalm has also been modified to only damage players, so you can’t use this to grief other people’s bases. I’m excited to see how much more difficult this makes the helicopter to take out.
Turret Cost Reductions
I’ve reduced the cost of the Flame Turret and the Autoturret. You can also find Autoturret parts (rarely) in Radtowns and in purple boxes at abandoned vehicles. Let’s see if we can crash the servers this week when every noob has one deployed in their 1×1.
Vending Machine Indicators
Don’t you just hate it when you trek halfway across the map to a Vending Machine just to find out it’s out of stock or empty and raided? Well no more! Now you’ll see that empty vending machines show up as a red icon on your map. There is still so much to do on this front–we need some kind of rating system–but this should help for now.
I’ve changed how picking up Decor Deployables works. Things like Rugs, Chairs and Tables will now require building privilege to pick up. You’ll also need a Hammer equipped so you don’t do it accidentally. Let’s see how this works out and maybe I’ll expand it.
Sometimes it was really hard to get Animal Fat starting out, and then out of nowhere you’d have way too much once you could take down a bear. To mitigate this situation I’ve added a yield of four Animal Fat from gutting a Small Trout. You can now fish for fat!
Accidental Nerf/Buff Removed
Did you notice your SAP performing better or your SAR performing worse this week? Well that’s because someone reverted the changes from the week prior. This is now fixed. Sorry about this, guys.
Spinning Wheel And Netting
I’m implementing two new items, one of which is a Spinning Wheel! You’ll be able to use it to make decisions. We would like to have the wheel paintable, like signs, to offer players customization. I would also like to add it to the Workshop so that people who do not fancy drawing stuff on the wheel can use ready-made skins for the specific purpose they need it for.
Second item is a netting block that acts as a wall frame, it will work like ladders but let you make continuous climbing surfaces inside your bases.
Building Parts Optimizations
Over the last couple of weeks there’s been a few optimizations going in regarding building parts. Namely the walls, windows, doorways, low walls and floors. Some were motivated by cosmetics like rugs for floors (but at the same time lowered vertex counts). The most optimized so far are the stone and metal tiers, where you should see a decent reduction in vertices used. There might be more to come on other tiers, priority was given to these as they were more expensive geometrically than their counterparts.
Bed And Locker
This past week I have continued working on deployables. I’ve made some finishing touches to the locker and passed it onto Helk to add gameplay functionality. Since then I’ve been working on remaking the old bed deployable. The new version will be higher quality and should fit the Rust’s art style better. The high-poly is done at this point and I’m moving to baking and texturing.
Finally managed to wrap this up and get it out in the wild. The vast majority of mesh batching work is now running in a thread, which increases the speed at which batched meshes are refreshed and helps reduce stuttering when large meshes like buildings need updating. This wasn’t the biggest performance issue, but solving it still helps us a great deal since other optimizations like occlusion culling rely on the mesh batching system to work efficiently, and things are only getting more complex from here.
I spent some time investigating memory usage and identified and fixed one leak in the workshop skin loading and one leak in the plant material updating routine. We still have some work left to do on this but we’re making progress.
Workshop Skin Performance
Workshop skins have been causing some significant performance issues as they were added to more and more items. I’ve profiled the background loading routines and put some optimizations in place to eliminate the biggest issues, but since this isn’t at a point where I would call it amazingly optimized yet I also added a convar to disable workshop skins altogether. If you’re having performance issues give “itemskins 0” a try in the F1 console. The value isn’t saved since it’s only meant to be used as a temporary solution until we figure this out for good, so you’ll have to do this again after every restart.
Network Cell Performance
I increased the granularity of our networking grid in an attempt to make the performance hits from entity streaming less significant, essentially by splitting up massive buildings into smaller parts. I’m still in the process of determining the slowest entities and optimizing them, but this should be of some help in the meantime.
Plant Entity Performance
Turns out plants (mostly Pumpkins and Hemp) were by far the entities with the biggest client side performance impact. Even more so than buildings. Since that’s clearly ridiculous I’ve put some optimizations in place where needed.
I’ve spent some time this week on improving our performance profiling to better be able to identify entities with a big overhead and the performance impact of work that’s being done either asynchronously or in co-routines. This helped identify both the plant and the workshop skin performance issues, so it already kinda paid off.
Tier 1 Workbench
Work continues on the Tier 1 Workbench. I’ve finished and textured the majority of it, and now just comes the finishing touches on the props. Not much left to do on this part, hoping to be on LODs by next update. Here’s how it’s looking so far.
I’ve finished up the low-poly/bake for the Wooden Armour set. There’s a part of me that wants to cobble together a headpiece to complete the set, but I’m unsure of how relevant it would be from a gameplay perspective or how practical it would be IRL, so for now It’s just the classic wood armour set with upgraded visuals.
I’m working on the texturing, but for now you can take a spin around in the 3D viewer.
I completed the Revolver, Guitar, and AK47 third-person animations.
Double Barrel Shotgun Viewmodel
I made some slight tweaks to the Double Barrel Shotgun. I toned down the recoil for ironsight shooting, and I modified the front/rear sights so they don’t look as ugly.
Third-Person Muzzle Flashes
I fixed a bug where the muzzle flashes were offset improperly when a Muzzle Brake or Muzzle Boost add-on was attached to a gun. I also added a new Muzzle flash effect for when the player fires a gun with a silencer on it. It has a little puff of smoke that comes out.
I noticed all of our impacts effects look a little dated and decided to improve them. I was inspired by the impacts from Battlefield 1 a little.
World Model Skins
It’s recently been highlighted that there’s some distortion of world model skins that appear fine on viewmodels (for the most part).
At first it seemed like the recent world model optimisations were at fault. Although in a couple of instances this has been true, I’ve also discovered these distortions have existed from day one on some of our original world models. We were also using way too high mesh compression on them. The main reasons why these issues have come to light now are:
1) Our base textures are generally blocks of colour, worn edges, scratches etc. It’s only now as people add skins with very fine details (lines/shapes/carvings/writing) it has highlighted issues with the UVs in small sections of the mesh.
2) You guys are able to scrutinize models at close quarters in the workshop
I have to be careful when fixing these issues, as some of these exist in the viewmodel as well, and skin creators have compensated for them in their maps. So, the aim is to resolve as much of these distortions as possible without breaking already existing content. That said, if you’ve created any skins, please check over the next couple of weeks as the models are updated that your skins display as intended and let me know of any issues.
I’ve mostly been recording and editing/cleaning recordings for the footwear specific footsteps this week. I’ve got every surface type recorded with every shoe/foot type other than gravel, carpet, and crunchy bark dust/sticks, which should be sorted after I take a trip to Home Depot tomorrow.
After recording is done, I’ll pick the best steps out, get them in game and processed so they sit right with our existing sounds, write a little code to swap steps out based on your shoes, and then we’re good to go! I’ve started doing this for barefoot and boots already, since I recorded those ones first.
All in all I’m really happy with how these are turning out. I think they sound miles better than what we’ve got now, and I’m excited to have a bit more variation between different player’s steps.
Here’s a WIP preview of some of the boot footsteps:
I’ve also recorded a few more item handling/physics sounds this week, recorded some additional armor/leather/cloth movement layers to add to footsteps and to use with the heavy armor sound, and have been working on a new version of the M249 gunshot at Helk’s request, which you can preview here:
Oh and I did a little bit of profiling/optimization, and tweaked physics sound playback volume a bit so things have to hit a little harder to be louder now.
Fixed invisible LR-300 worldmodel bug Flashlight lod updates Crossbow world model uv fixes Reduced mesh compression on weapon world models Rocket launcher world model uv fixes Sound creation optimization Physics sounds are quieter unless the impact is pretty hard Lower vertex counts on Stone & Sheet Metal tiers Added multithreaded mesh batching Added better profiling Fixed workshop skin memory leak Fixed plant material memory leak Optimized workshop skin loading Added “itemskins” convar to disable workshop skins Made network cells more granular Optimized client side plant entities Fixed craft canceling sometimes losing resources when inventory is full Dense bushes have an extra LOD Heli always strafes with napalm if target has no TC access Lowered cost of AutoTurret Autoturret parts found in purple crates + towns Lowered cost of flame turret C4 won’t stick to Decor Deployables Decor Deployables can only be picked up with TC access + hammer equipped Out of Stock Vending machines show up as red on the map Fish provides animal fat Fixed being unable to place walls next to a metal shopfront on a triangle foundation Fixed SAR buff/SAP nerf reversion Fixed Harbor 2 not showing up on map