There’s been a lot of talk about the current state of gunplay in Rust, and we mostly agree with the common opinion on this: it feels random, unsatisfying and sluggish. This week I sat down with Helk and discussed what has to be changed to make things better. It all seems to boil down to this:
- Predictability
- Precision
- Feel
To me, personally, the lack of consistency is probably the biggest issue right now. Things simply feel far too random to be enjoyable. This is caused by a number of things, so let me explain what I’ve been working on this week and our reasoning behind it all. Everything in this section is still under active development, but I’m hoping to get it onto the prerelease branch either next week or the week after.
It all starts with the damage and hitbox system Rust has been using ever since the reboot. We’ve tried various variations of this but none of them seemed to work out the way we wanted, so it’s time to let go. At the moment hitboxes use the exact player model and clothing meshes as their colliders - if you hit a piece of metal you’ll do far less damage than when you hit skin or cloth. This is neat in theory, but it completely breaks down in hectic firefights since nobody intentionally aims for the tiny vulnerable spots between clothing items, essentially leading to completely random damage multipliers being chosen. I’ve replaced this with a much simpler hit area system. Clothing now specifies the body parts it protects and damage is reduced based on which body part has been hit rather than the exact visual mesh. This means projectiles never randomly bypass protective gear. It also means that gloves can add to the overall body protection instead of only protecting the hands, which makes them far more useful.
The second issue caused by using clothing meshes as colliders was that clothing affected the size and shape of player hitboxes. Things like the bucket helmet, and to some degree even the metal facemask, made the head hitbox so huge that they were essentially useless. I threw this out the window so now the body part that was hit is determined by a player collision mesh that doesn’t change with clothing. We still have the option to apply reduced damage when hitting the bigger clothing hitbox and not the player hitbox, but I won’t add it solely based on guessing. We’ll see how it all works out first.
Next I added the option to use per-weapon damage multipliers for certain body parts. This can for example be used to increase the headshot multiplier of a weapon type that’s very precise (sniper rifles) or reduce it for weapons where they occur more randomly (shotguns). We’re not entirely sure in which direction to take this yet, but it made sense to add support for it while reworking the underlying systems.
Lastly I started working on best-fit hit detection for projectile weapons - similar to what I added for melee weapons a couple of months ago. The thinking behind this is that hitting a hand that’s directly in front of a head should really count as a headshot since players cannot control their exact animation state. I still need to figure some stuff out, but this should make things feel less random and more predictable once it’s done.
Overall the changes I’ve been working on this week should help us get some much needed predictability and precision back into the gunplay of Rust. Next on the list will be weapon feel, but Helk might be better suited to tackle that.