Galaxy227 -> RE: Distant Worlds 2 - Dev Diary #3 (8/25/2021 7:51:38 PM)
|
quote:
ORIGINAL: Mantuvec Hello to all. My name is Elliot Gibbs, and I am the developer for Distant Worlds 2. Interesting, Elliot is finally coming out of his shell to talk about DW2... quote:
This article has a slightly different focus. It will give you a behind-the-scenes look at a small slice of the game with an important on-screen role: the natural environment of the Distant Worlds galaxy. While this article is more technical, it will help you see “under-the-hood.” It will give you insight into how we solved some of the unique problems faced in a game as vast as Distant Worlds 2. I first read "technical," then "behind-the-scenes..." Blah, blah, blah. Ugh. What a waste of energy to anticipate this diary. Time to get bombarded with the mundanities of coding. quote:
What is procedural rendering? This refers to drawing various parts of the game without using hand-made art assets. In other words, an item is rendered on the screen without using any artist-created models or images. Instead the item is drawn using only software instructions – the item is rendered in code. Oh wow! Procedural rendering? I love this stuff. I've spent way too much time in map-making software, story generators, dwarf fortress... This is getting interesting. Perhaps I doubted Elliot too soon. quote:
That might not sound very useful. Why would you bother writing a lot of software to draw something in code instead of just having an artist make a 3D model, or draw a 2D image? Ah, yes. As a long-time user of procedural generation, I am now prepared to brag about how I already know this field better than most. quote:
That depends on what you are drawing and the number of different items that need to be drawn. So true, Elliot. So true. quote:
As you probably appreciate, in Distant Worlds there is a vast galactic environment, filled with many items to explore and discover: stars, planets, moons, black holes, nebula clouds, and many others. In Distant Worlds 1 (Universe and earlier) these items were mostly hand-drawn 2D images: there were a set of images for desert planets, another set of images for ocean planets, a set of images for nebula clouds, etc. In total there were about 250 images for planets alone. So there was a lot of hand-drawn art! Oh man... is he suggesting celestial objects are going to be procedurally generated? This could be huge. quote:
However there are some big drawbacks with static art: 2D images and textured models have a resolution limit that is constrained by memory, thus when zoomed in their appearance can become blurry or pixelated you typically need to draw each image or texture by hand, limiting how many variations you can realistically have. Although tools can help automate the generation of some images, you still have to store them and load them in game, which can take a lot of memory and storage Procedural rendering is an alternative to making a lot of hand-drawn art. It means writing software that knows how to draw a particular item. We can then draw as many variations of this item as needed, tweaking parameters to make changes to its appearance. Okay, yep. I know all this already. Let's get to the good stuff... quote:
In Distant Worlds 2 nearly all of the galactic environment is procedurally rendered. I FOUND THE GOOD STUFF quote:
That means that we use minimal hand-made art to draw the stars, planets, moons, black holes or nebula clouds in the game. Instead there are a set of custom shader programs that know how to draw each of these items: a star shader that can draw brightly glowing coronas of semi-transparent gas and plasma several shaders that draw planets with solid surfaces: some with a lot of mountains, others with deep oceans, others with glowing lava lakes a shader that draws planets with gaseous surfaces with colored bands and swirling storms another shader draws black holes other shaders draw nebula clouds Um... we're drawing entire PLANETS with procedural generation? Holy crap. I'm such a map nerd, this is huge. Everything will be so unique. I wonder how realistic it'll be. quote:
At the core of these shaders is a concept called fractal noise. Fractal noise refers to a set of special random values that are tuned for drawing a natural environment in a realistic manner. Fractal noise is a huge subject, which I won’t go into detail about here. But if you want to learn more you should look it up. You’ll see terms like Perlin noise and Simplex noise, which are good starting points. But how do these procedural shaders work? What process do they follow, and what do they allow us to do? Firstly they use fractal noise to make a unique height map for each planet, allowing us to generate mountains, valleys, plains, coastlines and sub-oceanic terrain applies shadowing from sun light on the mountains and hills to provide subtle realism to the terrain if the planet is populated , adds city night lights that follow the natural geography of the planet, preferring low-lying and coastal areas (including underwater cities in shallow coastal regions) provides light-emitting features like lava lakes and oceans adds cloud layers with animated storm systems and shadows on the planet below allows latitude-specific features: polar ice caps, equatorial jungle belts, deserts allows altitude-specific terrain: snowy mountain tops, forested valleys, grassy plains and coastal areas, shallow underwater continental shelves, deep ocean basins This is beautiful. I've never read anything more beautiful. Let me explain. Firstly, I was raised as a Star Wars fan, through and through. Secondly, I have a wild fascination for all things related to the development of civilizations. Economics, warfare, traditions, technology, the rise and fall of empires—you get the gist. Thirdly, I'm obsessed with maps. I make maps about everything. For example, earlier this year I mapped my last playthrough in DW:U (here, unfinished). Now here I am, a lover of space operas, society, and maps, finding myself reading a developer diary perfectly encapsulating all three at once! And to think I called this diary boring for being too "technical." Hilarious. quote:
Thus procedural shaders provide a vast improvement when rendering the natural environment in Distant Worlds, giving us an incredible level of detail and variety. The advantages of procedural rendering directly address the weaknesses of static art that we had in DW1: because the shader programs operate on each pixel on the screen, there is no resolution limit. You can keep zooming in closely to an item without blurriness or loss of quality by varying the input parameters for each shader you can obtain nearly infinite variety for an item, thus every planet in DW2 is unique because no static images or textures are needed, there is a dramatic reduction in memory and storage requirements "...giving us an incredible level of detail and variety." Fantastic. Words can't describe how excited that makes me. quote:
Procedural rendering also enables another feature: animation. The fractal noise used in the shaders can be multi-dimensional, so you can use one of the dimensions to represent change over time. This allows you to smoothly animate things that you draw. For example, we have the following in Distant Worlds 2: cloud layers on planets that move and change star coronas with prominences that rise and fall gas giant planets with animated cloud surfaces nebula clouds that smoothly change over time black holes with swirling vortexes of light and energy Thus procedural rendering helps to bring the galaxy of Distant Worlds to life, with motion and activity even in the natural environment. It gives infinite variety and depth of appearance to all of the planets and stars. I'm speechless. This is by far my favorite diary so far. Elliot is my favorite person. My mind, body, and soul belong to the DW2 development team. I will now devote my life to Code Force; start a cult, organize funding, and develop a means to make Elliot immortal. He will code for the rest of eternity, and I will play Distant Worlds 2. Perfect. quote:
You might be thinking: how does this affect modding? Can you easily mod new planet and star types into DW2? Or does this require special coding or shader skills? The good news is that modders also have access to these same shaders to make their own unique planets and stars – no special skills are required. By simply adding a few values to a file you can have a completely new type of planet available in the game. Your planet will have all the same features as the built-in planet types: hyper-detailed height maps with shadowing, animated cloud layers, city night lights when populated, planetary rings, etc. I've never modded before but a planet generator has me excited. I can make maps and play them in a simulated galaxy, teeming with life? Count me in. quote:
So how does procedural rendering improve the galactic environment in Distant Worlds? provides infinite variety – no two planets in the galaxy are the same. They all have their own unique geographical features and coastlines eliminates blurriness or pixelation. Everything remains sharp and clear even when zoomed in close allows animation of features like star coronas, planetary clouds and nebula clouds uses a lot less memory, thus freeing up resources for other rendering "Provides infinite variety..." This. A million times over. The other changes are great as well, especially the elimination of pixelation when zoomed in, but the infinite variety... this is what I needed. quote:
I hope you enjoyed this look at the galactic environment of Distant Worlds. I’ll be back later with more behind-the-scenes information about other features in Distant Worlds 2. You're doing god's work Elliot. I don't think I've ever followed the development of a game as closely as I have with Distant Worlds 2. Words cannot describe how much I look forward to playing. Thank you for your work, and for this diary. Now I'm hungry for the next one!
|
|
|
|