July 18, 2026·RustProfit Team

What's New in Rust's "Devblog 79" Update

Devblog 79 was a non-patch week in late September 2015, spent chasing the fallout from the attack helicopter's debut. Helicopter exploits got closed, garbage collection got attacked from both ends, and Facepunch floated doubling bullet speed.

What's New in Rust's "Devblog 79" Update

Devblog 79 arrived in late September 2015, a week after the attack helicopter landed, and it was a non-patch week under the new fortnightly schedule. That made it a cleanup post: Maurino spent the week watching players fight the helicopter and finding all the ways they were beating it, while Garry and Andre went after garbage collection from opposite ends of the codebase. It also introduced the recurring devblog community poll.

Helicopter Fixes

Maurino admitted to spending far too many days calling the helicopter in on unsuspecting players, and got a lot out of it. His summary of the experience is the eternal one for live games: however much you test and balance something beforehand, it all goes out the window the moment the community gets hold of it. He'd watched countless helicopters get shot down without killing anybody. The changes queued for the Dev branch that weekend:

  • The Tool Cupboard "exploit" fixed.
  • More rocket strafes in general, rather than only when line of sight to the target is lost.
  • Door gunners switch targets on the fly instead of hammering the last known position of one player. That kills the tactic of kiting the door guns while your friends bring the helicopter down.
  • Crates genuinely unlootable until the fire goes out - the flames alone clearly weren't deterrent enough.

Looking ahead, with the helicopter proving popular, Maurino wanted to explore PvE encounters aimed at the early game rather than only endgame players.

The Bullet Speed Question

One thing the helicopter exposed immediately was how slow Rust's bullets travelled - you had to lead the thing absurdly. Maurino's proposal was to double bullet speed, which would effectively make them hitscan at short range and make gunplay feel considerably more responsive across the board. Rather than just doing it, Facepunch put it to the community. This devblog also introduced the recurring poll, with the first question being how players felt about Rust's gunplay as it stood. The framing was explicit: not a referendum, not a commitment to do whatever the result says, just a way to gauge opinion.

Chasing Garbage: Network and Server Allocations

Garry took on the server freezes that had been getting worse for months. Framerate itself was fine; the problem was a hitch roughly every minute, and the main culprit was how much garbage the game generated. The biggest single source was the network system: sending an updated entity to a client meant filling a protobuffer, converting it to binary, then handing it to Raknet on the native side - creating garbage both on creation and on serialisation.

His fix had two parts. First, object pooling on the generated protobuffer classes, which sounds worse than it turned out to be, though those classes are used everywhere so there were plenty of edge cases to verify individually. Second, instead of generating a byte array and pushing that to the network system, the protobuffer now gets handed the network stream and writes directly into it - writing straight to native, with no garbage left behind. He was honest that all of this was theory at that point: since it had never been tracked or quantified, there was no way to measure the improvement, so he was also building diagnostic tools to make this class of problem visible.

Garry also fixed a family of small but constantly noticeable effects bugs: impact sounds cutting off the instant a shot object is destroyed, gunshot sounds stopping abruptly when you switch weapons, and blood effects vanishing the moment a player turns into a ragdoll.

Collider Batching and Server-Side Optimisation

Andre finally finished server-side collider batching and pushed it to the dev branch, after working on it on and off for some time. The practical benefit for server owners is much longer intervals between wipes, particularly on high-population servers. Whether it also improved server physics performance was left as an open question until it got tested against 200-player servers.

Implementing it surfaced how scattered the game's "get all entities around this point" and "is this entity visible from this point" queries had become - the same logic duplicated across many files with no unified approach, which makes optimisation miserable because there's no single place to improve. Andre ripped all of it out and centralised it. That gives collider batching one place to do batched-collider-to-individual-collider lookups, and gives future optimisation work a single target.

While refactoring, he found server-side dynamic memory allocations in poor shape and converted a number of the bigger ones to a pool allocator - faster, and no garbage collections. Some of that carried over into client-side code too. Gib performance, which had been bad for a while, got quick fixes for the biggest causes, with a fuller pass acknowledged as still needed.

