My first step was deciding what technology I was going to use to make it. Visual Studio XNA caught my attention, but does not work under a VM and I didn't want to interfere with my Delphi development environment. So I am using Delphi instead.
Also helping that along is my first project is really a 2d game overview and control. I don't need 3d until I start simulating space battles, which I know full well I will never get around to doing :-).
My initial preference was to use Delphi.Net. Why? Using .NET would allow me to interface with other languages, just in case anyone else joined the project but preferred, say, C#. Also, I thought I would use XML (for much the same reason) to store game data. By using .NET Serialization I figured I would save myself a lot of work with loading and saving.
I started to flesh this idea out, and quickly realised that .NET Serialization was not going to be the silver bullet I imagined. In fact, due among other things to the complexity of serializing images (TImages anyway) it became murder. It was already more work then I considered acceptable to make it worth while.
So I went back to the starting board. Then it occurred to me that a game state (when saved) was just a database. Now THERE is something I am more familliar with! So for good or for bad, I have ended up falling back to what I know. Delphi + Database.
People installing a game don't want to install a database engine, so I needed a database which didn't require that. Again, my old faithful came to my rescue. Firebird. The embedded (Single redployable DLL) method would be perfect.
Again, I wanted to test this theory. My goal was to impliment the load/save functionality first as this would allow me to have a shared set of classes which would have their own smarts to build themselves from memory and save themselves back to the database. These could be used in the game itself and the editor (Handy....).
So, on the first day I built the data structure for the galaxy and game info (Who's turn, etc), sectors (groups of planetary Systems), Systems and Facilities (manufacturing). This also gave me the class structure I would want.
Next, I started a new project with a form (for the editor which I was going to start with) and a shared directory with the classes in it. I then began laying out the class properties and method husks.
That was about as far as I got before going to bed and becoming tied up for the next week or so. Only a couple of hours work, and no real functionality at all yet. Depressing, but I have some patience....