Inner Worlds I: Vladimir Romanyuk, the Space Engineer
On exploration, space, and procedurally generated worlds
After I first read about Space Engine in The Lifted Brow, a seed was planted in my head. But before that seed has grown into what you’re reading now, I was simply curious.
Space Engine is a virtual catalogue of celestial bodies. But with a twist — where the data of Hipparcos and NGC/IC catalogues ends, algorithms take over. Majority of the billions of stars, planets, and nebulae you can visit do not exist in the physical world. But you couldn’t tell which ones, because they are procedurally generated according to the laws of physics. For all we know, there could be identical objects somewhere deep in space. But it’s irrelevant anyway to the community of Space Engine. They spend hours travelling in search for interesting places. They take pictures and share them on Reddit and forums. They discover miracles of nature with nature not involved.
At first I was as much fascinated as skeptical. Space Engine leaves you alone in cosmos populated with billions upon billions of celestial bodies. If you spent the rest of your life exploring it, you would not live to see one percent of what’s there. But Space Engine is not a game. It has no goal, no actual gameplay, almost no interaction. It’s just you and the space. So, what to even do there?
My skepticism didn’t last long. After I launched Space Engine, I was sucked in for hours. I was watching sunsets, sunrises, and northern lights in places no one watched them before and no one will ever see them again. The sense of discovery is real even if what you’re discovering is not. Enchanted by Space Engine, I set out to interview its creator, Vladimir Romanyuk.
It’s almost absurd to think an actual full-sized universe could be created by one person. But it didn’t stop this Russian software developer from doing just that. Vladimir took me by surprise with the analytical, calculated approach to his own creation. He spends almost all of his time with Space Engine debugging, and close to none exploring. Neck-deep in code and algorithms, Vladimir thinks about Space Engine in terms of a product roadmap, bugfixes, and technical tweaks. There’s almost no philosophizing, no starry-eyed talk coming from him. It’s startling how down to earth he is, considering that his work is about everything but the Earth. On the Space Engine forums he goes by a spot-on nickname: SpaceEngineer.
Wojtek Borowicz: So… is Space Engine a video game?
Vladimir Romanyuk: It’s a complex question. If you consider exploration of a virtual universe gaming, maybe it is a game.
The oldest entries from Space Engine’s website are from 2011. Is this when you first released it?
Yes, I launched it together with the website. Some earlier builds were also released on a Russian gamedev site a year before.
That’s a big one, so let’s get it over with. Why are you doing it?
All my life I’ve wanted to explore the universe. I tried some planetarium apps, like Celestia, but they’re too limited. And as a programmer, I had ideas how to get around these limitations. I started to experiment with procedural generation and rendering a galaxy. Thus, Space Engine was born.
You used the Hipparcos and NGC/IC catalogues to recreate thousands of objects, More than anyone would ever be able to visit on their own. But Space Engine lets people explore much more than that. There is a whole universe of fictional stars and planets. Why did you include them? Why not just use what we know is really there?
This is what Celestia does and it is one of the limitations I wanted to fix. Why should we look at the far side of the Milky Way or at the other galaxies and see an empty, starless sky if we know there are billions of stars in each galaxy? Why should we look at a lone star with no planets if we know that each star has plenty of them? Procedural generation can accurately simulate the universe. In Space Engine, I use statistics and actual astrophysical laws to do that.
What determines how the fictional objects look like, their size, atmosphere?
There are many parameters that control and constrain the generation, all based on astrophysics. They are embedded in the code and I use random functions and fractal noise functions to make the model as close to the real universe as possible.
What do these functions do, in layman’s terms?
Random functions generate a sequence of a pseudorandom numbers, starting from a number called a seed. They are used to calculate various parameters. For a planet, it can be mass, distance from a sun, atmosphere density. The same seed will generate the same sequence of numbers. For a planet, the seed is computed from properties of the parent star. So a planet will be the same each time a user launches Space Engine and goes to that planet.
The fractal noise functions are two and three-dimensional versions of the random function. They generate a smooth, noise-like image, and I use them to create the surface of a planet.
In Space Engine people can only witness the universe. But space can be lonely. Don’t you sometimes want to add interaction, so they could leave marks of their travels for others to find?
It’s hard to implement in the program because of its procedural nature. It would require letting people fiddle with the algorithm that governs the universe. But it is possible. After I implement all planned features, I will think about interaction.
You have added support for Oculus, the virtual reality headset. Is this the best way to experience… well, a virtual reality?
Yes, the experience in Oculus Rift and HTC Vive is amazing. And it will get even better with the progress of VR hardware. I think virtual/augmented reality displays will become standard interfaces in all computers, so VR support is a must-have for applications like Space Engine.
Do you spend more time tinkering with the code or actually exploring the virtual space yourself?
Coding takes 95% of my time with Space Engine. And 95% of these 95% is searching for and fixing bugs. But sometimes at 5 AM I stumble upon a planet that catches my interest and I would still spend three hours just flying around. Especially if I’m wearing a VR headset.
What’s your favorite place out there?
I like big, Earth-like moons near gas giants. I can explore them for hours, looking at the other moons dancing in the sky. Sometimes I’m sad that the Earth has only one moon.
Do you ever come back to those moons, or you’d rather keep discovering new places?
I add interesting places to a list and return when I want to debug something. Having well-known places is good for comparing how the graphical engine works after changes in the code. Moons also have complex lighting, that’s good for debugging too.
Most of the beautiful moons and other gorgeous locations in Space Engine will never be seen. It’s just too vast, even for thousands of explorers. Isn’t it disappointing that so much of the world you’ve created will remain a mystery, even to you?
No. I don’t think about it that way. Space Engine is a mirror of our own universe, which is incredibly huge and no one can visit every galaxy, much less every planet. So why would I be disappointed?
You wrote on your website that you don’t plan opening the source code of Space Engine. Why? How do you think it would feel like to have someone else modify your world?
Space Engine already supports modding. But it’s closed source because I plan to commercialize it in the future. I’ll make a space exploration game with ships and release it on Steam.
All in all, why do you think people play Space Engine?
Maybe this is because humans are explorers by nature. There are a lot of people interested in space exploration all around the world, and that’s our last frontier. Well, unless we discover parallel universes…
Or maybe we will master building them and VR will become our primary method of exploring the world(s). You think we’ll live to see that?
Well, Raymond Kurzweil and others predict the technological singularity will happen between 2040 and 2050. That’s well within the lifetime of many of us. Nobody can predict how our world will look then. Will it be like The Matrix, or the start of interstellar expanse, or the extinction of life on Earth… or nothing significant.
Back to more earthly subjects. You’re accepting donations for development of Space Engine and goals include releasing an software development kit and a fully-featured online game. Why not take it to Kickstarter and make it your full-time job?
It already is my full-time job, thanks to donations from the website. Kickstarter could be an option to raise more funds and hire programmers to speed up development. But maybe I can also do it by releasing the early beta of the game, not just the planetarium, on Steam.
So what do you do when you’re not busy maintaining a universe?
Various thing, not unlike what other people usually do. But Space Engine is my hobby and a full-time job.
Liked that? Read other conversations about imagined universes at Inner Worlds.