What's New in Rust's "Devblog 91" Update
Devblog 91 is where Christmas first arrived in Rust: smashable gift boxes, stockings that refill by the fire, candy canes and teddy bears. Underneath the tinsel it's a heavy performance patch, with tree culling rewritten and the long-standing LOD bias exploit finally closed.
Devblog 91 shipped in mid-December 2015 and is the update that first put Christmas into Rust. It wasn't a planned feature - it got added on a whim over a couple of days - but gift boxes, stockings and candy canes stuck around and became an annual fixture. Alongside the seasonal stuff, this was a serious performance week: tree rendering was rewritten, and one of the game's oldest competitive-integrity problems finally got fixed.
Christmas comes to Rust
At various points during the day and night you'll hear jingle bells. Step outside and you'll find large gift boxes scattered around the world - smash them open to get a set of presents. From there you can either unwrap them immediately, or save them up and trade them in for a larger one. Small, medium and large gifts were all added.
Beyond the usual resources and tool packages, the gifts contain holiday-themed items: candy canes, teddy bears (which give comfort as a deployable) and stockings. Stockings are the neat one - hang one near a fire and when you hear the bells ring, you may find something extra waiting inside. The plan at the time was to keep it all in-game until the new year.
Community skins for the season
Community skins went live with this patch too, and the festive set from that era is still floating around the market today - things like Merry Reindeer, Santa's Little Helper, Christmas Bag and Christmas Storage. Being among the earliest workshop skins accepted into the game, they're a decent example of how the very first wave of Rust cosmetics has aged.
Tree optimization and the LOD bias exploit
The biggest performance win came from trees. It turned out the heaviest cost wasn't rendering the trees themselves but tree culling, which was being handled by Unity's terrain system. Replacing it with a custom culling system saved more than 2.5ms every frame on Andre's machine.
That work opened the door to fixing a long-standing fairness problem. Players running extremely low LOD biases had a real advantage, because trees and bushes turned into billboards or vanished entirely far sooner for them than for everyone else. That's now fixed. A tree quality slider was added to the main menu performance options, which simplifies tree geometry for lower-end machines, but billboard and culling distances are guaranteed to be identical for everyone regardless of settings.
Work also started on an "uber batching" system intended to batch all levels of detail on every static mesh - buildings, rocks and potentially trees - rather than just the low building LODs and shadow casters. It didn't make this update, but it was flagged as the next big performance step.
Anti-cheat and damage verification
The system prototyped the previous week to ignore damage from players who recently picked up anti-hack violations or intentionally lagged out is now enabled by default on all servers, having been tested on a single official server first. The configuration was deliberately set conservative to start with, targeting high-profile networking delay exploits, with plans to tighten it once it proved stable.
Water 2.8 and rendering fixes
The water code got a substantial rework, mainly aimed at robustness and at fixing the DX9 bug affecting some AMD GPUs that surfaced the week before - a bug the team couldn't reproduce in-house, so they asked affected players to test on the dev branch and report back. The overhaul also brought the long-overdue ocean shore foam, kept subtle and mostly visible on steeper terrain slopes so it doesn't end up everywhere. Leaf translucency was simplified into cleaner transmission code that's easier to tune.
- Fixed broken decals on tree trunks
- Fixed the "see through wall" bug accidentally introduced the previous week
- Fixed the "black river" at distance bug, most noticeable on low quality terrain
- Fixed the underwater mask in OSX/GL
- Fixed wave displacement on very shallow, flat water beds
- Added atmospheric scattering and fog to particle shaders like smoke and flames
- Tweaked underwater lighting and optimized water refraction
Server, client and engine changes
Garry's half of the patch was mostly performance triage. Sound modulation now updates on alternate frames instead of every sound every frame - explicitly a stopgap, since the system was heavy. Rain particle collision was disabled after it turned out to be a significant cost that should have been caught earlier.
Server performance drops were traced to physics, so the server-side physics step was lowered by default to avoid the recurring 4fps periods. The tradeoff is less accurate physics, with a possibility of objects falling through floors - nothing was observed in testing, but players were asked to report it. Client physics precision was doubled, making movement more responsive. Rust also updated to Unity 5.4.2, which fixes the memory leak caused by enabling canvases with scrollpanels - RAM usage should at least stop growing indefinitely.
RCON got some overdue fixes: if the RCON port is undefined it now defaults to the game port (safe, since RCON uses TCP and the game uses UDP), and if no IP is defined it correctly binds to any IP. A community member also decompiled the game and sent in network optimization suggestions, which were applied - probably a negligible gain, but a nice gesture worth mentioning.
Balance and bug fixes
- Fixed the infinite 5.56 ammo exploit
- Auto turrets no longer shoot each other, and can no longer be placed completely underwater
- The M249 was made much more accurate
- Helicopter crates are now lootable if they land in water
- Fixed being unable to upgrade foundations with a turret on them
- Fixed being able to jump higher while standing in water
- Fixed shelves being unplaceable on certain triangle floors
- Fixed the bleeding damage lag exploit
- Fixed the light LOD performance regression from dungeons
Art, animation and audio in progress
The salvaged hammer and pickaxe joined the throwable two-handed weapon set. The new rock art was finished, with the harder problem - placing them procedurally in a convincing way, ideally large formations first and then boulders and smaller rocks clustering around them - still open. Terrain splats for sand, rock and gravel were redone with more depth, and biomes were being recoloured to feel distinct: white limestone cliffs and grey sand for temperate, darker rock and sand for tundra, black rock and sand with a hint of blue for snow, with arid keeping its Grand Canyon yellows. Previously almost everything looked arid.
Animation-wise, the remaining third-person running animations got the same look up/down treatment as the rifle and two-handed sword, and the new directional wounded animations - including one for a shot to the back of the head - were hooked into the player animation controller so the correct flinch plays based on where you were hit. The semi-auto rifle finished its LODs and was handed off for animation, and a jerry can model was knocked out on the side. Music work continued toward a theme-based system, where collections of loops of varying intensity are selected by weather, biome, nearby monument and whether you have building privilege or comfort, then layered based on how intense your current situation is.
If the Christmas items are the reason you're reading this one, the skins that shipped alongside them - Aston Christmas among them - are still trackable on our skin tracker. Otherwise, Devblog 91 closed out 2015 with the team promising an end-of-year review blog and heading into the holidays on call for emergency fixes only.