Hey guys, another Friday Devblog. I’m going to try to keep this one short and sweet. Sorry – turned out neither short nor sweet.

No Comments

As you’ve probably noticed we’ve had to turn the comments off. It was fun while it lasted, but eventually someone spoils it for everyone. This time it was spoiled by someone posting hundreds of erotic stories into the comments. So comments are gone and they’re probably not coming back, sorry.

Network Recode

We use uLink in our current implementation of Rust. We have been mostly happy with it.

We had issues when we first launched with DDOS attacks. Servers could be taken down really easily with just a few packets. When we mentioned it on this site we were surprised by how reactive the uLink guys were. A few DDOS exploits were fixed, and more were discovered and fixed. Eventually everything was fixed, we all agreed that their support was top notch and we were very happy.

Then a couple of weeks later the CEO emailed me asking to ‘help correct some mistaken information’. He also mentioned that they were changing their EULA so that if we made another post about bugs that hadn’t been fixed they’d revoke our license. From our point of view the only reason these exploits were eventually fixed was because we made that post. We could have easily posted a ticket and waited over two months with no resolution again – but in the meantime no-one could play Rust.

Then a few weeks later we got another email asking us if we’d like to buy a yearly support license.  It cost 25 times more than our existing yearly license.. or we could buy a yearly full source license, for 50 times our existing license fee. I asked what we were paying our existing license fee for. We don’t want to pay them for access to their source code so we can fix it for them. But on balance even though it did feel like a bit of a shake-down we decided that we’d made enough money from Rust so far that we could justify the ‘support license’, especially with how much their engineers helped us over the holidays. At this point we got distracted with a bunch of other issues..  then one of their engineers made it clear that they’ve been told not to help us with any of our issues until we have a support agreement, because they have to “prioritize on tasks that are economically sensible”.

So we decided to write our own networking library. Don’t get me wrong, the decision wasn’t totally based on pettiness and spite. We also have a few technical reasons to do this. To do what we want to do we need more control. Don’t worry, this isn’t something we decided yesterday. We decided it a long time ago. And the good news is that the new implementation is pretty much finished and ready to be tested. (I don’t like announcing intentions, I like announcing results)

We’re obviously not going to inflict this change on everyone without testing it properly, so some time in the next couple of weeks we’ll have an experimental build up on Steam for people to help test it so we can iterate and evolve.

Oh and because we’re awesome this new implementation lets the server and client co-exist in one build. So you can make listen servers, and single player versions. We’re not totally sure whether that’s something we’re going to make available straight away.. but it not having to compile/create/join a server every time you change code sure makes development a billion times faster.

Other Stuff

Here’s what the artists have been up to.

2014-04-18_17-41-37
Dan made some new barrels!
2014-04-18_17-43-02
Tom made a hammer
Gooseman made a bear
Gooseman made a bear
And a Deer
And a Deer

When is the next update?

So what’s likely to happen is this. Some time in the next 2-3 weeks a new branch will appear on Steam. The community will be split in two. New and old.

We’re not going to take the old branch away from you until everyone is in universal agreement that the new branch is the future. And even then we’ll probably keep the old branch anyway – just for a laugh.

I don’t look forward to posting these updates. Each one of these devblogs is a reminder of how much we’re failing you. So here’s what’s been keeping us busy this week.

Humble Store

We put Rust on the Humble Store. We didn’t sell Rust anywhere but Steam, because it’s early access and we’re actively developing we didn’t want to whore it out everywhere. Honestly – right now, the less people playing it the better. But Humble Store changed our mind. 10% of all sales go to charity. So we decided it wouldn’t hurt.

More Item Editor

I want to explain more about the Item Editor. I want to make it clear why we’re bothering, and why it’s awesome. So let me walk you through how the Camp Fire item works.

If you click the link above you will see a number of modules. For any item these modules can be turned on and off.

2014-04-11_19-53-33

World Model controls what the item looks like when you drop it into the world (right click > drop). This could be a different model to what it normally looks like. It could be a sack for example.

