Strategy Game Framework (With Map Generation)

Hi,

I’m creating a 4X turn based space strategy game (like Galactic Civilization, Star Drive, etc) and been looking through all the class types and game framework and I’m starting to get a picture of how things fit together but some examples aren’t very specific to how i want to use it and would love some feedback.

Here are my thoughts on how to currently setup the framework:

  • WorldSettings - store game\map config settings, Num Stars\Planets, Galaxy Size, empire count, etc… Though thinking I want these to persist between maps, for menu reading\modifying, should they be in GameInstance, anything else useful I should use World Settings for? Maybe store current galaxies generated parameters for reference, though GameState could do that too easier…?

  • GameMode - this will generate the Teams, Units, Start planets, etc. Am I correct using it this way so if I go MP later it will generate units\team\etc that will replicate to all clients?

  • GameState - Store an array of all empires, planets, stars, ships and other entities in play - treat like Global Variables. Not sure if this is right or if I should only store replicated Actors and similar here and try to store map objects (Planets, Stars…) elsewhere?

  • LevelScript - Use this to generate the Galaxy itself, Stars, Planets, anything that should never or extremely rarely change during play.
    It will grab variables from WorldSettings for galaxy generation parameters and I could have a different map for each galaxy types\layouts, Spiral, Cluster, disc, etc

  • GameInstance - Store Base Module\Ship Stats, types, race\empire names\types\bonuses basically any data that could be added to\moddable at some point later

Program Flow will be:

  • GameMode calls which level (Galaxy Type) to load, if MP could pass the galaxy gen parameters before loading level, am I right I using this for generating replicated actors etc but don’t really store much data here other than score etc

  • Level Script generates galaxy for all stellar bodies, reading GameInstance for parameters and storing arrays of pointers in GameState

  • GameMode calls its own “Spawn Content” function which will spawn all start ships, Empires, home planets, etc - also storing arrays of pointers for them in GameState

very rough outline but would love to know if I’m on the right path?

Thanks,