Devblog 178
Chairs, vehicle tests, and more.

21 September 2017

Video Update
Chairs

Well that got a little out of control... after having to pull them from last week's update I've managed to sort out all the kinks and exploits sorted, and you can now sit and look around in chairs. Sitting in a chair will provide 100% comfort. It also looks pretty cool with a group of people sitting around a table #roleplay!

Honestly, I wasn't meant to put this much work into them, but I just got on a roll and all the pieces kept falling into place. It may seem like adding a chair is a ridiculous thing to work on, but this is all based on the foundation of a mountable object, and this foundation is now very near complete, so complete infact that I was pretty easily able to add...

Vehicle Test

Let me start off by saying:

  1. It is not available in vanilla Rust.
  2. I don't know when it will be.
  3. When we do add it, it'll be balanced.

I could not resist the juicy, ripe, low-hanging fruit that presented itself after finishing the chairs. With all the pieces just falling together I had to see how feasible it would be to create a vehicle, so I tried first with the chair...

Once everything was working in that test, I moved on to implementing it on a vehicle. If we do decide to go ahead and implement it in-game, I'm thinking it'll work like this:

You'll find a broken down car at a radtown, but it will be missing many components to get it running again, including perhaps some kind of engine part component that has a server limited finite population. That is, say, 15 are active in-game at any given time.

Driving the vehicle will use a lot of fuel, perhaps not even low grade fuel. It'll have a lot of storage, and multiple players can mount it. I'll make sure the driver cannot use all weapons while driving. Either nothing, or maybe just pistols.

As the vehicle drives, it will constantly be calculating a 'break' probability based on distance traveled. When the vehicle breaks, its max speed will slow and you will need to repair it with some components. The more you force it to drive, the more broken it gets, and it'll require more and more to keep going so constant maintenence would be best. Driving off a designated road will drastically increase the breaking chance, this way people will need to stick to roads unless they drive at a crawl.

How does that sound? This would just be for getting this test vehicle in-game. Keep in mind we have plans for vehicle in 2018...

I'm probably not going to put much more work into vehicles unless the demand is off the charts. There's still loads to do on the roadmap for December! Let me know!

Roadmap Updates

I've shuffled the roadmap around a bit. I've increased the granularity of each task so we can cross them out piece-by-piece, instead of it being binary. This way you'll get to see the progress being made instead of all of a sudden having four things marked as done every month. As you can see, we've made progress on many different things but haven't completed them. I'm going to strive towards knocking them out, as we need to get atleast three complete per month to stay on target.

Helicopter/Sentry Fixes

While recording a demo I noticed that at low timescales the autoturret and the helicopter would keep shooting at the same fire rate. I also noticed if the server hiccuped they would fire a bunch of shots like a shotgun. This is now fixed.

Map Exploit Fix

An exploit involving the map entity causing servers to experience low framerates was fixed. Server owners rejoice!

Snow Biome Improvements

With the first ice lake complete, I'm now working on revamping the icebergs and expanding the playable area into the ocean. There's not much to show this week yet, but you will find a sneak peek below. Overall, the new icebergs will be much more angular, with some of them having large flat areas on top that will allow for building. In addition, the ocean around the icebergs will be covered with large, floating ice sheets allowing you to reach the icebergs on foot.

Player Models

After being able to see your new player models on Staging last week, some of you were quite vocal about how you felt about your new face. Not everyone's going to look like a supermodel, and that's by design. I think people in Rust should look like a sample of normal people, how you look is a genetic lottery and no different to your gender or ethnicity.

Having said that, there's clearly a difference between being unattractive and straight up looking deformed. We had some discussions about what we felt was wrong, rating each face under identical lighting conditions. The Asian heads definitely came out the worst, which wasn't all that suprising considering they were sharing the same materials as the Caucasian heads.

First step to de-ugly them was to bake out their own set of textures and give them a dedicated material. I'd hoped that Caucasian and Asian faces would have shared enough features for sharing to not be an issue, but this clearly wasn't the case. I've also introduced a little ambient lighting to the diffuse (this is normally a sin in game art, but for such an open and procedural world like Rust, ambient lighting is always going to be an issue). I've reworked the facial shapes a little, but for the most part the geometry has only undergone small changes.

The rest of the heads will be getting some attention, although probably not to the extent of the Asian set. I'll be targeting the worst offenders in our rankings in an effort to make them more realistic. There'll always be issues beyond our control that may make you look different to how we intended: fov, lighting, quality settings (like contact shadows), etc. But hopefully these changes improve the lives of those unlucky to roll one of the uglier faces

Check out the currently updated ones below as well as the comparison video.

AI

This week I looked into improving NPC navigation and steering. Since the Navigation Mesh generation sometimes lag behind in a particular area of the map, such that the NPCs there have no Navigation Mesh yet, I looked at ways to allow NPCs to move temporarily without the guidance of a Navigation Mesh. Accidentally, the methods used for such navigation behaviours are also applicable to concepts such as flocking/group-movement, following a leader, and pursuit or evasion with path prediction (cutting off a path in pursuit of a target, for instance). There will be separation rules keeping NPCs from occupying the same space, and in general these techniques will allow NPCs to move with multiple purposes in mind at the same time. These new features are not quite ready yet for release.

NPCs should freeze less when transitioning between Navmesh Grid patches.

EAC Launcher 2.0

