This repo is not being actively developed, but the larger project idea is still active. This setup is user-focussed with significant considerations for parallezation, scalable archetecture etc., but I found that many components still need to be designed and this setup doesn't allow for fast enough iteration. In that spirit I've focussed on smaller projects that tackle an aspect of this in the hope that down the line I can take what I've learned and build the project I outlined in the design docs here. Right now I'm mostly focussed on a market based econonic engine and building out developer tooling to make the simulations more interpretable and debuggable while I'm writing them.
2022 update: A fresh take on this architecture with a much smaller scope lives in https://github.com/JoeHowarth/trade-sim
See
- Architecture for technical details
- Map Generation for Computational Geometry Final Project
- Population Design Discussion
- How to Challenge the Player for lamenting about traditional AI's limitation
Requires Rust nightly here
rustup install nightly
git clone [email protected]:JoeHowarth/Population-Simulation.git
cd Population-Simulation
rustup override set nightly
cargo build
In new terminal
cd vue-client
npm install
npm run serve
- open localhost:8080 in chrome
- Click on Map Debugger -> Generate Map
- In other terminal
cargo run
- now refresh client in browser
In future, won't have to generate map file separately.
Below is outdated
Grand strategy games like Europa Universalis, Crusader Kings, Civilization, Victoria and even Total War each immerse the player in a simulated world. Which aspects of reality they focus on while abstracting (or ignoring) the rest, defines the experience and the game. Crusader Kings stands out as the only game attempting to model leaders' intricacy and humanity. Victoria, through representing and tying populations' plight or prosperity to events in the world abroad. Each bring a different perspective, yet all feel somewhat static in how they model their world. None besides Victoria even allow for private economy, shifting populations, founding new cities, changing provincial areas, shifting national ideas etc. etc.
Inspired by the Europa Universalis 4 mod Meiou and Taxes and specifically Demian Sky, here I will explore creating a truly dynamic historical simulator and the technical challenges that come with it.
The world should feel alive.
- Population
- Wealth and Trade
- Ideology, Religion and Culture
- Food
- Settlements
- Knowledge and Technology
- Leaders
- Government Structure
- Diplomacy and Politics
- Geography and Climate
Eventually, all these elements should be linked together. Of course, doing any of these areas justice requires a monumental amount of work, so it's necessary to start with a smaller scope and focus.
Here's roughly how I envision this project progressing
- Workable proceducal map generator
- Technical infrastructure MVP
- Initial settlement placement
- Population dynamics
- Trade and economic systems
- Re-evaluation
Next we'll take a closer look at map generation and then the infrastructure behind the simulation