The LR 300 Rifle is now in the game! Plus a look at the reworked Bone Armour and Lighthouses, sleeping bag tweaks, and more.
LR 300 Rifle
The LR 300 Rifle has been added to the game! This weapon is an uncraftable/unresearchable rare drop and handles differently than any other weapon. I’ve greatly reduced the horizontal recoil on the gun, making it much easier to predict its firing patterns, but I’ve also increased its cone-fire and reduced its damage to 80% of the AK’s. It also has a 30 round magazine. In my testing, while the damage is lower and cone-fire is higher, you still output more damage per-second in medium-range engagements because you can really predict the recoil. In some ways this gun is a bit of a test: we’d like to remove the ridiculous recoil all the guns have in Rust because firing them feels a bit like you’re watching the gun do its thing and don’t have any ability to control it. If this works out, we’d like to rebalance all of the weapons so that they have more predictable recoil in the future. You’ll be able to find this weapon rarely in weapon crates, airdrops and heli crates.
It felt weird that flashlights seemingly came out of nowhere, so I increased the brightness casted on the player holding it. Big whoop!
Helicopter Gib Error
Yikes! If you were out of network range of a helicopter crash and then ran towards it to get that loot, the actual helicopter gibs would never spawn for you! This meant you would get stuck on invisible pieces and be able to see people through them. What a mess! This is all sorted now
Sleeping Bag Pickup
Guess what? I enabled the ability to pick up sleeping bags so long as you own them! You can then redeploy them like a fresh sleeping bag. This means when you start out you don’t have to worry about your bush bag being a waste as soon as you build a foundation! Rejoice!
Remember after the disaster patch last week? When I had to restart all the servers AGAIN a few hours later to fix a ‘critical exploit’? Well, enough time has passed that I can spill the beans on what it was. Remember that debug shot I posted showing playerculling enabled/disabled? Turns out since it was added any client could enable it with playercull.debug true and get free ESP. Haha! Thanks to everyone who posted it using the F7 Bug report tool. Hard to believe this was in the game for a week before anyone realized it (or reported it!).
Bone Armour Rework
I’ve textured and skinned the Bone Armour this week. I left it a little too late to merge into this patch, and Helk wants to give it a proper balance pass – but you’ll see it in next week’s patch. Craig yanked a screenshot for the header, so here’s another.
I doubled down on entity instantiation, entity destruction and micro stuttering optimizations this week. As of right now I’ve identified 13 areas that contributed to the huge performance drops when walking around the world, some of which were reaching all the way back to the first weeks of development. The good news is that I eliminated or optimized 10 of those things, which is more than I would have expected in this time frame given how deep down into the back-end I had to dive for some of them. This is mostly because we did a good job with the entity event handling that was implemented in the early days of the reboot, which made a lot of stuff far easier to optimize now.
This week’s performance gains came mostly from various forms of pooling, load balancing and runtime workload reduction. Those improvements made lag spikes far less extreme, though there are still three optimizations left to implement before I can call it a day. Until that’s done you’ll probably still experience the occasional performance drop, so please look at the current state as a work in progress.
If you run into any issues that haven’t been around before this update, try disabling the pool.sounds, pool.entities or pool.players convars to see if it’s coming from the new pooling features and let us know.
This past week I’ve been focusing on finishing the exterior. I have finished mapping all the surfaces, added a broken railing along side of the base, wear and damage, as well as decals to help everything blend together.
Since then I’ve began looking at the interiors. While I focused on creating the large, bespoke spiral staircase, I’ve been also considering adding some alternate staircases and ladders to make the potential encounters in this area more interesting.
I dedicated this week to making the new tunnel’s LODs and colliders. It usually doesn’t take such a long time, but the complexity of those models and the amount of pieces required it. I spent a lot of time closing holes and trying to minimize sparkles where pieces meet as these can break your immersion easily.
After this is done, the dungeon will hopefully run well. There’s a substantial amount of lights being rendered inside, but the load these have on your performance is ultimately linked to your graphics options (Shadow lights).
Deferred Mesh Decals
I took some time last week to work on a feature Vince requested. We’ve been using a sort of hacky mesh decal method to get shadows on semi-transparent surfaces, which is something Unity doesn’t support out-of-the-box. The problem is we could only make it work efficiently for direct light shadows – like sun/moon – and Vince wanted to be able to use decals on dark underground tunnels, where mostly only spot (flashlight) and point (torch) lights are visible.
Decals are very important for detail. They allow us to add those small details that make environments truly unique. So I went ahead and implemented a simple deferred mesh decal system, where decals are rendered just like any other opaque deferred surface, therefore becoming fully integrated with Unity’s deferred pipeline, correctly receiving light, shadows and post-processing.
Not only do we get shadows now, we also get occlusion and other effects used to add depth and realism to our scenes. They’re faster too, so we can use more of them. Here are some examples showing how they finally feel connected to the environment:
While working on a proper hair shader I noticed that skin shading wasn’t working as it should. We use a technique called pre-integrated skin shading, a very popular and cheap way to simulate skin subsurface scattering. The shading wasn’t looking quite right, so I made some fixes to improve the light for the inner layers of skin and take better advantage of this technique. This probably won’t be noticeable unless you’re doing a character close-up.
Turns out we can adapt this technique to simulate thicker materials like wax or rubber. I made some internal changes to allow other shaders to exploit this, making more translucent materials a possibility for the near future.
We seem to have lost terrain shadows along the way, so I went ahead and fixed it. This can make a big difference on highly uneven landscapes and adds to the immersion. This fix won’t affect performance.
Player Preview States
As I looked into the setup of how these would trigger, I realised I didn’t actually have any transitions to and from the idle state. So this week I’ve been getting through them. Here’s a few of them in an epic minute-long video.
LR 300 Animations
Helk thought I should tighten up some of the LR 300 animations, as he felt the gun animations were too fluid and didn’t give the gun a sense of weight. So this week I went over the animations and removed any exaggerated movements. I also added a cool new tactical looking animation that Helk suggested, where the player rotates the gun 90 degrees and quickly flicks his wrist to spit the mag out.
I noticed the materials for many of the weapon add-ons and the M249 were a bit dull and weren’t reflecting light the way a metallic material should. I fine tuned the specular settings so they’re more realistic.
I added some sounds to the research table this week. There’s one that plays while research is happening and a special success sound now.
I also made sounds for the in-world collectable items that all shared the hemp picking sound until now. Mushrooms, rocks, and stumps all have their own collection sounds now (I’m particularly fond of the mushroom sound).
I’ve started working on the LR 300 sounds too, and those should be done next week.
I worked on polishing some of the sounds this week. Mostly minor volume and EQ tweaks, but I did larger changes to some of the inventory UI sounds: stone and wood sound a bit thicker, metal-wood tool sounds are a little deeper and more natural sounding.. Physics & Animal sounds are next on the polish list.
I fixed a couple bugs that were causing issues with sound pooling this week too.
This week I finished up on the high-poly, detailed model for the vending machine. I also finished the low-poly and I’m baking out the base textures (normals, ambient occlusion, cavity) so I can go onto texturing this week. Then onto the LODs. There isn’t really much to show from this stage, but there’ll be pics next week!
I’ve been designing some Flame Turrets this week. I tried to come up with some design ideas that would be obviously different from the current gun turret from a distance, and could be used in different ways, like spinning around and be potentially triggered by some kind of mechanism, but this is still to be determined.
Enabled entity pooling by default on 64 bit systems Enabled sound pooling by default on 64 bit systems Optimized entity realm list access on client and server Optimized door animator initialization when entity pooling is enabled Load balanced building block skin creation Load balanced destruction of all client side entities Added entity pooling support to storage boxes Added experimental player mesh pooling (pool.players, disabled by default) Fixed expensive UI rebuilds whenever a player or sleeper was received Fixed expensive UI rebuilds whenever a shot was fired Fixed several “Can not play disabled audio source” warnings New collectable pickup sounds (mushroom, stones, stumps) New research table sounds Fixed a bug where some sounds wouldn’t play with sound pooling enabled Misc sound tweaks & polish Fixed bug where sleep anim would sometimes play when the player jumped in/out of water Optimized ragdoll visibility updates Fixed see through walls caused by Motion Blur or TSSAA Fixed terrain shadows Fixed skin lighting Fixed visual artifacts on some glsl challenged drivers (OpenGL) Fixed stretched river flows on Hapis Fixed god rays when revz is enabled Added deferred mesh decals Increased flashlight emission point brightness Decreased flashlight beam brightness Fixed invisible helicopter gibs if destroyed far away Added LR300 Sleeping bags are pickupable