What's New in Rust's "Devblog 45" Update
January 2015's Devblog 45 was the one with the new UI. Two weeks of crunch replaced the server browser, inventory, blueprints, chat and death screen, alongside randomized rad town layouts, restored water reflections and a working Linux build.
Devblog 45 shipped at the end of January 2015 and was, in Facepunch's own framing, "the one with the new UI". Nearly two weeks of concentrated work moved Rust onto Unity's UI system, rebuilding the menu, server browser, inventory, blueprints and chat along the way. Around it sat a genuinely interesting batch of systems work: randomized rad town layouts, memory usage instrumentation, water fixes and the return of anti-cheat.
The new UI system
Rust switched to Unity's UI system. It wasn't without problems - Unity were working on them - but it was a big improvement on what came before. The caveat was clear: this was under two weeks of work, focused on moving over the most important and most complicated features first, so things were missing and being reimplemented.
Menu and server browser
The menu screen was meant to stop being a screen you use to get to another screen, and start keeping you informed. The first small example was links to the three latest devblogs.
The server browser got more comprehensive, with lists for LAN servers, favourites and history, and a star next to each server name to favourite it. Because UnityUI was slow with very large lists at the time, the server lists were capped at the top 200 servers, with filtering and search tools planned.
A new connection screen shows connection status and, if you get disconnected, why. Pressing escape in game takes you to the menu where you can use it to disconnect. It was described as somewhat placeholder, with ambitions to add server logos, MOTDs, admin lists, connection stats like ping, and player reporting.
Death and sleep
The death screen is now skipped entirely if you've never been alive. The right side shows respawn options, including choosing which sleeping bag to spawn on - and if a bag is on cooldown, the remaining time appears directly on the button. You can also give sleeping bags friendly names in game.
The sleeping screen lost its wake up button; you just press a button to wake up instead.
Inventory, splitting and item selection
The inventory became full screen and frameless. That obscures everything happening behind it, but the trade was made on looks. It was acknowledged as possibly too large at high resolutions, with scaling options promised for the following week.
Splitting changed enough to need explaining. Select a stack and you get a split widget: drag the bar to the amount you want, then drag the icon where you want it. Alongside that:
- Left mouse drag moves the whole stack
- Right mouse drag moves a single item
- Middle mouse drag moves half the stack
The bet was that the three clicks needed for an exact split are acceptable because most people will just use middle or right mouse instead.
Selecting items by clicking shows information about them at the top of the screen along with any options, such as eating food. That area was underused at the time but justified by future plans. Dropping items also happened through this route, which Garry admitted sucked, promising drag-out-to-drop the following week.
Blueprints, tweaks and chat
The blueprints list gained an "All" category and shows how many you've unlocked. You scroll by dragging up and down. Items you can't craft due to missing resources sink to the bottom; everything else is ordered by title. When crafting, a timer appears along with the number of queued items, and you can cancel a queued item by right clicking. Simpler than the old version, at the cost of some control.
The tweaks window was redesigned with new options, and now shows the framerate plus a framerate graph along the bottom - so you can immediately see whether a setting change actually helps performance.
Chat gained Steam avatars, with admin and developer names in a different colour. History was still to come.
Randomized rad town layouts
A system was in testing that partially randomizes rad town and monument layouts based on the server seed - described as a simplified version of Left 4 Dead's AI Director. It can remove or add walls, buildings or other objects to make exact layouts and loot positions harder to memorise. The long-term aim is for players to always expect surprises entering a rad town, even a familiar type.
For now it was being applied sparingly, as little more than a proof of concept to see what kinds of randomization make sense in future rad town design. In practice you'd find certain entrances and objects present or absent depending on which server you played.
Memory usage
Rust likes RAM - sometimes for good reasons, caching calculations rather than repeating them, and sometimes for less sane ones. Two changes went in this week: server-only components were removed from client builds, and procedurally generated textures are now cleared from RAM once uploaded to the graphics card, where it's certain the CPU won't need them again.
Neither was described as a silver bullet, so a system information section was added to the F1 menu showing available machine memory, memory currently used by Mono (the memory managed in their scripts), and the total number of garbage collections since startup. Unity's own memory for meshes, textures and similar wasn't visible there yet but was planned. Players were encouraged to screenshot the panel when reporting performance issues.
Anti-cheat
EAC had been off for a week while its developers debugged why players were apparently being kicked at random. With that resolved, it was armed again. Separately, people had found that messing with the big resources file could produce cheats. Rather than write a bespoke fix, Facepunch waited on EAC's more general solution, expected soon.
Water and platform fixes
Unity 5 beta 21 fixed one of the dynamic reflection probe issues, which allowed water reflections to be re-enabled on OS X and Linux. Players on those platforms finally get proper water colours instead of a solid greyish plane that was too dark by day and too bright at night. Some hardware and software combinations could still show black pixels in the dynamic reflection probe, mostly visible on water and shiny materials.
Water also gained a flow map based on the world normal map, so it no longer flows away from the shore but in a direction that makes at least some sense. That change also lays groundwork for proper 3D displacement waves later.
And the Linux version works again.
Smaller items
Invincible mushrooms were added to certain trees. You can't gather them - they exist purely to test a new dynamic object placement system. The intent is eventually to let players interact with small world details: picking a rock off the ground for your starting tool, surviving the first night on mushrooms or berries, crafting a first tool from gathered wood.
Vitals barely changed, beyond some showing slightly more accurate data.
The checksum mismatch warning also got an explanation, since people kept asking. The checksum compares the world the server generated against the one your machine generated. Eventually it'll be used to kick clients whose checksum doesn't match the server's, but at that point it was purely a warning with no consequences - printed to the console and reported back so Facepunch could gauge how many people were affected. One bug causing mismatches was found and fixed that week.
Wrapping up
After a couple of weeks of crunch, the following week was earmarked for cleanup, bug fixes, restoring missing features and acting on feedback. Garry also noted he'd added the Raknet source code to their native DLLs, ready to experiment with as a possible replacement for Lidgren and its ongoing network problems.