In this update4
Full notes
Full Rock Hoppers update
Read the full published notes in a cleaner layout. The original post stays linked below.
What changed
- Gameplay
- Workshop
- Server
- Maps
Rock Hoppers changes
Welcome, Rock Hoppers, to the 1st of May edition of our devlog. I've been working on adding some core and core-adjacent functionality and I've started a concerted effort to optimize the multiplayer experience.
Steam Workshop Integration
We were always planning on implementing the Steam Workshop, but to be honest, I didn't expect it to happen before early access. I decided it would be a good use of my time after realizing I had dozens of prefabs and maps with dubious names scattered all over several development machines. So now, players can upload their prefabs, including complexes with multiple elements, and entire maps to the workshop right from the menu.
When you want to release a complex, which can consist of any number of prefabs, all you have to do is publish the root prefab. The game will find all connected prefabs (corridors, rooms, and adjacent structures, for example) into a single bundle and publish it as one workshop item. Once subscribed, any world you generate will include all of your subscribed prefabs. It's like magic, if magic consisted of several thousand lines of indecipherable code.
Worlds are similar. You can publish your generated worlds just as easily as a prefab, but there's an added benefit: You can launch a dedicated server with nothing more than the Steam ID of a published world, and the server will download the world on first launch. More importantly, any player connecting to your server who doesn't already have the world it's running will automatically and transparently download it from Steam, saving bandwidth on the server, and -hopefully- a lot of frustration.
World Map & Rock LODs
This one's straight up smexy. you can pan and rotate, highlight your desired waypoint and active mission, and add new waypoints, all from the map menu. And see those adorable little asteroids? They're lowres versions of the actual asteroids which, it turns out, can be used as a reduced level of detail model when you view an asteroid from a distance. They may look low-poly, but the triangle count on these big asteroid models is pretty high, so having a lowres alternative allows me to show all asteroids all the time, instead of popping in the full detail asteroid when you get (too) close. I feel like this makes a big difference in conveying a sense of scale. And, of course, being able to see your destination makes navigating a lot easier.
Visual Improvements
I've upped the default graphics fidelity with sharper shadows and more shadow casting lights. This will be configurable eventually, but the performance hit between reasonably well defined shadows and what amounts to shady blobs turned out to be far smaller than I expected.
Multiplayer Improvements
The least exciting thing I did this month is probably the most important. I finally installed some tools to let me analyze the network traffic generated in multiplayer and, well, hoo boy.
It turns out I was, among other things, sending about 300 bytes of information every second for every humanoid mob in the game, even while they're standing still doing nothing. How did I manage that? Well, let me tell you about a little thing called a dirty bit. You see, when you change a variable on the server that the clients also need, the networking middleware (Mirror for Unity, for those interested), sets a bit that tells the server the variable has changed and it needs to inform the clients. Only if the new value is different, of course. Otherwise the server would waste massive amounts of bandwidth telling the clients something it already knew.
But what happens when you clear a variable and set it, say thirty times a second? Well, because you cleared it, the dirty bit gets set, and setting it back to it's original value doesn't clear the dirty bit, so every NPC in the game was telling every connected client, 30 times a second, that yes it was still wearing its boots, thanks for asking.
There was a lot more hidden shame out there. Sending generator power levels to every player no matter how little they changed from one tick to the next and no matter how far away the player is. Sending every player's hunger and power levels to every other player 30 times a second. Players can't even see each other's hunger level!
Suffice it to say that, after about a week of tweaking, bandwidth usage is down by something like 90%. It doesn't show on screenshots, and it's not glamorous, but boy does it make a difference!
Okay, that was April. As of right now I'm still working on smoothing out the multiplayer experience. The provisional plan for May is to start working on procedural quest chains and maybe even branching quests with a bit of story behind them as part of the larger effort to make the human NPCs feel more, well, human.
If you want to learn more about Rock Hoppers, join us on discord and follow us on twitter.
Source
Changelog.gg summarizes and formats this update. How we read updates.
