Devblog 34

<a href='http://playrust.com/devblog-34/'><img src='http://files.facepunch.com/garry/2014/November/14/2014-11-14_19-28-43.jpg'></a> More building system work..

14 November 2014
New Build System

I've seen a few people comment that they don't understand why we're changing the build system. They loved it, it was miles better than legacy, don't change it, please god don't change it. Well - you probably should have said something before because all I've heard is moaning.

With the new system I'm hoping we're addressing a few issues..

  • Rust isn't a hammering simulator. Lets face it, there was a lot of hammering in the old system. Should the payment for building something not just be the resources, do you have to pay with time too?

  • Get out of your house. With the new system stuff is more expensive, players need to go out and get resources more. Anything we can do to encourage players to explore, we should.

  • Rust isn't a building simulator - and that's what it was turning into.

  • The art cost was too high. Every component needed 7 different stage models (wood, wood2, stone, stone2 etc), this is a lot of art - especially when you consider that things like stairs don't need that. The new system keeps these requirements low - while allowing for the maximum customizations.

  • It was going to look like shit. Even though there would have been a lot of art it would have still looked like shit. There'd have still only been 6 different types of wall and all the walls would have looked the same on the inside and out. We can do better than that.

The current status of the new system is that it's in testing. It's on the dev branch if you want to give it a try. There's still stuff to fix, add and change, there's broken menu items and some blocks don't work. The stairs are slopes. I want it to be a bit more capable before I force it on everyone. In the meantime you have the option of playing on the dev branch and letting us know what's up.

And don't worry - we haven't skinned/modelled them yet. These are just placeholder models and textures.

Pie Menu

Some improvements to the pie menu this week. We now have disabled items and 'selected' items.

Hold USE for menu

Another feature from legacy.. if you're looking at an item with multiple options you can quickly tap use to run the default option, or hold down use to open the menu.

Animals are faster

Andre made it so the animals move faster this week. They're harder to catch and harder to run away from.

There's still a lot of scope in making the AI's behaviour more believable and fun to hunt (and be hunted) but this should fix a lot of gameplay issues for now.

Demolition

You can now demolish blocks by right clicking with the hammer. The block's health will slowly decrease until it falls to bits. You can speed that up by bashing it with the hammer a couple of times.

Health bars + overlay

Building blocks show their health by turning darker (pr0grammer art). This is a visual indication for you to use from a distance so you can see if some of your base is knackered.

You now see a building block's health in a health bar too. This is one of those compromises. I hope we can remove the need for it at some point - that you'll be able to accurately predict a block's health just by looking at it. Right now it serves the purpose of accurately showing how much (or little) damage you're doing to a building, and to explain via bars and numbers that building blocks don't need to be bashed, that they repair themselves slowly.

Dropped Item Removal

Dropped items now get removed after 60 seconds. This sucks and I want stuff to stay around longer. This is a server performance issue right now.

The intention is to rate the dropped items, so that a dropped rock would disappear in 60 seconds, where as a dropped gun would stick around a lot longer. We're not doing that right now because they all use the same prefab.

Rotation

Did I mention that walls are sided? How annoying would it be to place a wall down then realise you'd placed it the wrong way around - so you had to demolish it and rebuild it the right way. That would suck.

So now you can rotate some blocks. The degree and direction or rotation depends on the block. Walls can be rotated 180 degrees, so it's facing the opposite way. Foundations can be rotated around 90 degrees so you can align your floor texture up nice (although this texture will probably use world coords eventually so you won't have to worry about it).

Nametags are back.. again.

We had to remove the nametags a while ago because of a bug in the Unity5 beta and UnityUI. This is all fixed - and now they're back again.

Starving

There wasn't a lot of dying of starvation happening considering this is a survival game. None at all in fact. Well now there is.

PVP Looting Disabled

So previously you could walk up to a player, select loot, then steal stuff from them. This is a lot of fun - and it definitely needs to exist - but right now it's overpowered. It shouldb't be possible to loot someone in the middle of a firefight with them and steal the gun out of their hands. There needs to be some kind of delay, or initialization time - so the other player knows what's happening.

So yeah. It'll come back reworked but for now it was breaking the game so had to be disabled.

Knock Knock

Guess what? Helk is back! And he wrote some code this week! You can now politely knock on doors.

Mousewheel Select

But Helk didn't stop there! He also implemented the ability to change slots using the mousewheel!

Local Chat

Something we've wanted to try for a while is making the text chat local. So when you get a chat message it's probably meant for you - instead of probably being Russians and Americans arguing over who should be on the server.

We can totally appreciate that this is a scary new thing and you hate it, so if you want to allow global swearing on your server you can just set server.globalchat to 1.

Performance

Performance is a joke right now, there's no denying that. The game uses too much memory and it runs like shit most of the time. It's not caused by grass.

Right now we're exploring 3 avenues.

1. Terrain rendering. The terrain shaders were meant to be faster and better looking. Right now they're definitely better looking but they're much slower than the default option. Diogo is adding some shader LODs to ease this off a but - but it's looking likely that we'll have to end up finding a compromise here to get the game back up to speed.

2. Trees. We're suffering a lot with the performance of trees. We think we'll get a big performance benefit if we include the trees internally as part of Unity's terrain system because it does a bunch of batching and automatic LOD handling. Andre is experimenting with that now. If it goes ahead we're somewhat limited by it - because right now in Unity if you want to update one of these trees you have to update them all.. which means if you knock a tree down we have to update the entire system of 30,000 trees. This is taking about 300ms in our tests - which is a noticeable hitch - but might be worth it.

3. Physics. Tied somewhat to the tree issue. Some of the trees right now have about 10 colliders. Some of the rocks have 500 polygon collision meshes. There's 30,000 trees - 10,000 rocks. We have no idea how this is affecting performance on the client or the server. Whether this is responsible for the massive memory usage, whether it's generating a lot of CPU usage. This is something we're looking into.

So sorry, yes, we know. We're doing stuff, we'll talk about it more from now on.

Chicken

Goosey made and animated the chicken model..

Headlight Concepts

Paul made some headlight concepts. Vote for which you like best.

Summary

A busy old week. Feel like we made lots of progress towards getting a build system that works.

Next week some big code refactoring so the other programmers can understand it, performance++, sleepingbag++ and hopefully a massive building system addition.

Woodpiles are gone

Haven't we got enough sources of wood? I don't think we need to explain this.

Mailing List

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.