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.
Stance Recoil Changes
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.
Loot Cost Changes
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.
Revamped Temporal Anti-Aliasing
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.
Revamped Occlusion Culling
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.
Launch Site Layout Changes
With the recent batch of biome work done, this week I focused on improving the layout of the rocket factory building. We've had some internal discussions about its purpose, and we decided it should become a PVP oriented area. With this in mind, I simplified the jumping puzzles, added makeshift cover to walkways, and made the interior layout of the RF building less linear. Also, I added some hanging walkways to allow crossing from one side to another, and replaced some of the elevators with staircases (which makes camping more difficult and allows easier access to different floors). In addition I added two new paths to the RF roof, one on the front and one on the back. Given these new changes, the RF roof should be much more difficult to defend, so we might roll back the recently increased radiation levels. Keep in mind that these changes won't be appearing in today's patch, but I will try to make sure they go in next week. Below are some screenshots to tide you over:
Player Model Poses
I noticed that when the player is holding certain weapons the shoulders were scrunched up. It looked quite unnatural, so I adjusted them to make them more relaxed.
I've finally started to get comfortable using Houdini FX and began producing some new sprites.
These sprites are a work in progress, and I'll continue to improve upon them the better I get at using the software.
I've been helping out with another Facepunch game for the last little bit, but jumped back over to Rust this week and finished up new sounds for the nail gun and the garage door.
- Fixed flame turret been lockable
- Stance recoil no longer affects xbow/bow
- New nail gun sounds
- EAC SDK update
- New garage door sounds
- Nailgun nails embed themselves in objects + retrievable
- Nailgun nails no longer damage structures
- Nailgun nails have larger radius (easier to hit targets)
- HV Arrow is now a default blueprint
- Oil Refinery is cheaper to research
- Searchlight is cheaper to research
- Large Medkit is cheaper to research
- Miner Hat is cheaper to research
- Chainlink fence/gate is cheaper to research
- Prison Wall/door is cheaper to research
- Double Sheet Doors are cheaper to research
- Floor Grill is cheaper to research
- Added hair