Devblog 31
<a href='http://playrust.com/devblog-31/'><img src='http://files.facepunch.com/garry/2014/October/25/1414247198.png'></a> Microtransactions, Bug fixes and Microtransactions
25 October 2014, 2PM
Microtransactions

So given the overwhelming positive response to last week's post about trading I feel like I should probably clarify some stuff. I know you guys love microtransactions, I know you love the pay2win model, I know you love paying for a game and then paying a bit extra so you don't have to bother playing it.. but I really think we need to slow down and think about things before you rush to conclusions.

I should clarify again that the game is in development. Everything is likely to change. Especially concept features we mention in these blogs that don't yet exist. I guess I wasn't careful enough when explaining how it would work, I assumed too much. I assumed you knew we weren't going to fuck you over. I guess you've been fucked over too many times to trust anyone in this area.

The Steam Inventory stuff isn't about microtransactions, it's a persistent inventory. Being able to sell/buy/trade is optional. We can allow or disallow sell/buy/trade on a per blueprint basis. This is why the system works for us and our intentions. We can let you sell/buy/trade specific blueprints. We can allow you to trade specific blueprints with other players. We can restrict trading to work via an in-game mechanic - it doesn't have to be done in the steam overlay.

If you can trust us that should be enough to allay all of your fears with this system.

DDOS Attacks

A lot of the game servers came under a DDOS attack last weekend. This was mostly our fault. It was possible to throw unconnected packets at the server which caused an exception. This would eventually make the server think it was full. This is now fixed - and although the servers are still as susceptible as any game server, it shouldn't be possible for a single IP to take down every server anymore.

Don't be angry at the DDOS guys. If it wasn't them it would have been someone else. This is the best way to get these problems fixed.

Corruption

Last week I talked about problems we were having with 'corruption' which was causing a number of crazy errors and crashing. I spent a few hours looking into it, then it turned out that James was having the same issue over on the Arcade team. Turns out it was a Unity beta bug. And they've fixed it. So lots of wasted time trying to diagnose this - and now it's fixed. Buttes.

Slimmed Server

When we build the server now I run a script over all the prefabs which strips out all of the MeshFilters, Renderers and AudioSources. This brings the server size down from 1.4gb to 200mb. It also brings the memory usage down quite a bit. Yay!

CoherentUI

Coherent UI is what we use to render all our UI. It turns out that sometimes it crashes in the background which causes the UI to stop rendering. This is particularly a problem on OSX - which is unplayable for some people due to this bug.

We're working with the guys at Coherent to fix this - and have added some extended logging to it to try to solve the problems. We've been talking about this situation internally and are going to start exploring the new UI system in Unity5. This is definitely a bit of a fuckabout because it was probably only 4 months ago that I was talking about how great HTML rendering in game is. It still is awesome - and it's definitely something I'd look at again. But at the moment we're suffering with UI slow-downs, rendering oddities, portability issues and crashes, and we haven't really looked at the new UI in detail yet.

So it's something we should at least evaluate and consider.

Server Blacklist

We all know the problem, crazy russians making fake full looking servers that redirect to another server. It's been an issue for a while. This is now fixed, we have an updatable list of servers that take part in this behaviour. We ban both the fake server IP and the server they're redirecting to. If they pop up with a slightly changed IP we ban the whole subnet. GSPS that allow their customers do take part in this behaviour should be worried - because the IP bans won't be lifted.

This code will be rolled out to Legacy too over the next week and we'll ban the fakers there too.

Building Fixes

A few common building fixes this week.

  • Fixed being able to build on floor frame

  • Fixed stairs collision

  • Fixed not always being able to place doors on upper floors

Metabolism Balances

There were a few bugs with metabolism that have been fixed. Your temperature balance was a big wrong, water made you freeze to death even if you were in the south, this has been fixed now so you should be able to swim without risk of dying.

Things were balanced a bit too. It was almost impossible to die of starvation, so now you consume calories twice as fast. Your lungs hold less air, so you can't stay underwater as long. And you dry naturally a bit faster.