Container means that this item can contain other items. You can specify what type of items, and whether these items are accessible in the inventory, world model and deployed.

Crafting lets you define blueprints to make this item.

Deployable

means this item can be placed in the world when selected in the belt bar.

The oven lets you specify the temperature this item and its contents reaches when switched on.

2014-04-11_19-57-56

 

And then we have events.. these events all add context options to the fireplace. So when you right click in the inventory or ‘use’ in the world, you are presented with these options.

These events have conditions. So for example.. the “Ignite” option won’t show if the fire is already on, or if the fire doesn’t contain fuel.

So here’s how that looks in game when you use the item.

2014-04-07_16-49-50

So the fire works. What about cooking stuff? Well, that’s generic too. Take a look at this page. As you can probably see.. this event gets run when the temperature is between 150 and 250. When the cooked var reaches 100 the action gets run. Which is to swap the current item with a cooked version.

This is nice and generic, nice and open. We can easily add an event to cooked chicken so that if t’s cooked for another 60 seconds, it becomes burnt chicken. Then if it’s cooked for another 60 seconds it becomes charcoal. This exact same logic can be applied to a furnace object, or a freezer – without any extra coding.

So what about fuel? You need to put wood in the fire, right? Well technically not any more. We can add the burnable module to anything and it instantly becomes a fuel source for an oven.

Other Stuff

So that’s been keeping us busy.

Time Scale

We made a bold decision this week, which will mean that the next update will either come a lot faster than we’re expecting, or a lot slower. We’re hoping it’s a lot faster, and I hope I have more to share about that next week once we’ve walked the path a while.

Sorry again for this huge update void. Please understand that when we released Rust we didn’t expect anyone to buy it, so we thought we had lots of time to slowly remove shitty placeholder code and replace it with super awesome future proof code. We expected to slowly build up a following while we were developing. We need to make drastic changes to the codebase to be able to continue.

So, you wanted one of these every week, but not all that much has changed. We’re still grinding away on the new everything.

This code re-writing is kind of like a virus. The more you change, the more you need to change. You get into the situation where it’s quicker and easier to replace existing code than integrate it with the new system. That’s what’s happening.

The Item System

The old item system was a bit of a mess. So it was re-coded. We now load items via JSON. Which is generated by the item editor website.

You can add modules to an item in the editor website to add functionality. There were a few features on our wishlist for the new item system. Items need to all have size and weight. We need to make items be able to store other items inside them. We think this will open a world of emergent gameplay if we can pull it off right. For example, you could possibly put some poison inside some chicken. You could put a key in an apple and feed it to a pig. There’s a lot of options here.

We’re hoping that by being able to add universal components to items like this, we’ll be able to make the system more open ended. An example of this is the ‘throwable’ component. The axe, the flare and the pickaxe should all be throwable – right?

Deployables

A deployable is something in your inventory that you place in the world. The deployables system is being re-written too. This isn’t such a big deal, because it kind of works exactly the same. But unlike the old system, the new system keeps hold of the `item`. This means that it’s feasible to be able to pick deployed items back up. Internally this makes the code cleaner and more generic because we can use exactly the same inventory code to browse the contents of an item in the inventory when it’s deployed in the world.

Weapons and Tools

The weapons system is being re-coded too. We’ve only just started this so I don’t know of any obvious improvements. One of our dreams is to make reloading more involved with modern weapons. We don’t want you to just press reload and it somehow, in the background, takes your clip out and fills it up with bullets from your inventory, then puts it back in. We want you to go into combat situations will your clips loaded. I am probably alone here.. but I want you to sit in your home, manually dragging bullets into clips. Then when you’re in a battle situation, you’ll hold down reload and choose which clip you want to swap to. This way, when we introduce different types of ammunition (tracer etc), you’ll be able to put them in your clips in a specific order. I’m sure a lot of people don’t see that as a good idea, but I see it as a good way to ‘nerf’ modern weapons in a common sense way.

Building System

We’re going to change the building system a lot in this pass. We’re not ready to talk about that yet though :)

Clothing