His weekend hotfixes from the previous patch also landed: building parts spawning slowly on join (now handled in the loading screen), external walls and gates being placeable partially inside players, metal and stone barricades being trivially destroyed with arrows, all events running on server restart, several decal projection distances, the mushroom and hemp pickup particle effect, the oil survey crater, pink particles on OpenGL, and null references in shader variants.

Smaller additions rounded it out: impact effects now read the exact terrain material at the point of impact (sand, dirt and so on), building pieces got correct AI obstacle shapes, fireballs got better sound balancing for client performance, the garbage collector now runs during the loading screen on join and respawn, a deploy volume was added using the new unified entity OBB, and anisotropic filtering is clamped between 1 and 16 to stop silent errors.

Water 2.5: Rivers

Diogo returned to water after clearing leftover bugs. Local reflections were still work in progress with a few more days of polish planned before the next update. Rivers got real attention and now fit the ocean properly: they're affected by global fog and atmospheric scattering so they fade into the background as you'd expect, a high viewing angle no longer shows a flat opaque surface across the river bed, and river-to-ocean transitions are far more seamless. The same work extends naturally to lakes, Hapis included. Wetness around river beds was deferred to a later iteration.

On the fix side, a long-standing artifact visible when walking around ocean water - affecting all GPUs and platforms - was fixed on the development branch and queued for the following week's stable update, and a water mesh code change eliminated a clipping bug that had been hitting AMD users for a while. Shader warmup was disabled by default on OSX (re-enable with -shaderwarmup 1), depth of field no longer ignores the water surface, and a hang or crash when changing quality settings on GL/OSX was fixed.

Effects, Weapons and Art

Scott worked through surface decals and impact FX, finishing snow, sand, dirt, forest, grass and path, with cloth, bone, rock, tundra and water still to come. He also started the blood effect system: basic entry and exit wound decals are in, blood spurts work, and the remaining job was wiring it all together, plus blood splatter and spray decals and improvements to the bleeding-out effect.

Alex Webster fixed a batch of view models - rocket launcher snapping when going to ironsight plus dryfire sounds, smoother hammer animation speeds, the bow made viewable again with popping on the drawn idle loop fixed and a better transition when cancelling arrows, an SMG dryfire fix, and salvaged sword snapping on hit reactions. Bean can and F1 grenades gained a hold state, so they animate while held instead of sitting in a static pose.

Gooseman completed the low-poly red dot sight and began texturing it, and added edge wear and dents to the high-poly flashlight and silencer. Paul designed improvised silencers and suppressors built from junk - a bottle stuffed and wrapped with cloth, oil filters - and started on improvised scopes, which he saw pairing naturally with the bolt rifle. Tom was near done on the female character textures, and in spare time split the AK47 into parts the way the SMG already was, so it can eventually support the same customisation, with customisable parts on their own UVs for better texture resolution. Xavier lost the week to software and technical problems with his clothing pieces.

How a Rust Gunshot Gets Made

Alex Rehberg finished the silenced gunshots - the tricky part being subdued enough to feel stealthy while still landing with impact - and started on survey charge, tree impact and wooden door impact sounds. Tree impacts were intended to pitch up or down depending on the size of the tree you're hitting. He also cleaned up the audio mixer and made gunshots temporarily duck the volume of smaller sounds and ambience, which makes them feel louder without raising their actual volume.

The highlight of his section was a full teardown of how one of his extra gunshot sounds was built, layer by layer: a base gunshot chosen for its metallic cling and boominess, a burst of low end synthesised from white noise through a heavily resonant lowpass filter, a pitched-down stapler recording for woody body and a clack in the tail, a second gunshot EQed and lightly distorted for a crunchier reverb, a pitched-down and shortened nailgun for airy high-frequency snap, and a firecracker with the low end EQed out and faded in slightly after the main hit to act as an echo. That delay is deliberate - he described aiming for a BA-BANG rather than a BANG, since the small gap makes the shot feel stronger, which is also why the sub bass punch is slightly delayed. Final polish was compression, tube saturation for fullness, and EQ to add lower-mid warmth while cutting a narrow band of metallic ringing that the compression and saturation had over-emphasised.

Andre closed on what he wanted to tackle next: effect and decal pooling as a client-side optimisation, and improvements to the procedural maps with the possibility of a first draft of Vince's new dungeons. That combination - the monuments and the frame-time work - is what defined the next few devblogs.