Hello! I'm working on an idea for an interstellar 4X strategy game, and although I have a lot of experience as a web programmer, there are a number of challenges here and I could use some help figuring out my "stack". First, I'd like to use HTML/CSS for my display, even though I initially intend the game to be a single-player desktop game; the browser is a powerful design tool and responsive to changing window sizes, so I need to know how to do that.
Second, the simulation is going to get big, possibly millions of rows of data tracking different objects and attributes. I believe I'm going to need a real database as the backend. Maybe PostgreSQL, because I know it and like it. But -- I'd like to package and distribute my game as an "app" or "installer"... can I bundle a real database into it and yet keep that transparent from the user? How?
Third, I'd like to build an interactive console into the game, so the user can issue commands to his planets and starships by command-line commands. These would allow him to interact with game objects and perhaps write little scripts for them. (My thinking is that this will allow him to automate the many little tedious micromanagement issues that happen in 4X games when the empire gets beyond a certain size later in the game.) I have no idea how to implement this (either the console itself, or the commands and scripts that the user can enter).
I'm an experienced developer of web apps, and Python and Javascript are my best languages. I'm very good at databases and data modeling. But I've never made a program that downloads or is installed on desktop/laptop consumers and is packaged with all its dependencies as an app or executable. To recap, my big architectural challenges are how to implement an HTML/CSS based screen to render my visuals, how to employ a serious database under the hood, how to implement a console and interactive scripting at runtime, and most of all how to package all these things into a standalone program. I'm willing to learn a new language or platform for this, but would also be happy to be able to use what I already know.
So... any good ideas for me?