Hair is here, workbench experimentation, upcoming building changes, and more.
I’ve been working with Diogo Teixeira on the final few tech issues before getting hair into Rust.
Currently in game are two hair styles per gender, two facial hair styles and eyebrow and body hair. We’ve implemented some tech to make the hair deform with player clothing and fit to all player faces.
Player hair has been designed to be used with TSSAA Anti-Aliasing (found in your options). I’m continually working on updating and improving the quality of visuals both with TSSAA and other AA solutions or no AA at all.
Now virtually all of the tech has been completed, I hope to roll out a lot more hair and facial hair styles as well as hair colour and hair dyeing in the next few updates, so the few you will have now is just the start. I also will be implementing more hair and facial hair deformations to work with all the current clothing in game where it needs it.
As there are a lot of hair and face combinations and it’s new tech, so there may be some bugs. Feel free to let us know if you find one. Everyone will have hair, so the trope of Rust being the game about bald psychopaths is now only half true.
A new addition to the progression system has made its way into the game today in the form of Workbench Experimentation.
If you use a workbench, it will pop up an Experiment UI. This will allow you to use scrap to experiment and produce a random blueprint relevant to that workbench tier. It checks what you’ve already learned, so there’s no chance for duplicates unless you don’t bother to study the blueprint that was just produced.
I really think this is what was missing from the new blueprint system, and while it feels we may have come full circle (and maybe that is a good thing), I feel like this implementation feels a lot more solid than the last one.
The only other thing I’m considering doing would be making it so everyone unlocked everything in the same order via experimentation, but I’m not sure how people would feel about that. I’m trying to give people both options of finding random stuff and taking a shortcut by researching it, or a slower, longer, but more certain progression if you keep dumping resources into the workbench.
Let me know how you guys feel about this.
I’ve removed stance recoil from the crossbow and the hunting bow. This means they’ll behave like they used to and won’t have additional inaccuracy when moving around. I’ll spend some more time next week modifying this and attempting to remove the first shot inaccuracy when standing still and tap firing.
I worked through some of the item research costs and reduced a bunch by one tier. Here’s the list:
- Oil Refinery
- Large Medkit
- Miner Hat
- Chainlink Fence/Gate
- Prison Wall/Door
- Double Sheet Metal Doors
- Floor Grill
In addition, the HV Arrow is now a default blueprint. Enjoy!
As of this patch, the nailgun nails will get embedded in objects and are also retrievable! I’ve also slightly increased the projectile ‘thickness’ of the nails, meaning you’ll land slightly more hits. To prevent ‘nail raiding’ I’ve changed the damage type for the nails to ‘arrow’ instead of ‘bullet’, so it no longer damages wooden doors. Let me know how you feel about these changes.
Our hair shading uses similar techniques to those found in games like Paragon and PUGB. There are a few reasons for it, namely rendering and shadows. Unfortunately, this means we’d be heavily reliant on temporal anti-aliasing (TSSAA in Graphics options) to get it looking decent. Introducing player hair meant we had to roll out a new temporal anti-aliasing implementation.
Our previous implementation was stable but old and visually blurry. Luckily we found a decent implementation in Unity Post Processing Stack v2, plugged it in and it just worked:
You can expect much crisper results and less blurring in motion, at roughly the same cost as SMAA. The convar has been reset (now “graphics.antialiasing”) and TSSAA is now the default option.
Made a huge breakthrough this week by eliminating one of the largest bottlenecks in our dynamic occlusion culling system, which is reponsible for hiding Players and NPCs when they’re occluded by terrain or walls. I was able to eliminate an occluder pre-pass that was necessary for the occlusion tests. A good chunk of CPU-side overhead was now cut off because of this.
Our artists no longer need to decide if an object is an occluder or occludee because all surfaces are occluders now. They also don’t need to add occluder meshes anymore, saving in production time. An interesting side effect is that even vegetation can be use to cull away invisible objects, as seen in the image below. Red spheres represent players/NPCs being culled away, while green are being processed:
These change should give us a nice FPS boost on mid-to-high range machines. Potato machines are probably bottlenecked somewhere else already and, while it surely helps, it might not result in immediate performance improvements.
The only drawback of this approach is that it introduces a single frame delay in culling results. However, there are some ways to mitigate the issue using prediction techniques and I’ll be addressing it during the next couple of weeks. I believe it’s definitely worth the tradeoff. Please note that closeby entities are not affected since they’re not culled and always marked as visible.
I’ve started working on the next iteration of our building mechanics. There’s a lot of stuff that needs to be implemented on both the front end and the back end, but our target is to get this fully done before the end of the month. Here’s what we’re going for:
- Update building ID when splitting/joining buildings
- Building privilege is emitted by building blocks instead of radius around cupboard
- Require (or potentially enforce) only one cupboard per building
- Upkeep (buildings use up resources before they start to decay)
- Explore adding half height walls for more building options
The first step was to write a new building back end that implements fast ways to query building blocks and tool cupboards for certain building IDs. Once this was done I made the building ID update when buildings are split or joined, in order to correctly enforce the distance between buildings and be able to use the building ID to determine building privilege zones. The next step will be to update the building privilege checks. so it’s emitted from the entire building instead of just a basic radius around the cupboard, and then lastly to implement the building upkeep front end. More on this next week.
This week is probably going to be the last week I work on the Navmesh Grid. Technically, it has felt really close to being complete, but stabilizing it has proven really hard, and it’s stopping progress on the NPC behaviour. Transitions over Navmesh Links should be improved this week and NPCs should find it harder to get stuck. We are looking at alternative solutions: one of the things I have done this week is evaluate options, and we have some real alternatives within grasp for next week already.
A new convar has been exposed for server owners, AiManager.pathfindingIterationsPerFrame. It balances speed versus cost of pathfinding calculations.
Thank you to everyone that let me know you liked the admire animations. Everyone was positive about it, so until anything more pressing comes along I’ll be continuing to make more of them.