Outcome is a proposed simulation architecture for testing future scenarios and ideas for human civilization development. It’s designed to be generic enough to handle different kinds of abstractions, and at the same time concrete enough to steer the simulation models towards a certain style of creativity.

Entity-Element pattern

Outcome simulations feature a set of entities, which themselves each contain a set of elements. Elements contain data in the form of named variables, and instructions in form of named executable states. Each element functions as a state machine, meaning only one of it’s states can be active at any given moment.

Processing the simulation is a matter of going through the entities’ elements and executing their current states.

To learn more about the specifics check out the docs.

Modularity and flexibility

These are two central aspects of the simulation architecture. They basically mean that simulations can be created and run using collections of structured files. Simulation data is not hardcoded.

All content for simulations, both data and instructions, is provided using Modules. They are versioned packages containing structured files that can be parsed and loaded.

Assembling a scenario can be as simple as specifying a set of modules.

Modular design allows people to build and run their own modules on top of already created existing ones, which is the key for enabling massive simultaneous collaboration on different aspects of the simulations.