09 April 2015, 3PM
I've been spending a good wedge of my time looking at performance, figuring out why the game sometimes runs like shit. I think we've made some advancements here and hopefully everyone should see improved framerates.
Andre and Petur have done a lot of good making the trees more performant, but we still have big performance issues with them. This is particularly noticeable when in a forest, under the canopy.
Previous versions of Unity had a setting called "Max Mesh Trees". This limited the maximum amount of trees that were rendered properly, and the rest were rendered as billboards. This has huge performance benefits for everyone, and it allows us to scale much better. Unfortunately Unity 5 doesn't implement this (even though the setting is still there).
Unity Premium Support has suggested that it isn't really considered a bug, and there's currently no plans to re-implement it. They've suggested the best way to get it fixed would be to add our support to this report from December 2013.
We've added a slider in the tweaks menu that turns the shader level down. This reduces the shader complexity, so if your graphics card is weaker it will use a simpler version of the shader. Turning this value down should improve framerates massively on lower spec computers.
Remember when everyone was like "hey let us turn the grass off" and were like "why" and they were like "because it lags us out" and we were like "no it doesn't" and they were like "grrr" and we were like "there will never be an option to turn grass off". Well now we are like "lol, here's an option to turn the grass off".
Check this out: grass renders slow on shit computers, so we're testing stuff. There's a slider here that lets you turn grass detail down and off. This is temporary - we're testing how much difference this makes.
The likely outcome is that people will be able to turn grass detail down but not off, and when the detail is on its lowest it will probably obscure the ground even more than the grass does on higher detail - so it won't ever be an advantage to turn it down. We understand the fear here; don't worry, it's temporary, we're figuring shit out.
Full screen mode in Windows is now exclusive mode again. We understand this has performance benefits for some configs.
I wanted to slip the guitar in as a quick secret and have people randomly discover it after we released the patch. But that didn't work. So what the hell is this guitar doing in Rust? Well a few days ago I noticed that our spear holding pose.
It got me thinking: 'I bet that could fit a guitar, too'. So I downloaded a guitar from the asset store and it did.
That's literally all there is to it. About 30 minutes downloading sounds and hooking it up and it's in game and playable. You can play different notes by changing your screen pitch and pressing left or right mouse button. We should probably have more 'useless' items like this. Craig spent too long making stuff like this with it.
While I was adding the guitar I added the camera, too. It was mainly a development tool, so we can take nice depth of field screenshots for the blog, but I restricted the amount of zoom on it and made it spawnable in game.
Left click takes a screenshot (via Steam), holding the right mouse button zooms in and out, holding the middle mouse button focus locks (otherwise it focuses on the centre of the screen).
When you drop an item it can have a unique model. We have only set up a few items to do this so far, and a few of them are using placeholder models, but it's all set up and ready to go.
I implemented Vince's awesome barricade models. They should be working the same as in Legacy. We have three different types at the moment, and the ones with barbed-wire slow the player down more.
- Fixed being able to loot players from a long distance (and when alive).
- Fixed network toggle exploits.
- Fixed instances where exceptions weren't being reported properly.
- Tweaked animal speeds.
- Fixed decals sticking around forever.
- Added admin teleport <name|steamid|nothing> (players only).
- Added admin teleportany <name|steamid|entityname|nothing> (any entity).
- Fixed chicken ragdoll using wolf colliders.
- Limited where signs can be placed (to prevent lemming bridges).
- Can place signs rotated.
- Fixed sleeping bag placement exploits.
- Fixed vitals sometimes not showing.
- Fixed items ejected from furnace/campfire/storagebox falling through the world.
- Fixed bleeding notification not showing.
- Fixed queued damage effects sometimes showing after respawn.
- Fixed decals on OSX rendering pink.
Aside from some improvements to some of the existing player animations (various crouchwalks/runs/etc.), I added an animation for the player to sit by the campfire in a natural pose.
I’ve been continuing work on the in place turning animations for each of the hold types.
I also added some leaning left/right when the player sprints and rotates his body quickly. It gives the sprints a more natural looking movement. This is what it looked like before
I've been working on more stuff to wear. After concepting some burlap hoods one of the things, Helk wanted to see was some animal pelt headgears, so I’ve been working on those. I also started with a badass wolf head hood. These should be really cool for those of you who want a more tribal savage look to their characters.
Aside from work I’m doing to make sure all the existing clothes look good, I’m also working on integrating some new techniques into my clothing-making tool-kit so that future clothes also look nice. Here I’m using the burlap head wraps that Paul designed as a testbed for new ways of making rough cloth items. Doing very high detail worn cloth like this will let me extract a lot of texture information that I’ll be able to use with all kinds of different items, including some updates to the existing burlap clothing set.
We came into an issue with the legs and their UVs. I fixed that, but in the process I came across a seam. These things like to manifest quite sporadically, and it boggled my mind for a bit, but I finally worked it out. It just seems like the vertex normals position changes upon export from Maya. Sometimes it works, sometimes it doesn’t. Either way, I know the fix so if they crop up again, I can shoot them down, which is great!
I carried working on the skull, finishing the LODs. I’ve also been working on the whale, getting it all decayed and all that gruesome jazz.
More detail inbound! And I’ll also continue working on new heads, too.
I spent most of the week making my dogs and neighbours think I’m insane while recording and processing new sounds for the bear. Here’s a little Instagram video to give you an idea.
I’ve also started working on wounded player sounds and on impact sounds for individual objects (so we can make smaller trees sound different and make barrels actually sound like barrels, etc).
I’ve been mostly fixing shader bugs since the end of last week. Some were remnants of that last big terrain merge.
One issue I’m currently fixing kept flying under the radar - ”Texture tearing near waters edge“ rust-issue #29 - really screwed the water visuals for some ATI/AMD GPU owners.
The solution I ended up with to solve it should open the door for cheap waves in the future, and other per-pixel displacement effects.
I’m also looking into PVT crashes this week, and possibly shoreline effects like wetness and foam.
I am currently working on our barricades. So far we've followed the concept art that Paul has made for them. So there might be 6 in total, of which 3 are offensive and will cause damage to the player upon impact, the other three will be defensive barricades, good to stand behind covered in case of gunfights. The last of the lot, made out of stones can be stacked to make a quick defensive wall, but we probably won’t let you build on top of it.
Something people have been doing recently is equipping a bunch of consumables, and spam eating/using them in the middle of combat. This was really bad considering the large medkit healed 100 points and could make firefights last several minutes! I went back to my solution from good ‘ole Legacy and made it so consumables add their health to the player over time (about 2 per second), and if you take any damage you lose all the health that is coming to you. Don’t worry: the syringe still gives you the health instantly!
The bandage item is no longer an instant consumable, but a held item instead, this means you need to equip it to use it rather than just spam a number key mid combat. In addition you can bandage other people by using Right Click. Oh, and as a bonus the syringe now uses the same code and you can heal other people with right click as well. Bring on the medics!
I went on a sprint and implemented the hand grenade as we had the art laying around. It’ll probably need to be balanced in terms of weight and damage. Megan swiftly rocked an icon for it.
I noticed radiation was way out of whack recently. You’d immediately have full rads with no hope of survival when entering a radtown. I’ve modified this in a few ways to make a little more sense. First of all, radiation poisoning is 1:1 for how much damage you’re going to take. This means if you have 80 radiation poisoning, you are going to take 80 damage by the time it runs its course. Also, the higher your Rad level, the faster the rads will metabolise, resulting in taking damage quicker. I’ve also increased the number of Rads you can accumulate up to 500. I guess by eating enough food and running around in enough water you might survive, but I doubt it. Lastly, I’ve made all the clothing provide some minor radiation protection, this means if you’re somewhat geared up, you’ll have a better chance of survival vs a naked newspawn!
- Your player will no longer uncrouch if there isn’t any head clearance.
- Assault Rifle was nerfed - Less Rate of fire, more recoil.
- All weapons had their ADS fov reduced, except for the bolt action which was increased.
- Tracers were made thicker to correspond to the new texture they use.
- Bandages are cheaper.
- Metal Helmets (coffee, bucket, facemask ) protect less against bullet damage.
- Metal Facemask & Body Plate cost much more.
- Firearms are more expensive and have a wider cost gap between them.
- Armored building parts cost waaay more & Stone building parts cost a bit more, making sheet metal more viable.
After tackling performance with Garry over the weekend I started the new week off with a couple of fixes for the new procedural generation.
- Disabled PVT by default as some people were having issues with it and it only improves performance for some people.
- The setting is still saved, you just have to manually enable it in case it improves performance for your specific hardware.
- Rocks now use less memory by properly cleaning up their child objects.
- Added LOD multiplier to grass system. (Used by the grass quality slider.)
- Mountains are no longer placed partially outside of the world and better blend with the terrain.
- Monuments now use a similar terrain blending system as mountains, which will allow artists more control over the surrounding terrain in future radtowns.
- The poles next to roads now switch side if one side of the road is blocked.
- Bridge placement and road network generation got another set of improvements.
- The terrain resolution is now 1 vertex per world unit, which will be the resolution of the upcoming custom map.
- Fixed some grass placement weirdness on certain terrain blended rocks.
- Ores spawn in smaller clusters again for a more even distribution.
- Reduced the number of overhang rocks that are placed on beaches.
I also turned the metal building and hangar monuments into radtowns that have loot. As with all other radtowns, both the layout and most assets are placeholders, but at least now you’ll no longer find yourself walking down an endless road just to end up at a shitty tiny building that doesn’t do anything.
Terrain RAW Files
To help with debugging issues in future versions of the procedural map I added some data export functionality which might be interesting for the community as well. You can export certain terrain data as RAW files using the data.export (heightmap | splatmap | biomemap | topologymap | alphamap) console command. The RAW file is binary and resembles the internal data layout of the terrain backing stores the way they are preferred by Unity. Photoshop is capable of displaying all of the exports in a somewhat correct way, so with some experimentation it should be possible for you to make sense of the data blobs. It might make things easier for community-made map generators as I’m planning to continue supporting the exports with upcoming updates. If you want to use the data for a Rust community project and have any questions feel free to harass me on Twitter.
I’d also like to announce that the last known issues with the world checksum calculation have been fixed. We’ll enable checksum verification on server join by default over the next couple of weeks, meaning that unless the server owner disables it people with an incorrect world checksum will be kicked. If you’re still seeing a checksum mismatch message in the console when connecting to a server after this week’s update, make sure to report the issue together with your OS version and as much hardware details as possible
What a fucking awesome week. The three major food groups, bug fixes, optimizations and features. We really pushed the game forward these last two weeks. Developing it is getting really fun again, and we hope you guys are finding the gameplay fun again too.
Next week I have a couple of quite big features I want to play with. One of them is something people have been asking about for a long time. Decay. We're going to be trying something a bit different to how it worked in Legacy though.
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.