Weapon balancing, combat logging, and tweaks to raiding, plus a look at graphics improvements, new explosives, better shop-fronts, and more.
Garry Newman Diogo Teixeira
Last week we accidentally introduced some graphical glitches – e.g. screwed up rock/cliff texturing and female skin issues, among others. We ended up wasting far too much time trying to track this to end up at our automatic build system for continuous integration. Seems like when we tried to abuse Unity to make our builds faster, something broke in asset building.
Initially, we suspected the issues were related to the latest shader optimizations and we all know sometimes platforms behave differently, so we spent some time excluding potential sources before moving on to other areas.
Issues will be fixed before the end of the week via client patch. We’re currently in the process of fixing the server builder in order to prevent situations like this in the future. Thank you for your patience.
Graphics Performance – Part 2
This week I kept optimizing and was able to shave another ~1.5 millisecond from our renderer – measured on a GTX 960 – and well on the way to reach the performance target set last week for this GPU. At this point it seems like there’s still a lot of room for improvement and I might just be getting started.
Here’s the improvement list for this week:
- Optimized tonemapper
- Optimized bloom; around 30% faster
- Tweaked ambient occlusion for performance
- Optimized deferred reflections
- Optimized reflection-related core shader code
Again, please note that, in areas where the CPU is the bottleneck, you may not see any improvements.
It’s no secret that weapon damage needs a fair amount of balancing, but it became clear to me that we cannot do that based on vague recollections of what might have happened in an armed encounter. We need hard data to look at, right there in the game, as soon as the encounter is over. The good news is that now can now do that, and it’s called the ‘combat log’.
Here’s how it works: by default servers keep the last 100 damage events for every player, no matter if they’re connected or sleeping. Server owners can adjust the length of their server history using the
combatlogsize convar. Clients can access their combat log with the
combatlog console command, which prints their last 30 entries. This command also takes the number of entries to return as an optional argument, so you can do
combatlog 100 to get all 100.
The log contains the attacker, target, weapon, body part, distance and health information for every event. If you die after an armed encounter you can access your combat log on respawn, go over it, and post it to reddit calling us incompetent cunts that need to balance their fucking game.
I did some light weapon balancing this week, starting with a reduction of the damage falloff over distance for all weapons. It makes sense that you need another bullet when your target is far away, but for some weapons the existing falloff led to distance damage that was far too low.
Next I increased the effective range, projectile velocity and damage of the semi-auto rifle. This is a cautious buff because I didn’t want to overcompensate, especially since we can now be much more targeted with our changes using the combat log. We’ll see how it works out and go from there.
Lastly I changed the damage types of various throwables that were dealing bullet damage. Especially spears could be used as very effective raiding tools by spam-throwing them. This is now fixed. I also made throwables lose condition on impact in the same manner they lose condition on melee attacks.
Last week’s changes removed arrow damage from all building tiers. While I still think this is the right decision for higher building tiers, it turned out to be fairly annoying for the twig one. So with this update twig is taking damage from arrows again.
Removing the soft side from doors, making C4 a late game item and nerfing arrow and throwable damage against buildings – raiding in Rust certainly took a beating over the last couple of months. We always said that this was for the greater good and that we will add better and more balanced ways to raid in the future, but so far we failed to deliver. As I said last week, Beancan Grenades are the natural choice for early game raiding, and while we’re working on other, more advanced options, I came to the conclusion that we need to include something in this update, so I did just that. You can now drop grenades on the ground with the right mouse button. If you’re looking at a construction while doing this, the grenade attaches to that construction and deals damage specifically to the entity it was attached to. In addition to that all grenades now stack to five to make them more enjoyable to use.
So let’s address the thought that’s on everyone’s mind right now.
They only attach to constructions.
There’s a few improvements that will come to procgen soon, including the previously made power line stations. I made a new bus-stop model to replace the temporary one and tried to keep it on the building blocks grid to make it easy to build around since some of you love to do this.
After that I worked on textures and meshes that we can soon apply to new roads and railroad. This is just the art here, these roads are not yet on procgen as we first need to evolve the tech to deform and place them.
New Shop Front
Some of you may have noticed that I worked on a new shop front block. Although I cannot share the final details, it will work as a better alternative to the previous one at establishing commerce/barter between players. It features a small drawer that can be used to initiate a trade. The opening is bulletproof to ensure the shop owner safety. More details in the coming weeks.
Grenade ViewModel Updates
This week I looked at the grenade viewmodel. Changes include:
- A quicker no nonsense deploy
- Smoother hold loop & change of pose
- A pull pin anim that actually pulls the pin out
- A readable throw
And here’s after
Andre’s updates regarding dropping/attaching have only just hit, so I’ll be looking to add animations for these soon.
We’re making new C4! Kinda… It won’t be as powerful as regular C4 because its explosive is bean cans instead of the military grade stuff. The more you eat the more you toot, so you guys who can’t afford C4 will have to stock up on a load.
I was going to use the small stash that Xavier made a while ago, using this concept. Buuut Xavier didn’t leave us the source files for the zbrush high-poly model, and I really didn’t want to hack away at the in-game model, so I’ve just recreated it myself using what we already had as a basemesh which worked great! I’ve got the low-poly sorted and I’ll be baking out textures today.
I completed the first-person animations and sounds/special FX for the new shotgun. Tom Butters hasn’t set up the materials for it yet, so it still needs textures.
I played with music turned on for a good bit last week and didn’t run into any bugs, so I’ve turned it on by default this week. I’ve made a few tweaks this week too. I reduced the time gap between songs (music.minSongGap and music.maxSongGap in the console will change that if you want). I made sure we don’t run any of the music stuff in the background when you’ve got the volume turned all the way down, and I made intensity drop a bit more quickly when the excitement around you dies down.
I’m also testing out having intensity increases start music if none is playing. I’m not 100% sure I’ll keep this in yet, but I got a few comments from people wondering why music wasn’t starting when they were getting in fights so I want to see how this plays.
I reduced the default music volume too, but I’m not sure if that convar tweak is going to automatically apply if you’ve already changed any of your volume settings, so you may end up needing to pull that music volume slider down yourself.
I’ve been experimenting with some other song ideas this week and I’ll hopefully have a preview of one of them ready for you guys next week. I tend to gravitate towards writing darker, moodier music so I’m trying to get some good hitting rocks in a sunny field vibes going now, and it’s been interesting trying to keep the mysterious feel that Rust has to me in there.
I’ve also got some more things that I’d like to hook intensity changes up to next week. Being near a bear or wolf should make the music more tense, hearing gunshots in the distance should make the music more tense, and I’d like to test out doing a little increase when you aim down your sights.
Environment Graphics Update
Made pretty good progress. Three out of four biomes now have full spawns, which only leaves the arid desert, and a little extra groundwork for procmap terrain. It should only be a few days until we push it on to pre-release.
Vm grenade anim updates Fixed TSSAA related dark screen bug on OSX/GL Improved graphics performance again Added server side combat log (access with combatlog console command) Reduced max projectile damage falloff over distance Increased projectile damage falloff distance Increased effective distance, projectile velocity and damage of semi auto rifle Spears use arrow damage type when thrown Removed bullet damage type from all throwables Throwables now use their own damage multipliers Twig building tier takes damage from arrows again Thrown items lose condition on impact and break when their condition reaches zero Thrown items no longer randomly break and disappear Grenades stack to 5 Grenades can be dropped with right click When looking at constructions, right click attaches grenades to them Grenades don’t do splash damage to constructions when attached Fixed projectiles very rarely breaking / sticking with break / stick probability of zero Improved skinned mesh collider performance Fixed being able to build bridges with picture frames Benchmark scenes force deterministic RNG results