Since there's been some incompatibility complaints that prevented a small number of people from playing the game, EAC has asked us to switch the launcher--that initializes EAC and starts the Rust game process--to their new super minimal one. This will make it easier for EAC to debug future problems and take some work to maintain the launcher off our hands. If you were one of the people who encountered .NET framework errors before you should now be able to launch the game without any problems.

Memory Usage Reduction

I went over the managed memory usage of the game to find out why it has increased by at least 100MB over the last couple of months. I found that the world serialization cache was not freed completely after spawning the world. Doing so should now bring the managed memory usage back down to previous levels. Note that this does not affect asset memory usage, which accounts for the majority of overall memory usage. The best way to reduce this is to reduce the texture quality in the game options.

Entity Parenting Overhaul

This one has been on my list for over a year now. I've always postponed it since it's a really dangerous change and it doesn't really provide any visible improvements, but the way we were handling entity parenting was a massive clusterfuck and both elevators and future mountable entities will profit immensely from untangling this. It will also allow me to optimize the bone follower code next which is causing quite a few garbage collections at the moment. So this week I decided that it was time. If everything works as intended you won't see any difference at all. If it doesn't work as intended you'll see arrows, throwable weapons, code locks and weapon attachments go crazy.

World Serialization Fix

Ever since we've upgraded to Unity 2017.1 some people have experienced the problem that their world file was invalidated every time they connected to a server. This meant they had to go through the slow and tedious process of generating the map on every server connect. I've tracked down the problem and could thankfully fix it in a non-wiping update. Sorry for the insane loading times you guys had to suffer through.

Player Hair

I've been working recently on getting player hair to work with the new player models, as well as trying to future-proof the system by enabling the hair models to work with possible features like facial expressions. A few of us have been experimenting with getting the facial hair to morph to all the different head shapes, and looking good whilst it does it, which is the last major hurdle to getting facial hair in game.

Here's a head hair style and a facial hair style working correctly on one of the face types. I've taken a little video of one of the facial hair styles morphing to fit the other male face types. Each frame of the animation is a different face shape, so the next step is to get it to apply the correct frame of this animation to the correct face.

Next step for me is to get the first female hair style carried over to the new face shapes, as well as body hair and experiment with eyebrow hair which should be a quick one to do.

There's still quite a lot to work out, especially monitoring the performance around this facial morph system. It might well be we need to try another system so I'll keep you posted. I also need to do an art pass once they're in and working to get them looking as good as I can. However, once these issues are resolved the first couple of styles should make their way in game, with more to follow.

Grass Casting Shadows

I started this week by correcting a shadow casting bug causing the weapon flashlight attachment. From there, I took the opportunity to add shadow casting to our grass batches. This new feature is exposed as a toggle on the graphics menu (off by default).

It makes a huge difference and it's not demanding perf-wise. However, it can look quite jittery in low quality modes like Potato, so feel free to enable them if you have mid-to-high end machine and enjoy the view!

Penumbra Shadows

This is something I always wanted to integrate in Rust. Not only because it looks amazing but also may improve the gaming experience by making it more pleasing and realistic.

Penumbra shadows are what we call the approximation technique we use to get shadows appear softer as they are further away from the occluders. This is a really old technique that's finally becoming popular due to advances in graphics hardware.

The feature is not excessive in regards to performance and should run reasonably well from NVIDIA GTX 970 or AMD R9 380 and above. You can enable it via Graphics menu by turning Shadow Quality to 2 (highest). Once enabled, it works for all types of lights, including torches, flashlights and even sun/moon shadows.

This new feature, along with Damian's changes to the grass will turn night time into a smoother experience:

Your interiors are about to get a facelift!

Viewmodel Organisation

Our viewmodels were in a bit of a state, with some still using a legacy rig and others using a newer one. It all still worked, but we want the arm viewmodels to be clothed, and that requires all the viewmodels to be using the same rig, so I needed to sort it out. We have 53 viewmodels, each with numerous separate animation files. Each needed individually updating. Exporting them with updated rigs broke Unity's prefabs. Long story short, I've basically rebuilt the majority from scratch, taking into account a lot of coding work that's already been implemented to make the guns work/aim/etc.

This took months.

All being well this will be merged to main first thing next week, though you might not notice much. You will get a bit of eye candy with the merge though, as it will also contain Taylor's new arm model along with material updates.

Player Animation Tweaks

This week I continued to go over the various third-person player animations, polishing up any that looked poor (most notably the melee animations).

178 September 21 2017
  • new

    Test Vehicle (admin only) added

  • new

    Added new EAC launcher

  • new

    Chairs are mountable and provide 100% comfort

  • new

    Added grass shadow casting feature

  • new

    Added shadow quality option with new penumbra shadows feature

  • updated

    Made grass meshes size more realistic

  • updated

    Updated EAC SDK

  • updated

    Reduced managed memory usage

  • updated

    Overhauled entity parenting

  • updated

    Improved server side eye verification (less false positives)

  • fixed

    Fixed Sentry/Helicopter shooting like a shotgun with low fps

  • fixed

    Fixed world serialization checksum problems (loading times)

  • fixed

    Fixed map exploit

  • fixed

    Fixed flashlight attachment shadows all over the place bug

Mailing List

If you want to follow this project you can sign up to the mailing list.

We'll only update you about this project, we won't spam you about other stuff or sell your email address.