What's New in Rust's "Devblog 168" Update
July 2017's Devblog 168 revealed the Bradley APC being built to guard the Launch Site's loot, alongside deep navmesh optimisation work, properly modelled stair colliders and the first player hair experiments.
Devblog 168 went out on 13 July 2017, a week after the Launch Site monument shipped, and the biggest news was the answer to a problem the Launch Site created: the loot there was too good to be unguarded. Helk's solution was the Bradley APC. Elsewhere the week was heavy on optimisation - navmesh, loading times, environment art - plus properly modelled stair colliders and the first real look at player hair.
Bradley APC
The Launch Site's loot needed guarding, so Helk picked up the Bradley APC model that had been sitting around for a while. It was not ready to ship: physics were fully set up and he was about to start implementing the rudimentary AI it needs. The intent was to have it patrol the Launch Site and open fire on anyone trying to get in.
Navmesh work
Pål Trefall, the AI specialist Helk handed the work to, spent his week on navmesh. He explored several avenues: achieving zero navmesh generation time at server startup, generating navmesh only where NPCs actually are, generating it only when players are close enough, and rendering NPCs dormant when players are too far away to interact with them. He also looked at giving monuments hand-crafted navmesh that works alongside the generated terrain navmesh, since monument geometry is much trickier to traverse and benefits from hand-authored navigation data. In his screenshots, hand-crafted areas show pink and generated areas show blue.
How much of this ends up in the game was still undecided, but the expected outcome is better performance and lower memory use.
Andre supported that from the engine side. While Pål was optimising the navmesh baking process he found the terrain collider was a major bottleneck - Unity had to generate the full terrain mesh every time the navmesh was refreshed, which could take a very long time. Andre implemented a custom way to create those terrain meshes so they can be cached for future navmesh refreshes, essentially eliminating the overhead, with the bonus that terrain can be split into smaller patches to make baking faster still.
That also unlocks two things: underwater portions of terrain can be excluded so the baking routines never process them, and cave entrances, tunnels and sewer systems can be correctly carved out so AI can move in and out of them. That fixes existing AI navigation bugs and is effectively a prerequisite for more advanced AI around monuments. All of it was set to go live alongside Pål's navmesh improvements.
Stair colliders
The inaccurate colliders on stairs and foundation steps were among the most irritating things in the game. Vince built new, detailed colliders for all of them, and Andre integrated them without sacrificing smooth movement when walking on them.
Projectiles and physics objects now collide with a very accurate representation that models each individual step, so you can shoot through the gaps. A neat side effect is that small deployables like lamps can be placed on individual steps and will correctly face upwards. The shadow casting proxy meshes were replaced too, so light finally passes through the slits between steps.
Loading times and asset bundles
Complaints about extremely long loads into the main menu, particularly on machines without an SSD, were traced back to loading the asset bundle manifest file - a cause Andre had identified a couple of weeks earlier but had not had time to fix during the run-up to the wipe. The fix dramatically reduces the amount of data read from the manifest, making the step nearly instantaneous.
Separately, the game was again approaching Unity's maximum supported asset bundle size, mostly because some old item skins were being forced into the main content asset bundle rather than the texture bundles due to a loading order conflict. Fixing that cleared meaningful space in the main content bundle and should keep things comfortable for the foreseeable future. Skinnable warmup time was improved and some unused physics and rendering layers were retired.
Water clipping
The Launch Site had shipped with a small portion of the scene ending up underwater, because Rust had no way to clip water surfaces. Diogo implemented a solution this week, so instead of watching water magically pop out of sight you get a smooth, waterless transition into the clip zone. The same trick works on dynamic objects - clipping the interior of a raft or boat floating on water, for example. The changelist also notes water no longer showing on the Launch Site underground gate, and the two east lifts at the Launch Site were temporarily disabled.
Environment optimisation
Vincent and Damian went after performance on distant objects and a range of close-range assets. Much of the environment art was using the same heavy materials on distant LODs that it uses up close, so those were heavily simplified - at that distance you generally will not notice. They also disabled shadow casting across a wide range of assets, both distant LODs and small props that do not need to cast shadows.
The scale of the pass was significant: hundreds of prefabs combed through, with some player deployables getting the same treatment. Vincent added a fair caveat - on a server a week into its wipe cycle, player-owned structures are a heavy performance drain, so while he measured better framerates on an empty server, the gain could be masked by player clutter on a busy one.
Face variations and hair
Taylor continued the skin texture work with a focus on more varied face types. The advantage of interchangeable materials is that each new base he makes can spawn several additional variations by blending between meshes, so he was getting good mileage from a small number of bases. With hair on the horizon, he expected the combined system to deliver the variety they had been aiming for - and warned that not everyone would come out pretty.
Matt was experimenting with player hair alongside Diogo and had pieces going in for testing. Plenty remained before hair reaches the game, but there was real progress: a short style on the male model and a slightly longer one on the female to test how different lengths read, plus facial hair, and - in what he described as an interesting week of development - pubic and armpit hair.
Hair is skinned to the body, which means facial hair moves with the jaw, and all hair can be set to a variety of colours and tones. Next up was getting many more hair and facial hair styles working correctly across all head and body types, the latter needing a clever solution that should tie into other features in progress.
New feedback system
Garry replaced the feedback system as part of the wider Facepunch backend project, since every project at the studio needs a decent way to collect bug reports. The old system popped a bug reporting screen up in-game when you pressed F7. The new one still uses F7, but opens a webpage instead, sending along enough information that the feedback page can show a list of players you might want to report for cheating.
Functionally it is identical. The benefits are that it opens in a browser, can be used outside the game, and works for all future Facepunch products - with obvious room for improvement over time now that it lives on the web.
Audio
Alex R did additional profiling and optimisation on the music system, making small gains and streamlining a few things. Everything was ready to ship, but the version control system consumed five or six hours without successfully merging his branch to main, which meant no smoke test on the staging build and another week's delay for the music update.
He did finish the new barrel impact and gib sounds, made minor level adjustments to a handful of sounds, and continued work on sounds for the scientist NPCs. Rock collectibles were also made larger, rounding out a short changelist for what was primarily a behind-the-scenes week.