New weapon attachments, upcoming dungeon improvements, and the first look at--eww--corpse rot.26 May 2016
More music this week. This one’s not quite as far along as most of the other ones I’ve shared so far, but I figured you guys & gals would still want to hear it. It definitely needs a bit of high-end percussion like cymbals or stick clicks, and probably a couple more variations on some of the melodies, but I like where it’s headed. Enjoy while you read the blog.
I’m starting the last stretch of art production for the industrial dungeons set. After the industrial set, there will still be the tunnel set, natural caves set, and some new dungeon ideas to greybox. This week I have gotten a good bunch of generic large props done, and the water tower.
The water tower will have a new floor at its top that wasn’t available previously. From up there, you can aim down through missing and broken panels.
I did some new weapon attachments at the request of Helk, see his section for how they integrate into gameplay.
Slow week for me as I was jetlagged from a vacation over the long weekend, I did some work on the weapon attachments system starting with having broken weapon attachments fall off weapons rather than preventing them from firing. I also started work on both the Muzzle Booster and Muzzle Brake.
The Muzzle Booster will feed some of the muzzle gasses back into the weapon forcing it to cycle faster. This means your weapons will have a higher rate of fire, at the expense of some muzzle velocity.
The Muzzle Brake will lower the recoil felt by the operator, but increase the cone fire of the weapon. This means that though you can keep your sights on the target a bit easier, the bullets won’t always land where you are aiming
I plan to merge these changes into main next week and continue with the XP system!
I wasted a couple of hours on tracking down and fixing some pretty serious entity leaks this week. There were several scenarios that could make entities that should be disabled get networked to clients, which caused huge performance drops around the center of the map. This was especially bad on servers that were up for several days on end, which is the case for most of the official ones, and could also lead to long client join times and network lag around certain parts of the world. It feels good to have this one fixed since it was the reason for a number of bigger issues that didn’t really make sense if viewed on their own.
Here’s a fun fact: Tool cupboards prevented resource spawns inside their area of influence, which only a tiny fraction of the players were even aware of, which made people wonder why entire forests seemed to disappear a couple of weeks into the wipe cycle. I felt like there was no good reason for this feature to stay around anymore since it can make entire servers look barren and lead to resources being hard to find after a while. The one advantage of this was that it made walling off resource spawns much less effective, but since this wasn’t an issue in Rust Legacy I doubt it will be an issue now - especially because there are other systems in place to make this sort of behaviour less feasible.
The tools tab in the F1 menu can now be accessed by admins as well as developers. Right now the only thing in there are some rendering toggles that can be used to make certain parts of the world invisible. This can be extremely useful to investigate hacking or exploit accusations, so make sure to check them out if you’re running a server.
This one was probably the most notorious of the hacks that are currently out there. I talked about projectile line of sight tracking last week and this week I utilized that data to implement a first version of a server side projectile line of sight verification system. It’s a rough first draft, but it should make this hack considerably less powerful.
"Why don't you just make them like bows?" - everybody.
I hear ya. There were a few reasons for this, with the main one being coder time. The melee code is also very different to the bow: you can’t throw the bow, you can’t melee, plus melee weapons are not treated like guns and don't have ammo.
That said, it's clear we need to make it work this way. It feels the most natural. So I tackled the code this week, got about halfway there then hit a wall. We've not had a weapon that has two attacks (melee/throw) so they were conflicting. Andre was kind enough to help out and wrote some lovely code to take care of this.
So it's now setup like the bow. Holding right-mouse aims (releasing cancels aiming). Tap left mouse whilst aiming to throw the weapon. There’s a bit of zoom, too. Hopefully this will make throwable weapons more fun, and also solve two of the main problems at the moment: accidental throws and aiming accuracy.
The bad new: this needs to be added to all throwables, so you can’t play with this system just yet.
I finished off the first pass at world item physics sounds this week and they’re merged and ready to rock now. Hooray!
At the moment these are triggered by the server and sent to clients because world items physics simulation happens on the server, so the implementation for this isn’t perfect yet. Sounds might not trigger at exactly the right time. The end goal is, of course, to have this all handled client side, so I’m going to experiment with that a bit next week.
I had some chicken breasts in the fridge that expired before I got around to cooking them, so I threw those around a bit for the physics & item UI sounds this week, and cut them up a bunch after I was done with that to make new meat cutting sounds.
I’ve taken some sounds that I recorded while working on the physics sounds and used them to build more item UI sounds. I’ve recorded some more sounds specifically for this too.
Paper items sound like paper now, there’s more types of metal sounds, meat sounds a bit better, etc. There’s a few types of items that still need their own sounds (thin multi-piece metal for the road sign armor, computery plastic for cameras & targeting computers) but we’re pretty close to having all the bases covered well now.
When Scott introduced the flies buzzing around corpses a while back we discussed the concept of visibly rotting bodies, as well as vultures circling sites where large raids or battles had taken place.
Being able to visually determine the age of a corpse adds another layer of situational awareness. While fresh bodies might only indicate a recent airdrop, the tower surrounded by rotting corpses and circling vultures might not be the best place for a naked to start building their first base.
This small feature was long overdue. It really makes shallow water pop and improves the overall coastal aesthetics:
I started work on Paul’s awesome concept (above) of the floating ration box. Here’s where I’m at so far. Take a spin!
I’ll be modelling the ration packs as individual items, so they’ll have their own world model too. You’ll see these bobbing up and down in the water when it’s finished and implemented. Keep an eye out on the water, or you'll miss out on mashed potato!
This week I finally got back to work on the large scale occlusion. As mentioned earlier, it will allow us to add some depth to caves/underground, building interiors and forests, to name a few, while helping us attenuate unwanted reflections in those areas.
Here's a sample two-frame gif showing before and after, this time running on one of our maps:
Also, for reference, the actual occlusion generated for this shot:
This feature is now stable enough to be enabled as default. As a reminder, what this does is prevent flickering between distant 3d surfaces that are nearly co-planar (e.g. coast water terrain connection), avoid aggressive flickering when using very wide screen resolutions and prevent see through the inside of bases in both zooming and wide-screens.
If you encounter any issues feel free to turn it off using "graphics.revz 0", in order to continue playing, but please take some time to let us know about the issue via the usual channels.
I added third-person animations for several of the weapons:
- Bolt-Action rifle
- Semi-Auto rifle
- Pump Shotgun
- Rocket Launcher
I also added some little touches, such as shell ejections and mags being dropped when the player reloads.
I worked on a double-barreled shotgun because, really, every game should have one. Here's four ideas I like the direction of, where I'm trying to work out different grips and barrel lengths. I kinda like the idea of a more stubby, sawn-off length of barrel, maybe giving less range but making it kick ass at close quarters. I also think this weapon has a nice opportunity for a really cool firing and reloading animation. I've got a firing mechanism in mind that involves a sliding mechanism that pulls back and locks, so when you fire it shoots forward. Next I'm gonna take into 3D and work out firing mechanism and design from first person view.
Added physics sounds for in world items
Added more inventory item pickup/drop sounds
Added projectile line of sight protection
Added additional entity info when projectiles are ignored by the server
Added player stall time to projectile desync server messages
Added projectile_desync server convar (max allowed client desync)
Added new F1 tools tab for admins (toggle object visibility)
Added water caustics
Fixed performance issues caused by an entity leak at the center of the map
Fixed certain anti hack values not resetting on player disconnect
Fixed water catchers not taking any damage from explosions
Fixed water catchers taking very low damage from melee weapons
Fixed water catchers not using the load balanced LOD system
Fixed players and projectiles colliding with certain farmed plants
Fixed alt + enter crash
Fixed revz broken censor boxes
Fixed revz water splashes and other refractions
Fixed revz underwater thickness
Fixed revz d3d9 issues; flickering sky, holosight, blinds artifacts
New fish/meat cutting sounds
Resources can now also spawn inside the tool cupboard radius
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.