This is all a balance - we don't want to make crazy changes too fast so we're going to nudge these things around based on feedback every week.

Physics

We had a system called "Fake Physics" which added basic velocity and gravity to objects. This was for performance reasons. It's 2014 - so fuck that shit. Dropped objects and airdrops now have real rigidbody physics.

This fixed a bug where you'd drop an item and it'd fall through walls and stuff. Lots of weirdness.

The intention here is to have the actual item visible when dropped, instead of a sack for everything. So when you drop an apple, you'll see an apple.

Convar Restrictions

We removed some debug convars that were being used as cheats. vis.lerp was removed - as you could use it to locate animals/players that were walking around due to the lines it draw. vis.net has the same issue - except it placed text on entities that received network updates.

We restricted fov to between 60 and 90.

Frame Rate Independence

There was a bug that meant that if you had a low framerate you would harvest or attack at a much lower rate than someone with a decent framerate. I tweaked this code - and it should now be fixed.

Wakeup Bug

The elusive wakeup bug should be fixed now. Prove me wrong - if you still get it after reading this please let me know.

The wakeup bug was compounded by the fact that you couldn't press escape and get back to the menu screen. I've fixed that too - you should be able to get to the menu screen by pressing escape at any of the other screens.

Audio Stuff

Audio is still an area where we're relatively poor compared to the legacy version. We do actually have music in the game but it's not playing - this is something I intend to diagnose next week.

We started using Unity5's new audio mixer this week. It's actually very very cool. It means we can categorise our sounds and tweak the balance and effects for each group. We can save these settings into snapshots and fade between them. For example, we can use it to make everything echoey in a cave, or fade out music automatically when someone is speaking etc etc. It adds a lot of flexibility.

Right now I know people are aching for volume controls. I've exposed them in the console but haven't made UI for them yet. Use F1 -> "find audio" to find them.

String Pool Removal

A bit of refactoring this week. We had a string pool. The concept here is that when the server uses a string, to save bandwidth it adds it to an array of strings and sends the array index instead. There's obviously a bit of work in the background to send the string table to the client etc etc. This seemed like something we needed at some point. It turns out that we don't and it's a big waste of code.

The new solution is to ship the client and server with all the strings they need to discuss. No real need to network the batch of strings at all - just make sure that the crc of all the strings matches and everything is cool. This saves a bit of bandwidth on server join, but more importantly it removes the possibility of errors like this.

Branding

I tweaked the branding text on the top left to make it a bit more useful for everyone. It should now show when the game was last updated/built. This is for you, so you can see how old the version of the game you're playing is.

Below is for us, so in screenshots of errors we can see what OS, steam build ID and branch you're on. The steam build ID isn't working at the moment, I need to talk to Valve about it.

Clothing Updates

Peter has been running his delicate female fingers over some of the clothing models, making them more accurate for Unity5's physical rendering.

Misc Bugs Fixed

  • No longer fall through terrain after dying in a cave

  • No longer immortal when wearing some clothes

  • Held item doesn't get removed when dropped

Loot Container

Scott made Paul's loot container concept.

Lantern Viewmodel

Goosey made the lantern viewmodel

Lighthouse

Dan is working on his lighthouse monument. Hopefully we're going to see what it looks like in game next week.

Brick Wall Texture

Tom made a brick wall texture.

Concept Corner

Paul made some clothing concepts

Meg made a monument concept

Howie made some building type concepts

Summary

Fixing bugs and refactoring. That's the name of the game. A bit more of that next week too.

A lot of people don't like the key/lock system. I can appreciate that. The intention isn't for that to be a replacement for the password system in Legacy, it was for it to be one of a number of options. Next week I'm hoping to implement another one of those options which will hopefully let you see what we're aiming at.

You can probably expect the building system to get slightly worse looking too. We've been working out a development strategy for it and have decided to erode it back to the basic components, and work on the look for each tier, and finalize what the upgrading is going to look like. So things might look a bit minecrafty for a couple of weeks until we get into the groove.

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.