We haven’t modified the clothing system yet – and will probably just make it ‘work’ without many changes in order to get the update out as soon as we can, then return to it again later on.

Timescale

All these changes come at a bit of a cost. You want updates, and we can’t get them. We’ll try to get the experimental branch in a workable state as soon as possible.. but right now we’re looking at least a couple of weeks more. I know it sucks, and I wish we didn’t have to do this. But again – once this is done we will have some serious traction to push things in the direction we want to be headed.

A lot of people are complaining that we’re not giving enough updates on the development of Rust. They have suggested that we start posting weekly about what we’re doing. So that’s what I’m going to do. Even if that means every week I post “replaced 6000 lines of terrible code with 1000 lines of not so terrible code.

NO UPDATE?!?!?

We understand you want weekly updates filled with a shitload of new content. To make that possible things need to change.

So we’re working. That’s why we haven’t been posting updates. I think the important thing for people to realise is that when we launched Rust it was still pretty much a prototype. Most (if not all) of the code is terrible. I’m sure people have decompiled rust and thought that their decompiler was broken. It isn’t – that’s the code. Replacing this code isn’t a matter of programmer pride. It’s something that we need to do to push forward. The code is very limiting right now. It’s hard to understand and there’s too much of it. Once it’s all cleaned out we’ll be able to push on and iterate faster. If we try to do that now we’ll end up spinning ourselves into a web.

This is a lot of what we’re doing now. Replacing old terrible, complicated systems with clean, tidy, future proof systems.

Trading Cards

As some people have noticed yesterday we released our first set of trading cards. I was hesitant about posting about this yesterday because I knew the comments would be filled with “NICE RELEASE TRADING CARDS BUT NOT UPDATES”. So let me clear this up. Our programmers didn’t make the trading cards. We’re programming. We didn’t delay releasing updates so we could make trading cards.

We wanted to release this set of cards during our early alpha to capture where we’re at right now. The hope is that every 6 months or so we’ll release a new set of cards capturing the state of the game, the community and events surrounding it. I think Meg and Rob have done a great job on the cards and the backgrounds, and I hope you agree.

New Inventory System

One of the code systems that is getting totally replaced is the inventory system. Why? Well, this. You can literally open any of these inventory files and find code that doesn’t explain itself. Code that uses ambiguous variable names. Basically, shit, unmaintainable code.

This code is also tied very harshly into our old GUI system, NGUI. Which in the next update is completely replaced by our new system of choice, DFGUI. (Which will probably be replaced again by Unity’s new GUI system when we eventually move to Unity 5 in a few months (which is why this new inventory code is very much UI agnostic)).

I know what you’re thinking. You don’t care what the code is like. What does it mean for you? And we agree. It’s be a waste of time if we re-wrote a bunch of code and everything was the same. So we are changing things up a bit, making previously impossible things possible. Here’s a look at the prototype UI for the new menu.

2014-03-13_16-42-25

This is obviously quite early in the development and a lot of stuff is missing, but I think it shows a few things that the new system has that the old one doesn’t. It’s scalable, so if you’re playing in a large resolution, or on the TV you will still be able to see what you’re doing. You can queue and cancel crafting items. Text labels are all unicode, which means we can support translations.

The biggest change is that it now uses the new item system, which is enabled by the new item editor (which is also a WIP).

Summary

We have been distracted by stuff over the last couple of weeks. I had some business bullshit on my mind. Helk has got some rather significant family health problems. I’m back at it hard now and Helk is slowly recovering and getting back to work.

We are working for you, but please keep your expectations reasonable. We’re still a relatively small team. Just because we’ve sold a million copies – it doesn’t mean we’re going to hire 1,000 people. More cooks do not make a better game. That said, we are hiring if you’re awesome so hit us up!

