Video: Unigine with OpenGL on Linux
Arthur Dent: “The Earth.”
Slartibartfast: “Well, the Earth Mark II, in fact. We’re making a copy from our original blueprints.”
Arthur Dent: “Are you telling me you originally ‘made’ the Earth?”
Slartibartfast: “Oh, yes. Did you ever go to a place – I think it was called Norway?”
Arthur Dent: “No. No, I didn’t.”
Slartibartfast: “Pity. That was one of mine. Won an award, you know.”
Procedural Generation uses algorithms to generate stuff, including textures, shapes, distribution of stuff, weather conditions, lighting effects, and oooh, lots of other stuff. In fact, with the right code, rendering engine, and a few tweaks to variables, you can make whole planets, detailed ‘realistically’ from high orbit down to individual blades of grass and flotsam floating in the breeze. Old Slartibartfast might be redundant, but I’m sure Elite: Dangerous (ED) could make room for him in an advisory capacity, especially for the ‘fiddly bits’.
It’s clear that ED is not going to implement planetary landing anytime soon. It needs to be done well, if at all. I’ll add my two-hundredths of a galactic credit by saying “Yes please, I want to be able to land on a wide variety of planets and do interesting stuff.” The Planetary landing thread on the Official Elite Forums includes a good discussion of what other people want, don’t want, or imagine might happen. And it is in this thread that I came upon many of the videos I (re)present here.
I’m not going to get further into the game-play advantages or disadvantages of using procedurally generated planets and what they could offer. I just wanted to showcase some of the, to my tiny mind, technically amazing and jaw-droppingly beautiful software that is around. Behold, the marvels of technology, often wielded skilfully by artisans. Are we there yet? Not in ED, but these videos give you some ideas of both how it could be done, and just how amazing it could and should be.
Weather, textures, particle effects and lighting:
The first video, with the misleadingly prosaic title of Unigine with OpenGL on Linux, (image above), was linked in the Planetary landing thread by Maxaren. It shows real-time rendering over custom-created terrain, and is therefore not a demonstration of procedurally generating ‘everything’, but of how Unigine, or similar, could add a “photorealistic render with all the hottest effects” and physics to a terrain (however generated). Sit back and drift wistfully through a short 1080p HD weather and lighting demonstration. Go on, you won’t regret it!
The second video, Tom Clancy’s The Division – Snowdrop Showcase @ VGX 2013, (image below), was linked in the Planetary landing thread by psyron. Again, it demonstrates a texture, particle, lighting and physics rendering engine. Here, terrain is still custom made, but I thought it another great example of just how far such engines have come. If you’re into shoot-em-up games, then you should also check out the trailer, using the Snowdrop engine in the first level of the game.
If ED is to truly do ‘planetary landing’ well, the lighting and texture effects are not really the biggest issue. The need for procedurally generated planets is paramount. We know the aim is, eventually, to have over 100 billion navigable star systems. That’s quite a lot. If we assume a low estimate of just 3 rocky planets per system, then that’s at least 3 times ‘quite a lot’. Custom designing the terrain for 300 billion planets would take a team of very, very many people, more than ‘quite a lot’ of years. Aside from the exabytes of data to stream or squeeze onto some kind of storage, we would probably not live long enough to see a thousandth of the project completed. The video below, Rocky earth-like planet, demonstrates I-Novae Studios‘ great success in this field. This very cool example was highlighted by burzum:
Video: Rocky earth-like planet
Jack Schitt linked a 3 year old video, Proland – SIGGRAPH 2010 live real-time demo, (image below), which highlights the fact that decent procedural generation of terrain, including dynamic bodies of water, has been around for a while. I also found a further video from the same team, SIGGRAPH 2013 – Terrain generation using procedural models based on hydrology, which has a fairly self-explanatory name.
Another interesting take can be found in the following video, (image below), also 3 years old and entitled Procedural planet rendering. I can’t tell you much about it, as I can’t read Japanese, but the phrases “quadtree-based terrain LOD,” “deferred shading,” “atmospheric scattering,” and, “virtual texturing,” appear in English in the video description:
Video: Procedural planet rendering
The last example in this section is the drop-dead gorgeous work by Adam Goodrich, Unity 3d Procedural Terrain Generation Engine – Latest WIP, (image below). Obviously, he is using the Unity 3D Engine. He explains that the project is, “Declarative – you tell the system the approximate features of the world you want generated, Procedural – the system then creates what you have asked for algorithmically.” It’s worth checking his YouTube channel for more of his work.
Cities and buildings:
Along with the 2 key concepts of procedural terrain generation and lighting and other effects, we will also want to see signs of intelligent life, human or otherwise, on at least some of the planets we land on. So, let’s start with a video that blew my mind when my friend, Oliver, first turned me on to it. The video, procedural textures – new graphics engine technology, (image below), is a demo that is, “itself is a 171KB executable, and all of the textures are made “on the fly” using an algorithm.” Made by theprodukkt, a sub-group of Farbrausch, the engine has been used in their game called .kkrieger, which weighs in at a tiny 96KB!
Here’s an incredible piece of work by Shamus Young, from 2009, Pixel City – Procedurally generated city, (image below). He has a great blog, with detailed step-by-step details of how he wrote and tested the code, which he released as open-source, and is only 234KB in total! In 2011, he also ventured into the field(s) of procedural terrain generation, with his Project Frontier, and you can see it in action in the video Frontier: Week 4, amongst others.
To finish up, here’s an incredibly slick looking piece of commercial kit, from ESRI, being demonstrated in ESRI CityEngine At GDC2014, (image below). This software, apparently, does a lot more than just procedural generation of buildings. There are lots more, often lengthy, videos available of their CityEngine technology that are worth investigating to truly appreciate the quality and resolution of the engine. I would like to add that I haven’t used their software, so I cannot comment on how good it is in practice.
Video: ESRI CityEngine At GDC2014
So, surely someone at ED could just slap a load of these techniques together and come up with a wide range of highly-detailed planets to land on and explore. I don’t mind waiting for a big fat juicy expansion somewhere in the not-too-distant future. If it’s a bit technically challenging, (and I have sneaky feeling it just might be), old Slartibardfast probably knows a Magrathean who could give some expert advice.