Rust Marque Logo

Devblog 53

We added signs.

26 March 2015
Devblog

Signs

We now have signs. They're crafted like any other item, and placed like any other item. They observe the rules of tool cupboards, so if it's within the radius of your cupboard then only those authorised will be able to change the text. But you can also lock the text, so no-one will be able to edit it (not even you). They come in multiple sizes, some of which are default craftable and some that will require you to find a blueprint. They're all wood and currently have a messy hand-written font, but in the future we envision different types of signs with nicer fonts. There was a lot of non-trivial under the hood coding to get signs working. We wanted to place them using the same rules system that we have set up for placing building blocks, because it allows us more control over where/how the player can place stuff, and it seems stupid to have two item placement systems. This led to us making the building placement system generic so it could be used with any entity. Because of this, you might notice some bugs/issues/changes to building in general. Here's what the players have done with signs on the Dev servers.

Physics Limitations

I spoke to Unity about the physics problems we're seeing, where the physics system stops working after a large number of colliders. They spoke to nvidia and it turns out there's an undocumented limitation of 262k colliders in PhysX 3.3. This is apparently fixed in PhysX 3.4, but Unity has no plans to make that upgrade. We're experiencing this problem at around 160k colliders though, so I've asked Unity whether colliders could be leaking somehow (a 100k collider difference). Either way, this seems like it's going to be an issue for the foreseeable future, so I'm going to start taking hopefully non-hacky steps next week to detect and/or prevent it.

Death Routine

Dying always sucks, but the way the death screen popped up and you had no idea what happened made it suck extra hard. So two things changed. People now get wounded, which means they get knocked to the ground, unable to do anything other than look around and shout. While they're knocked down, other players can loot them, or they can help them up. After a number of seconds, if not helped and not killed, the player will die (although there's a small chance they might recover and be able to get up). If you're shot in the head you'll die instantly, but you'll probably still have a better idea of what killed you because for a few seconds you'll continue to see through your ragdoll corpse eyes, just like in Legacy. And guess what, ragdolls aren't jerky as shit anymore! Thanks to Anthony Yakovlev at Unity for letting us know what we were doing wrong!

Performance Improvements

We've started taking some more drastic steps to improve performance, which is a bit of a joke right now. These things might be a bit much, and might make the game look weird in certain situations, but we're aiming to overkill and then scale back to acceptable appearance. We've tweaked the way skinned colliders work. Previously they were being rebuilt every frame, even if nothing had changed. This is obviously wasteful - so they only get rebuilt when they need to be now. You'll see decent performance improvements when shooting at players/animals. The LODs we added to building blocks last week worked quite well, but they didn't improve performance by a massive amount, so we turned shadows off on distant LODs. This gives a real big performance boost when there's lots of them. The conditional models system has been re-written to only work on models within a certain radius of the player. They're also much more dynamic than they were. Previously it spawned every model in and hid the ones that we didn't want to see, but now it only spawns in the models that we do want to see. Layer culling has been added. This is a feature built into Unity that lets us cull different layers at different distances. For example, we can make it only draw deployables like campfires and cupboards within a range of 100 meters, and draw things like big environmental rocks at 1000 meters. This is the same stuff that LOD culling does, but it's way way cheaper because it's based on distance from the camera instead of the size of the object on the camera.

ISO Noise

The gamma stuff we did a while ago worked really well at preventing the gamma hacks we were seeing people use a lot, but it darkened the image slightly more than we liked, so we added ISO noise. It's a noise filter that gets louder the darker it gets. It serves the same purpose as the gamma stuff we did, but it looks cooler. It's the kind of thing you need to see in game to appreciate so we're not posting any screenshots here.