Hi guys, We have a patch for you all which addresses some serious issues and provides some clientside improvements, check it out :

  • fixed airdrops – they will now spawn around noon daily!
  • fixed foundations destroying immediately upon placement and other issues where things would decay too quickly
  • fixed armor exploit where broken armor would not unequip if your inventory was full – you’ll just drop it now if it can’t fit
  • fixed extreme shadow flickering in buildings
  • fixed smoke signal not being influenced by lighting
  • fixed the fade from black starting too late after respawn
  • fixed the floating grass bug
  • fixed the first command entered into the console not working on OSX
  • tweaked tree billboard colors to better fit their mesh colors
  • added more control over image effects using the gfx console convars
    • gfx.ssaa true/false (enable/disable screen space anti-aliasing)
    • gfx.grain true/false (enable/disable radiation grain effect)
    • gfx.shafts true/false (enable/disable sun shafts)
    • gfx.damage true/false (enable/disable damage indicators)
  • added the console convar render.frames to limit the maximum fps to render
  • made lower quality levels automatically disable some image effects for better performance
  • added render.distance (0-1, default 0.2) to adjust the draw distance
    • this is currently only affecting the static rocks
  • enabled anisotropic filtering for terrain, road, rocks and building textures if quality level is above 50%
  • improved cloud synchronization to reduce situations where clouds have to jump around

 

As you all know we’re working on some bigger features and we hope to have them complete soon. Stay tuned!

Sorry guys, no real updates this week. There was a lot of moaning last week about the lack of ‘new stuff’ in that update. So we’re looking at ways to bring you ‘new stuff’ faster. Getting the foundations for this is going to take longer than a week.

The Item Editor

Something we’ve wanted to explore for a while is the possibility of an internet-based item editor. We want to get it in a position where anyone on the team can edit items. Then we want to open it up to the public – like TF2 did with hats. Obviously items submitted by the public wouldn’t automatically appear in game. We’ll be looking through them, you’ll be voting on them, we’ll be editing and accepting them and making sure it all works.

That’s our dream anyway. The website side is really easy. It’s getting the items in game that’s a bit more involved and might take a couple of weeks.. because a lot of stuff needs replacing. The good news is that it’s all crap and needs replacing with a better system, and once we’ve laid the foundations we’ll be able to add new items like it’s nothing.

The New UI

As part of these changes above we’re making a run at changing the UI. This is something we’ve been wanting to do for a while. At the moment we use a GUI system called NGUI. It’s the devil. Our version of the devil is quite a bit worse though because it’s been chopped up and edited. So we’re working to get rid and use DFGUI – which is what all the menu, chat and popup notifications use.

So why bother updating the UI when there’s so many other things that need doing? Well – we’re doing it because of those things. Right now we’re restricted by the UI because we know we want to replace it eventually so we’re putting off adding things (like putting stuff in stuff, weight effects etc) because we don’t want to write code to throw it away. The pass we’re doing on the UI should mean that we’re able to push even further forward.

Farming

Helk has started working on Farming. It’s what it sounds like. We need to explore a bunch of performance issues we may or may not have with the system – so this is taking longer than expected too.

Sorry

So sorry guys, no update this week. We’ve been dealing with a bunch of business stuff, and Helk is having some personal stuff to deal with, so progress has been slower than we’d like.. but we know what we’re doing and I’m positive that we will make you happy quite soon :)

Hey guys. Your weekly patch here. One week late. Sorry about that. We did want to get it out last week but we don’t like running the risk of having something broken over the weekends. So we opted to wait a couple of days instead.

New Sky

The biggest most obvious change in this update is the new sky. We’re still tweaking to get it looking how we want it to look.

2014-02-24_00001

So why bother? There’s hundreds of other things you want – why bother changing the stupid sky? Well I’m glad you asked. The old sky was a slow horrible FPS killer. It rendered using two cameras.. which induces a bug in Unity that meant we couldn’t (without a bit of hacking around) have refraction effects in game. Everyone should see a nice framerate boost thanks to the sky being replaced. And it renders in a single camera – which means we’re free to use the refraction effects again (so expect to see pixelated penises again).

2014-02-25_00003

One gameplay change the new sky might have is the with mr moon. Depending on the moon cycle night is no longer pitch black. We think this is a good thing.

2014-02-25_00006

