A few years ago I started working on a little game I have come to call SpaceAge.
It was meant to be an amalgam of what I perceived to be the best elements of Eve Online, X2 The Threat, Freelancer and Dwarf Fortress. I wanted to create a massive and immersive world that was capable of showing the capabilities of cool AI stuff using the really powerful CPUs we have today.
- An artificial economy that truly was self-sustaining and that the user could influence. NPCs would be smart enough to exploit trade routes, setup new stations, colonize new worlds, and innovate spaceship production
- A procedurally generated universe the size of at least our local star cluster.
- Dynamic factions/races and changing political landscapes.
- Realism in as many ways as possible, based on humanity’s current and anticipated space exploration
- Detail on some level down to at least 0.2 AU
I chose to write it in C# due to my familiarity with it and the ease it is to singlehandedly implement large ideas quickly. I wanted to make the universe as realistic as possible, so I did some research to find out what the theoretical concentration of stars/systems is in our galaxy. I also researched economic models and aspects of theoretical physics and orbital mechanics. For the first few weeks the implementation got pretty far and was fairly pleased with the inner workings. But outwardly felt like you were playing with Excel.
I needed to make the game intuitive and fun to play for the world I had created to best be enjoyed. But I had basically no experience in writing graphics engines, so I had to teach myself. I also had to teach myself how to use co existing threads, thread synchronization, resource prioritization/management, custom forms utilizing this high level language. I have more of an electrical engineering background. I know how to code well, but had never really coded an app that had so much user involvement. I took a few CS classes and algorithms classes in school ( O(n) ), and they really came in handy here!
I got some graphics code in but had to optimize. I unhappily dusted off my advanced trig skills I learned in college. I redesigned, redesigned etc. After half a dozen or so massive code refactorings I got things working, at least on a basic level. Next time I really should white board more things out!
I got to the point to where there were the game had a basic control UI, different start systems, merchant vessels, inventories, markets and basic combat. Things were coming along. I felt like God in charge of such a large virtual universe that was all mine. But I began to become overwhelmed by all of the details.
Life happened, and I started to get really busy in my spare time. The project stalled.
I really think I want to redo to game be solar system wide, not star cluster wide. Maybe in the future…
I am posting screenshots, code and executable here for anyone curious…