Technical Design Document

The most intuitive approach in this game for me was pipeline-style architecture. The pipeline should update every tick. The time between ticks should be aggregated from data (Config and State). On an abstract level, we have three main blocks: data, view, logic. Logic changes data, view displays data.

All that's happened in the pipeline. So basically pipeline here is a sequence of view and logic components that call every tick. The view will be Monobehaviours, logic simple C# clases, all they should implement IStageble interface and all run by TickController class. Data will be presented like ScriptableObjects

Basic architecture

View pipeline stages

Logic pipeline stages

Specific mission logic stages

That's definitely not all classes that have to be written for this game, but it's covered 70-80%. Some parts will change, something will be added, but the game's essential picture will be the same