Status of the Frontier
[p]When I released the last update, I got some direct feedback which was honestly the feedback I was already expecting because I have known this was a problem with the game for a long time and wasn't sure how I wanted to resolve it. The game world was designed from the beginning to lean pretty heavily on procedural generation because I always knew we would have a small team, however I had not initially anticipated it would just be me working on this alone, and the game world doesn't feel sufficiently alive.[/p][p]I want the world to have that "alive and busy" feeling of a space full of neat stuff that is going on all around the player. Without that feeling, exploration isn't interesting and players are trapped in a barren desert of fiddling with ship designs and not experiencing an infinite wayward terran frontier. I have always considered a number of different solutions for the problem, but they all were either too small to really solve the problem, or they were too big for a single developer to finish in a human life time.[/p][p]After the last update it was clear this problem had to be solved next.[/p][p]So after much consideration about my life choices I've decided it is either go big, or go home. I chose to go big. I needed to find a way to make an absolutely massive amount of world and story content, with the absolute minimum amount of developer time. I needed to solve some seriously tough engineering problems.[/p][p]I'm pretty sure I'm at least a little autistic, so below you will find a technical explanation of what I've come up with because I like bullet points. However first a summary:[/p][p]I've been grinding away hard at this problem trying to create procedural world generation that will fill an entire galaxy with stuff. I am planning to tack it onto the game as sandbox mode, i.e. open world mode. No main storyline, you aren't the hero or the protagonist, just gonna plop you down as a noobie space captain in a procedurally generated sandbox open world. The goal of all this is to make that world feel alive and interesting and deep, so that exploring the living dynamic open world can be part of the game. So that's the next content update I am working on (sandbox mode), and it is going to be a big one which is why it is taking a while.[/p][p]In the coming weeks I'll try to do another post with more details about the comprehensive list of upcoming changes, because it isn't just procedural world generation.[/p][p]So lets get on to the technical stuff.[/p][h2]Introducing World Engine[/h2][p]What do we do in computer programming when we have a small amount of time to process things, but there are an arbitrary number of them and they need to interact with each other? We build a tree! The solution I came up with is called world engine (Internally. I'm not making it a brand or anything) and it is a layer on top of the procedural galaxy generation in the form of a tree of stories. Lets be more specific.[/p][p]This is what our galaxy looks like right now.[/p][p]
[/p][p]Every tile in that grid is procedural. An algorithm runs for each grid who's only input is the grid's coordinates. Based on those coordinates the following things are generated by the algorithm[/p]
[/p][p]The nodes are represented here in a graph...however in the game each node has a physical location on the map, and a number of grids that it affects. Then each node can have stories added to it. Stories can do things like the following:[/p]
[/p][p]Oh and by the way. The entire world generates based off of an sqlite parameters database. Literally everything is in that database (factions, assets, locations, generation rules, recipes etc.) and so my hope is that mod makers will have the option of creating their own parameters database allowing them to define nearly every aspect of the game world for mods. Multiple parameter databases can be loaded for a single world generation so the hope is that you should be able to add and remove mods to configure your world generation the way you want. You can add entire star empires this way.[/p][h2]Development status[/h2][p]So I built this thing in an experimental environment that I've been toying around with for years (more on that later) and started playing around with it. I am proud to say it works great![/p][p]I wanted to make a big blog post bragging about how cool it was, but there was a problem. I immediately began having ideas of new things I wanted to build out of stories. I started playing with them, and I decided a proper announcement would carry more weight if I could show off the things this engine is capable of.[/p][p]Here is a short list of things I have been mucking about with in world engine using stories:[/p]
- [p]The position of the nearest star (and thus the light info)[/p]
- [p]the type of that star (and thus some constraints on system generation)[/p]
- [p]the distance to that star (and thus the temperature)[/p]
- [p]then some noise samples are taken at the grid's coordinates[/p]
- [p]place a station[/p]
- [p]configure the contents of a shop[/p]
- [p]place agents into a bar[/p]
- [p]create ships that fly around and do things[/p]
- [p]generate missions that show up in mission boards[/p]
- [p]set the prices of trade goods[/p]
- [p]Proper trade skill professions for crafting[/p]
- [p]data-driven warlords with proper difficulty and loot progression[/p]
- [p]an entirely new category of loot in the form of a complete rework of artifacts[/p]
- [p]proper exploration with exp and breadcrumbs and maps[/p]
- [p]interstellar travel and fuel infrastructure[/p]
- [p]dynamic faction wars[/p]
- [p]interstellar economies based on supply chains[/p]
- [p]living agents that have fully simulated lives[/p]
- [p]faction reputation tracking and reputation rewards[/p]
- [p]the entire story of humanity among the stars[/p]