This past week I was at the annual Unity developers conference called Unite 2024, where we were presenting a couple of times on our game and technology. This year it was held in Barcelona, Spain. I had never been, and it was on my bucket list of places to visit.
We work very closely with Unity. Some of our technology is right at the bleeding edge of what the engine can do, and several aspects of it, such as our simulation, are outside the game engine entirely.
Among other things we make use of their DOTS framework, and we have been able to contribute back by identifying ways in which the physics system and networking system could reach even higher performance – several of these changes are actually in the engine for everyone to use now. It feels good to be able to give back that way.
I filmed a segment for their YouTube channel, which had me in full TV make-up… no photos of that, but you’ll get to see it soon I suppose! I also did a segment for their livestream which you can see right here:
Watch the whole segment [here].
There were two main presentations.. One of them was actually a joint talk with Amazon Web Services. They are another key partner of ours. We run our game servers on AWS, and work closely with them as well in order to build our unique backend.
The talk was all about how we use AWS services for our back end. Many of the lessons we wanted to share were about how we try not to reinvent the wheel, but also are very willing to dive in at the deep end of inventing new technology if it serves the game and the vision for what we are making. The talk was filmed, so I am pretty sure it will pop up publicly at some point here.
As part of this talk we showed examples of how our terrain generation system works, and described a bit of how the living world simulation works as well. We shared images like these, which show how we have built custom tools for generating the initial state of our planets before the simulation starts to run. It is all too easy for procedural stuff to generate “endless bowls of oatmeal,” stuff that is technically different but starts feeling very samey.
Our designers use a node graph tool to build algorithms. These algorithms describe landscapes – not just one specific landscape, but rather the rules for building a particular sort of landscape. We can randomize parameters within those rules in order to make endless variations of that landscape type.
This keeps important stuff under designer control: canyons need to be this wide in order to keep combat fun, slopes this steep for navigability, and so on. We can put all those rules into the algorithms, and know that no matter how much we randomize in the procedural process, the rules will still be obeyed so that player fun is preserved.
The tools let us preview the way the world is going to look and tweak the rules in advance. You can see that this isn’t just like regular terrain tools with heightfield generation – we have a full 3d world and simulation, and we need to know that there’s a quartz deposit there under the soil, and so on. So the tools actually annotate the rules so that every cubic meter knows what materials the world is made of at that location.
When we go to generate an actual planet, we grab rulesets out of that designer-created library, and change the seed values so that we ourselves don’t know what the geography we get will be – but we know that it will still fit our design criteria.
And then, there’s all the wizardry to make it actually render in a gamelike way. We talked about that more in the second talk, which was on the main stage. A bit intimidating! Here’s a shot of the room before it had filled up, from the stage.
This talk was meant more as an overview of everything we are doing, a chance to introduce our tech to a crowd of folks who had never heard of us before. Among other things, we shared stats about the way the world is rendered, how the simulation works, and of course, an overview of the gameplay. We talked about how we use a custom scripting solution based on Javascript for our game logic, in order to achieve MMO scalability and high levels of service reliability.
It was a busy week! But we also got to meet several possible new technical partners, spend time connecting with our existing ones, and eat a lot of really great food in Barcelona. I had enough spare time to see La Sagrada Familia, and Sant Pau, and visit the old city.
I hear from the Unity folks that our main stage talk should be released as a video at some point here – we’ll be sure to share that once it’s available!