Designing the Population System

Population Design Document How people are represented determines the flexibility, level of detail and performance of the above societal model. A vast number of attributes apply to people including: health, age, sex occupation, skills culture, religion, race ideas/mindsets/attitudes, (imperfect) information relationships, membership of groups location For influential people (ie. actors), all these factors can be modelled on an individual basis, however this approach clearly can’t work for the nameless masses. Therefore an important design decision is how to balance the trade-offs between detail, implementation flexibility + complexity and runtime performance. [Read More]

Architecture

Architecture High level overview of each module’s purpose and function. Modules Terrain Generation World Building / State Initialization Server 3. Simulation 4. Networking Client UI Graphical Map Terrain Generation Constructs semi-random continents, islands, heightmap, biomes, raw resources (metal deposits etc.). Equivalent of Comp Geom final project, but bigger and better! Should use plate tectonics for world level, probably external library Then ‘up-sample’ using existing techniques to gain higher detail Separate process Either CLI or GUI Probably long-running Choose from several candidates before proceeding to World Building Export data in common format for re-use (protobuf, json, …) World Building / State Initialization Take terrain & climate and produce initial state of world before day0 [Read More]

Terrain Generator Module

Terrain Generator Module This module will produce the base maps that the rest of the world is built on top of. This module should be standalone and therefore easily runnable and configurable without the rest of the project. This has several advantages: Faster compilation times => faster iteration feedback loop Ability to generate many candidate maps and select the most interesting ones to build a full world with. Loading a world from disk is, generally, much faster than having to recompute it each time from a seed => faster simulation load times. [Read More]

World Building Module

World Building Module Purpose This module should take a series of map files produced by the Terrain Generator as input and construct a full initial state that the Simulation Engine can process. The map files should contain spatial data on terrain, geology, water systems and biomes. While some of these factors may eventually be simulated on the game’s timescale, most don’t change rapidly enough to justify the initial complexity and will likely initially be static. [Read More]