The Dark Forest

So I watched the 3 Body Problem recently and since I'm a huge fan of Terra Invicta already as well as Victoria 3 (a new one I've gotten into), I've been thinking about diving in to building a game along simulationist lines. Mostly because I think it would be a good experience and it's a good opportunity to delve into systems programming again since this would actually be a good fit for Rust in my opinion at least since I would definitely need to something performant to run the simulation along the scale I want (at least a million solar systems). I want the simulation to be relatively basic, the gist is the following:

Ideally the game would also be 3D so that the foils can show the progression of solar systems going from 3D to 2D to 1D as foils spread their influence and black domains would be represented as strange holes of blackness on the starmap. On top of that, it would be really cool if I could implement multiplayer, it would be a good excuse to try playing around with Elixir. The hard part would probably be getting the AI working and getting an AI behave as I expect, there's probably lots of weird scenarios with the rules I've described.

I think using Godot would make sense here since this is a relatively simple game but I'm not sure if Godot can handle so many star systems so I might need something custom or just accept a smaller system (100,000 is something I'd like to do at least). Worst case I can look at something like raylib which should definitely be able to handle this.

From a technical perspective, I would envision something like we have a set of solar systems spawned at game start. For "coolness" purposes, we move all solar systems around the galactic centre and move all planets within each solar system. The simulation itself would be in realtime just like Victoria 3 and each civ would be asked what it wants to do at each tick of the simulation. Some sims might decide to spend antimatter on colony ships, others might decide to invest in gravity transmission towers, others on solar probes or accelerators. At each tick, the galaxy would be shaped by each civilization and they would proceed closer to each other until they end up massacring each other. Once a civilization forms a black domain across a star system, that star system is effectively out of the sim except as a means of blocking foil expansion.

Another idea I'd like to incorporate is the idea of a deterrence play. A deterrence play triggers whenever a civ wants to attack another, a deterrence play can resolve in a few ways: - If the defender has no knowledge of the attacker, then the attacker has the right to attack - If the defender has no gravity towers, the attacker has the right to attack - If the defender has gravity towers, the defender has the possibility of transmitting the locations of the star systems of both the attacker and the defender. The attacker is made aware of this can decide whether it's worth the risk. - Sometimes, the defender can choose to not reveal locations allowing the attacker to destroy them as a reference to Death's End

The point of this is to make sure that gravity towers serve a purpose and that defenders always get a chance to respond to an attacker before the attacker can open fire. On top of that, the goal is to make sure that attacks have consequences, an attacker who reveals their location risks losing their empire so they need to make sure that they've protected themselves using bunkers and black domains. The gameplay loop effectively becomes, build up accelerators and solar probes as much as possible in your system, build gravity towers too, once you've maxed out your system build a colony ship to go outwards, build bunkers, solar bullets and foils if possible (foils should have a high antimatter cost to make sure they're hard to use).

Oh another thing is a black domain playthrough might involve using the extra systems to ramp up colony ship production. These colony ships can be used to evacuate systems surrendering them to the rest of the galaxy, then you can take everyone to your home system and create a black domain there to end the game.

For a genocidal playthrough, it requires making enough foils to destroy the galaxy which should require colonizing many systems (10 systems should be required to create 1 foil).

For an imperial playthrough, it's all about expanding to the rest of the galaxy by building lots of colony ships while also engaging in defensive measures like building bunkers and establishing black domains at the edges of your empire.