Rust Devblog 133

The first look at the new harbour, a step closer to the new component system, and more.


Component Update (Prerelease)

Okay, that’s it! All the items in the game that I feel should require components now have them! I’ve tried to do a decent balance pass on them as well. I’ve also finally changed all of the drop tables so that you will no longer find completed items, only components or resources from barrels and Radtown crates. You’ll still find completed items from airdrops. This really makes components feel very valuable and rare, providing a fresh and fun experience.

Aside from adding radiation back, this whole next week is going to be about balance so when we push it out it’s fun for everyone and we aren’t encountering zero day issues. So please opt in to the prerelease branch and give it a shot. I’ll also be checking reddit periodically and listening to feedback there.

Harbor Design Phase

We’ve started the work on two medium sized harbors. The idea is to offer an easier place to traverse for fresh spawns, where they can find loot for early game crafting, without the constant clash against equipped players. That also means no sniper’s nests in here, so buildings that usually grant you access to those floors won’t.

Harbor 1

This one is a condensed version of the concept art we started from. The idea is three piers with two pockets of interest on land, and one pocket spread on the ocean across barges and tug boats.

Harbor 2

The second harbor features largely flat terrain enclosed by cliffs on the back. The area is is a maze of shipping containers you’ll be able to explore for loot, or hide in if things get too tense for your fresh naked.

All that you see today is obviously work in progress still, and we’re still refining layouts. As you can see there’s a lot of greyboxed art present, we have a pretty decent list of assets left to produce, and we estimate another month and half before these hit main. We’re going to try to minimize the amount of untextured assets that make it to main when we patch it in. We’ll keep you posted with our progress as time goes on as usual.

Ambient Light Volumes

You may have noticed that the lighting inside buildings, caves and sewers was much brighter than in the screenshots our artists usually post in their devblog sections. This was caused by a regression that broke our dynamic ambient light darkening from buildings, rocks and environment volumes. This is now fixed, so you will once again see darker building interiors and close to pitch black sewer systems, just like our artists intended them to appear.

Memory Usage

Every Rust server owner is probably aware of the fact that entities are using a lot of server memory right now, which can cause some problems on lower-end server hardware. While looking for ways to reduce this I found that a legacy deployable component that’s used by a lot of our entities (wooden boxes, external walls and doors just to name a few) was using up a fair amount of memory on each of those instances. The fact that there are usually tens of thousands of those entities on one server turned it into a significant problem. Long story short, it is now fixed.

Prefab Pooling 2.0

I’ve been talking to a couple of Unity guys about some of the performance issues we’re facing in Rust, one of them being the fact that game object instantiates and activates are still causing significant issues for us. This is a problem since even when we eliminated the instantiate overhead with prefab pooling, the activate overhead has largely been unchanged by those optimizations. After some back and forth it looks like it’s caused by Unity freeing the native component memory when for example a game object with an animator on it is deactivated. This is a problem since it triggers a fairly slow memory allocation the moment you reactivate the game object, making prefab pooling much slower than it would have to be. It looks like it’ll be down to us to work around this, so I’ve started prototyping a new way of prefab pooling that does not have to change the game object state when the pool is entered or left. This will also eliminate some overhead that scales with the number of child objects and components on a game object, which is nice. I’m not completely done with the implementation yet, but I’m hoping to be able to test it on the staging branch starting next week.

Vegetation, Hair and Fur – Part 1

After clearing some bugs left over from last week, I was finally able to start working on support shaders for hair and fur materials. These shaders usually require some sort of opacity and anisotropic highlight control, both of which aren’t directly supported in our current deferred setup.

The sort of opacity we need is a special case so we can get away with temporal alpha-to-coverage, which is essentially means it’s still cutout opaque, albeit dithered. This feature can also be useful to achieve more fitting anti-aliasing on, among other cases, vegetation:

The purpose of this purely aesthetic feature is to prevent aliasing/flickering on your character’s future neckbeard to avoid ruining your experience.

Cave Deflooding Fixes

Last week’s cave deflooding wasn’t fully bug free and completely missed spectating and debugcamera mode. This week these should no longer be an issue. Fixed a bug causing water to disappear on relogging and and added proper water visibility for spectate mode. Please feel free to give it a try on the Prerelease branch.

Pistols/Revolver Deploy Animations

I figured sidearms should have more of a use beyond that of a primary weapon. I asked Minh to change the animations up so they deploy in about 0.5 seconds. It’ll always be quicker to switch to a sidearm instead of reloading now.



Bolt Rifle Animations

After watching some Battlefield 1 videos, I was inspired at how they did their weapon animations. It prompted me to redo the Bolt-Action Rifle animations since they were the first ones I did for Rust and looked far too “floaty”.




Helk wanted me to adjust the LR300 ironsights so they’re more usable. I took the rear sight and enlarged the circle then thinned out the edges.

Map Worldmodel

This week I added a worldmodel for the map, as well as LODs, setting up the holdtype stuff, worldmodel drops, etc. I also added some holdtype animations for the player.

Female Clothing Variants

Some clothing items available in the upcoming workshop were lacking female variants resulting in some hilarious but unwanted results.

This is now fixed.

The Tank Top, Shorts and Collared Shirt now have proper female variants, and I took the opportunity to clean up some geometry and smoothing group issues, as well as adding some missing lods.

Hazmat Suit

I’d hoped to get the majority of the Hazmat Suit textured this week, but the female variants took longer than I’d anticipated. Here’s a shot of the finished (well, almost) respirator though. The rest of the suit is well on the way and texturing will be finished up this week.

Junk Piles

This week I’ve been focusing on the junk piles from which you can scavenge loot for your components. There isn’t much to show for now but Pauls’ concept should show what we’re aiming for! In the meantime I’ll be constructing the bits and bobs you see scattered about so we can have a some nice rusty junk piles.

Deployable Placement Sounds

The first pass at deployable placement sounds is finished and in this week! Doors, window bars, and other building pieces still need to be finished, but everything that’s a standalone deployable item has sounds now.

Sound Occlusion

I made a few little tweaks to sound occlusion after playtesting a bit this weekend, so I’m going to leave it off for one more week for more testing.

Gunshots & Bullet Flybys

I’ve started working on silenced gunshots for the LR300 and MP5 this week, and spent some time adjusting and improving bullet flybys.

Right now all of our bullet flybys variations have the same layers in them, and it feels a little bit too homogenous when a bunch of bullets fly past you in a row. They’ve all got almost the same high end wizz to them, so I’m working on adding more variation, accentuating the midrange instead of the highs in some of them. I’ve also been exploring adding a more realistic supersonic crack to them and I’m pretty happy with how that’s sounding so far.


Environment volumes now eliminate ambient light when underground
Eliminated UI canvas overhead from grass displacement camera
Converted some component getters to pooled lists (less GC)
Stripped deployable component from entity instances (reduced memory usage)
Removed client missing gib warning when not running in dev mode
Removed server building privilege warning when not running in dev mode
Muzzle Brake has less of a aimcone penalty
Fixed skin lighting related issues
Added opacity anti-aliasing to grass when TSSAA is enabled
Improved LR300 iron sights
All Pistols have drastically reduced draw time
Improved bolt action animations
Added map worldmodel + LODS
Now drops map model
Planner/map player anims
Posted on October 28th, 2016 12:03 PM EST