The Rest

  • Disabled FPS graph (because it hurt fps).
  • FPS display is now more accurate (but why aren't you using the FPS counter in the steam overlay?).
  • Fixed server sometimes showing wrong IP address for client.
  • Fixed corpses sometimes being unlootable.
  • Fixed chat opening when renaming sleeping bag.
  • Tweaked tooltip/crosshair/health hud.
  • Tweaked placement guide colours.
For a long time the weapon strike sounds and the sound from the object being hit (wood breaking, flesh rending, etc) were out of sync. This is because the sound from the weapon itself was triggered by the weapon animations and the sound from the hit object was sent over the network from the damage system. I’ve finally fixed this so we’ll always hear both sounds play in sync now. To go along with this, I’ve done a first pass at all of the generic impact sounds as well (including gunshots). I also added reverb tails to all of the gunshot sounds. I kept these dry initially with the hope that we’d be able to use Unity’s reverb to dynamically add tails, but the sound quality and flexibility of the built-in reverb wasn’t quite where it needed to be for that to work well. I made some smaller tweaks to some sounds and fixed a couple minor problems with the ambience system as well.
I’ve been going over the animals and improving their flinching animations. Here’s a video of what I’ve been up to (torturing animals). [embed]http://files.facepunch.com/minhle/2015-03-25_10-55-45.mp4[/embed] I’ve also been going over various player animations and improving any of them that looked a bit shit. [embed]http://files.facepunch.com/minhle/2015-03-25_11-02-03.mp4[/embed]
I’ve been working on making the clothing system a little better and more intelligible. This means I’ll be able to make clothing much faster in the future because I have a good ruleset and some guides to follow. Making clothing better also means I’ve been working on a custom shader that does a lot of fun stuff, like highly customizable tints…
After updating the character meshes to accommodate for new heads, the UVs for the LODs no longer matched, so it would look pretty crazy when the LODs swapped. I’ve gone over the head LODs to match the UVs. I also modified the textures for the characters to comply with our new character skin feature. For example: I also modified the textures for the characters to comply with our new character skin feature. When I can, I’ve been doodling out a new heads and also a new resource... I guess you can imagine the amount of resources and the kinds that you could gather from it. Looking forward to seeing people fight over it. I need to expose a “visual” resource gathering point, so, I’ll have the stomach innards and rib cage exposed.
End of last week I finished off the driftwood sets for Petur. This week I moved onto a new repair bench, the high poly is done. I’m now moving onto the texture work after finishing the low poly and baking out the maps, etc.
I've been working on revamping the icons with the aim to unify everything, and to add some clarity to them so they're easier to distinguish small scale. I know some people prefer the realistic icons that were taken from screenshots of the items, but this method allows for some additional readability via some arty tricks. The last of the icons were done this week and I'm going to be keeping an ear out for feedback to see which ones people aren't getting on with so I can change them accordingly (metal fragments and wolf meat being at the top of the list).
I worked on the breakability of our building skins. One of the challenges is to keep those ‘gib’ meshes cheap, and relying on particle effects to cover up the lack of detail in them when your block crumbles. For the moment the particles and sounds do not match the broken materials type yet, and I expect the effect will get much more convincing over time. I also worked on fixing the problems some of you ran into with the floor blocks and foundation blocks where using door blocks adjacent to them would prevent the floor to show up. I simplified our prefabs to not detect doors openings for now and thus invisible floors shouldn't happen anymore. Seeing as testing all the possibilities of our blocks is a daunting task, if you run into these again, let us know. The building skins LODs may still be rough for a bit, some popping is currently unavoidable at lower graphics settings. There shouldn’t be anymore invisible walls at least. Some blocks are not yet LODed either like our rooftop one, which I am going to change the gradient soon to make it easier to make continuous rooftops.
We are in the final stages of getting the legacy-inspired map into its minimum playable state. A few facts about it:
  • It's 4k in size.
  • It has brand new everything: new trees, new lighting and fog, new rocks, new ground textures and shading, new bushes, new flowers, mushrooms, you name it. (All this will also eventually be ported into the procedural maps.)
  • Its a twin biome. A snowed up, elevated centre, surrounded by temperate forests and plains.
  • If it works out well, we *may* possibly add a second adjacent island, with a more arid climate. Think boats and/or bridges.
  • It is *not* a port of the old legacy map. The layout is merely inspired by it.
  • We've decided to release it as quickly as possible, which means it will have plenty of rough spots. But that also means you'll get to see it evolve.
Expect to see it next month.
For the past few weeks I've been working alongside Petur and Andre to deliver some improvements to terrain and vegetation rendering for custom/handmade map construction, but also applicable to procedural maps. I did some work on unifying the terrain shader code to be lighter and easily accessible. We can now have smooth transitions from terrain to any mesh which essentially helps make objects look naturally integrated with the terrain: We now also have a dynamic layer composite system to allow us to have features like particle accumulation and wetness on any shader as well. I also made some changes to the lowest quality mode, which now has a decent base texture in both Legacy and PVT rendering paths. There's still some grunt work and testing to be done to make sure everything works on procedural maps as well as in custom/handmade maps. We should be able to merge these changes back to the development branch very soon.
  • Consuming food and medicine plays sound effects.
  • You can now only eat a piece of food every 2 seconds.
  • Max caloric HP regen restricted to 60% base + 40% * Comfort level.
  • Shooting or aiming projectile weapons will stop sprinting and perform the action similar to melee, instead of not being allowed to do those actions when sprinting.
  • Pressing the sprint key when autosprinting will disable it.
  • Nerfed salvaged hammer - Range is now similar to other weapons of same category.
  • Increased Salvaged hammer cost.
  • Slightly lowered Stone Pickaxe damage.
  • Made bandages easier to craft.
  • Nerfed pump shotgun, because it used to do 300 damage per shot.
  • Fixed guns and melee weapons failing inside caves.
  • Fixed crazy sky rendering.
A pretty awesome week all round. New features, performance, balance. That should be enough to please everyone.. right? Yeah - probably not :) Next week's update is a first update of the month update, which means it's going to need a wipe, which means it'll fold in all the terrain changes Andre has been working on for a month.

Newsletter

Recieve monthly updates straight to your inbox