Rust, Facepunch Studios' Darwinian survival game, is getting a do-over; a reboot that’s making sweeping changes across Rust’s savage world. The default branch on Steam is no longer being updated, and Garry Newman and the rest of Facepunch are working exclusively on the experimental branch.
Garry calls the original Rust a prototype, and a messy one at that. The code is limiting, and with the amount of players - a number that surprised the developers - Garry felt that the team needed to pick up the pace and overhaul the game instead of polishing it as they went along.
It sounds like a significant undertaking, rebuilding the game from scratch. I got in touch with Garry to find out about the extent of the changes and how the old code was holding the game back.
“We're changing/updating pretty much everything as we re-implement it,” Garry tells me. Since work started on the experimental branch earlier this year, Garry’s been making regular devblogs detailing the changes, from completely new player models to new terrain and textures. Here’s what future caves might look like:
“There were a lot of stupid decisions made in the old codebase,” Garry says. “That's probably unfair. There were a lot of decisions made when we didn't know what game we were making.” The limitations of the codebase are down to it being based on a prototype web game the team were working on: Cash4kills. Garry describes the game as a Hitman-style title set in a GTA-style open-world. It was very different to Rust.
“The one thing we don't like about the latest Hitman games is that the game seems to be about finding out what the level designer wants you to do, rather than just working out the best place to kill a guy,” he explains. “We wanted it to be all free-form, with bullet entry stats, bonuses for clean kills and for being unspotted, sharable replays, then cash rewards in a backend that you could use to buy new weapons etc. So you'd only get one chance at a kill and if you fucked it up you couldn't replay, you'd have to wait for the next contract via your real email.”
As intriguing as the prototype sounds, there was a lot of code that has nothing to do with Rust or its mechanics. This led to a lot of extra work for Facepunch. “There's a lot of systems that are integral to Rust, that are 3,000 lines long, that could be 100 lines long,” Garry laments. “So every time you go to change something you have to chase around finding how these five different systems that it doesn't really need work, then you change it and it breaks 4 different systems that you thought had nothing to do with it.”
The result was a lot of bugs and a bloated codebase.
So much of Rust would inevitably have to be changed, things the team wanted to change, that they decided to start from scratch. That’s what was happening anyway, but it was taking longer because of the codebase.
The UI is one element that was always going to change. The default version was a placeholder. The new version, which is due to be functional and working in the experimental branch around this week, was rebuilt in HTML. That’s made development significantly faster.
“Because it's HTML it's really artist friendly, so shit gets done a lot faster,” Garry tells me. “It renders in another thread, so it has no performance impact on the game at all. It's a regular chromium web browser, so we can use a lot of existing technology like bootstrap, jquery and angularjs to make development faster. We're hoping that people will be able to skin it using regular CSS.”
Other UI improvements are on the way. The plan is to make it simpler and unified, crafting is being redone and players will be able to see their avatar and what they are wearing. A zoom feature is also in the works, allowing users to change the scale of the UI to fit different setups - like TV. Controller support is also on the cards.
I wondered how all these massive changes would affect the game’s performance. The textures, models and extra bells and whistles certainly make Rust look more striking, but could they also make the game harder to run and necessitate a change in the system requirements? Garry says that this shouldn’t be the case.
“If anything, once you turn the bullshit like SSAO and motion blur off it should run better on lower end rigs than the old version. We're hearing from people that it performs better than the old version with grass off for them - and that's great to hear because you can't turn grass off in the new version.”
The experimental branch where all this is happening still has some ways to go before it becomes the default version, but everything that’s in there now has been made only in the last few months. When the core systems are in place, the cadence of new content should pick up, inspiring more people to switch over to the branch, eventually making it the main version of Rust.