Our space adventure/survival game (Lilith Odyssey) holds a galaxy filled with more than 1000 unique worlds, 20+ interactive space businesses, and various points of interest. I want to share how we set the groundwork to generate game assets for this kind of scope and outline our approach. Hopefully this gives other developers (or even players) a framework for making a game map that feels broad yet unique. And, in some ways, describes how we designed the gameplay environment to be interactive with logical points of challenge.
Big Concept Means Keeping Details Simple
When the two of us settled on the (foolishly large) idea of creating an open world galaxy, we forged ahead with loose ideas: fill space with unique worlds, cosmic businesses and illusions of “life.” In many ways, we wanted to create a finite but massive galaxy that could be explored, mapped, and understood – similar to the worlds of Grand Theft Auto or Legend of Zelda. We also wanted it to make it all feel alive, as if the galaxy had been lived-in by beings for millenia. This was a very tall order for two devs making a game in their spare time, so for the sake of time and sanity we had to make concessions. How’d we set out?
- Low-Poly Aesthetic – Modeling all things (aliens, items, plants, ships, animals, visual effects) with a low-poly design helped create a whole swath of meshes we could mix and match when plugged in to procedural generation. The more assets we made, the more “ammunition” we had to combine things and create instances of variety. This was hugely helpful during planet generation. Additionally, because player perspectives are generally “far” from the characters (and objects as well), we could get away with minimizing details on plants, items, animals, ship parts, etc. Sometimes the eye only needs to grasp a key detail or two of an object to understand what it is, and then let imagination fill in the overall experience. Thank you, pixel artists.
- Toon-Shading and Color Pallets – We created specific cel-/toon-shaded color pallets for anything we modeled for the game. Our simple colors are based on pastel spectrums, with varying shades of vibrancy. This created consistent variance among specific items (plants, beings, animals, items), but also established thematic looks for the game as a whole. Vivid landscapes and spacescapes feel a little more unified. Here’s a small example of how a very simple flower prefab changes colors across biomes:
- Simple Rigging/Animation – Animals and aliens move rather simply, and we once again applied the idea of having a few key details tell the story of movement. For example, sometimes the sway or jerk of an animal’s neck/head is the biggest detail in imagining its size (birds and rodents are jerky, giant animals sway). Most importantly, we rigged creatures to accommodate the top-down view the player will have. We wanted animals to appear smoothest when seen from the sky, which meant animating details that are most prominent from that angle – whipping tails, flailing heads, flopping ears, etc. Admittedly, our animals would look a little wonky in an FPS perspective.
At first, we tried to randomly generate animals. And while they were charmingly freaky, they didn’t have the emotional connection we needed.
Though the variety in our animals would be limited, we felt that they looked more intentional and relatable if we hand-crafted them ourselves.
Generating Unique Worlds = Make Many Mix and Match Details
Planets, moons and asteroids are integral to gameplay as they hold resources and fuel that keep players alive and ships moving across the galaxy. Since players would land on these space rocks rather frequently, we knew we had to keep them fresh and intriguing. To generate the feel of unique worlds, we had to have enough environmental variables for them – details that we could manipulate across a breadth of occurrences so that no two places would ever appear the same. These details were:
- Planet biomes – 9 biome types (color pallets) with matching, low-poly trees/bushes/plants (i.e., desert, snow, wooded, and various alien-looking atmospheres)
- Animals – 20+ animals (from rodents and grazers to giant herbivores and predators)
- Civilizations – 7 civilization types with unique houses, monuments, and city centers.
- Enemies – 3 hostile groups, including gangs and raiders
- Businesses – 3 kinds of malls
- Garbage – Miscellaneous trash/pollution on land and sea
- Flowers/vines – Varying their concentration
- Rocks/Trees – Varying their concentration and tree design based on the biome
- Relics – 7 space monuments and 7 planetary relics
- Weather – Various atmospheric happenings like rain, fog, snow, meteors, methane hail, methane snow, and more
- Topography – The shape of the land (prairie, steppes, mountains, hills) and the amount of water present, from desert planets to those almost totally covered by ocean
With these variables defined, we created more than 300 star systems that, in aggregate, held more than 1000 types of explorable worlds, such as planets, moons, and asteroids. We even threw in gas planets for ambience!
The process was painstaking and somewhat gritty. Mind-numbing data entry. We worked in a simple database to name each star system, name the orbital bodies they hold, and then semi-randomly assign the above variable elements to them. I say “semi-randomly” because we connected certain variables for effect. For example, planets with particularly rich resources typically have some kind of hidden danger – whether that’s predatory animals or gangs and raiders who won’t hesitate to blast at the player. High reward should come with high risk.
All this data was pumped into a planet generation module that we coded in Unity. There were plenty of hiccups from human error, but nothing that couldn’t be identified and straightened out. From there, we positioned each star system in our galaxy to create solar highways for space sailing, risky shortcuts, and pockets of alien civilization.
Creating “Life” in Space = Create Points of Interaction/Challenge Across Vast Maps
We knew we needed to fill our galaxy with the appearance that it’s “lived-in,” evidence that this cosmos has been home to aliens across millenia. To achieve this feel, we created 20+ types of interactive space businesses that have different service capacities to someone traversing the galaxy. Some stations offer fuel, others provide medical aid, loans and investments, planet harvesting equipment, guns and ammo, XXX holo-videos, college books, dapper clothes, fast food meals and more.
- Space businesses – we first created a list of space businesses that we wanted. Because hand-crafting each one was a tedious endeavor, we narrowed the list down to less than 30, with room to add any more if early access communities find them fun. We also created two types of space malls, which allowed us to add a location that held a bevvy of different businesses – a neat little work-around that allowed us to add interactivity without putting more 3D modeling on our plate.
- Items – Inevitably, having unique businesses meant filling them with various items that they’d hold. And the items needed to have some sort of purpose, so each specialty item in a business can boost one of six player stats to varying degrees. It would be completely pointless to offer items without any gameplay relevance.
- Mapping – With star systems generated and placed, we filled in “dead space” areas with stations, rewarding riskier routes with fruitful businesses that held important services or items. From a gameplay standpoint, these space stations helped balance the risk and reward trajectories that come with charting your path across a particular stretch of space. If you take a less risky route, there may be a star mall waiting with refuel, repair, and shopping opportunities. If you stick close to solar highways, you may only see fast food stations and space gyms.
- Flair – In addition to space stations, we modeled 7 megalith monuments that float in space (which hold elements of galactic lore). Space is huge and thus visually kind of boring – it’s just a bunch of black with star specs in the distance. But having something large, colorful, and mysterious on the horizon offers interesting views. We also made it so that space is not always black! We threw science out the window to achieve a vibe where space changes color depending on the color of the star in the area. Red stars create a reddish hue, until you fly near a blue star that gently turns space blue – so on and so forth; yellow, orange, pink, and green stars abound. And lastly, we took our spaceship assets and coded them to fly around and visit planets and businesses. This was an element of movement in the stillness of space – a key impression that aliens were going about their lives, just as you are.
- Threats – Adding elements of danger to space travel gives a jolt to the navigational gameplay. There are the more passive dangers, such as running out of food or fuel, but we wanted to create something more direct. Shrugging off science yet again, we created space weather – more specifically, roving storms you can track on a ship’s navigation software. Without stabilizing ship parts, these storms severely knock you off course and damage ship attachments: engines, space sails, antennas, fuel tanks – including the ship hull itself. We also added “dead zones” in space that hold electrical anomalies that shut down ship communication systems, essentially blinding your navigation across a certain stretch of space. And then, there’s raider zones. These are areas spaces that have been identified by law authorities as having raiders – hostiles that can board your ship, hurt your family, take your loot, and beat up your vessel.
I wouldn’t say any of these systems are particularly complex. They are deepened by data, simple elements of interactivity and low-poly models. These elements combined work together to create variability across breadth, and life across stillness. Creating something vast is a unique challenge, but one that can be tackled by a variety of simple detail. And the main trick of those details is that they suggest just enough of something to prime the imagination to fill in the rest.
Hopefully this idea dump helps with conceptualizing little tricks and features that, when working together in your own project, can create a level of immersion that touches the vision you have for your work.