There’s a few rendering issues that we hope to fix as we go on. One is the tree lighting. Distance trees appear too bright. This is something we’ve battled with before – and as far as I’m aware it’s a Unity3D bug because I’ve seen it happen before. I’m sure we’ll be able to solve it though – so please excuse any issues like this for now. We’re working towards making it as perfect as we can.

New Water

As a happy consequence of the sky being replaced, we were able to bring you much better looking water. We expect water to play a bigger role in the game as we push forward (instead of the death plane that it currently is). So having it not look terrible anymore is a big win for us.

2014-02-25_00012

There’s an extra option in the options menu to turn reflections on/off, as they do have an effect on performance. When you turn reflections off, it’ll still reflect the sky. Which has no real performance effect and stops it looking terrible.

OSX and Linux Fixes

We hired the new sky’s creator, André Straubmeier last week and as well as improving the sky for Rust, he’s been making Linux and OSX work properly. So Linux and OSX users should now see the grass being rendered properly and be able to join the game with high graphics settings (which is apparently caused by compiling for 64bit, we’re going to investigate that further).

2014-02-25_00014

Item Durability

You know how you’ve had to replace your mouse and keyboard 3 times since you got Rust because you’ve used them so much? Well now you can experience that feeling in game too.

2014-02-25_00015

Items will now become damaged in game due to repeated usage. Items can be repaired at a workbench Repair Bench. You can keep repairing your items but eventually they’ll just get that unreliable that you’ll want to throw them off a cliff.

Armor also loses condition when damage is taken, so you’ll probably have to eventually throw your pants of a cliff too.

 

A small Monday morning update for you guys, getting it out of the way in the hope of bigger things later on this week.

  • fixed unicode not working in name tooltips
  • fixed people using colours in name tooltips
  • removed ‘hatchet to gather’ tooltips
  • added whitelist servers
  • fixed broken explosives
  • fixed being killed by harvesting resources

 

The whitelist system is as simple as we could make it. If a server assigns itself to a Steam Group you need to be in that group to join it. Whitelist servers that you can join will show up in the whitelist tab on the server browser. We won’t ever show servers you can’t join (in both the normal tabs and the whitelist tabs).

Server owners can make their server a whitelist by doing something like this in their config file:

server.steamgroup 103582791429523489

Servers will need to be restarted before you can join them. If you can’t find your favourite server on the server list it’s because it hasn’t updated yet.

Just some minor changes we put up today :

  • resources should maybe hopefully not kill you anymore while harvesting them
  • wolves should actually scare other AI when they are chasing or attacking something
  • last chunk of rock should be on the ground instead of hovering
  • you can’t place shelters ontop of people anymore and lock them in
  • you can’t build stuff on top of large spiked walls anymore
  • you can’t build barricades on top of barricades anymore
  • fixed a minor issue with spawning wildlife and resource nodes which could cause some console spam on the server
  • AI figures out it can’t get to you much sooner and knows to retreat
  • shelters decay is active for sure and they will disappear
  • metal window bars are thinner and easier to shoot out of

We made our own anti cheat called CheatPunch last week. We ran it over the weekend. 4,621 people have been detected and banned.

We don’t know how stable it’s going to be, so we’re testing it out on our official servers to make sure it all works before forcing it on everyone else. If you get kicked from the official servers with the message that you’ve been banned then you have been caught. You’re a naughty boy. You know what you have done. You won’t get unbanned. We know it was your 9 year old cousin. We know your computer got hijacked. We know that the CIA is getting you banned from all your games on Steam so you will join them in the hunt for aliens. We’re aiming to get a site set up for people that have been banned so they can go and see proof that they’ve been caught.

CheatPunch isn’t the answer to all of our prayers. It’s a stop gap solution. It’s going to get rid of a bunch of cheaters, but it’s not hard to get around (by design). We fully expect cheats to be touted as ‘CheatPunch proof’ quite soon. That’s cool. We’re never going to be finished fighting.

If server owners want to run it on their servers they can do by updating to the latest version and running with “-cheatpunch” on the command line.