Vanilla entity types
There is a set of entity types that's provided with default (vanilla) module set.
Entity types included here were designed and chosen based on specific requirements for simulation models using vanilla module sets. These requirements relate to the specific modeling challenges for global socio-economic systems.
As noted earlier, outcome framework supports choosing entirely different set of abstractions as a base for simulation models. One exception is the universal entity, which is built into the simulation engine.
Region entity is a spatial entity, in that it represents a geographically defined area. Regions are defined using a single 2D map. Regions store information about their neighboring regions.
Region entity is useful for modeling social and natural phenomena that can be divided into smaller spatial chunks.
Organization entity type represents a form of social organization. Organizations are .
Organization entity is an agent capable of self-management and making use of decisions.
About organization input interface
Self management through decisions allows for easy switching of the organization’s input interface. Because the decisions don’t have to be bound to the "ai controllers" (guides), and because they involve really simple input, it’s quite easy to substitute any organization’s default input with an external one.
Imagining this in terms of a "gameplay" situation - player is simply “inserted” into the simulation as the “choice machine” for an organization of their choice, and they get to make all the choices which would normally be done by the appropriate guides. Of course there are more things involved to make this kind of approach playable, such as “outsourcing” some of the low-level decisions to the default guides, but the basic mechanism remains simple.
info Note: This interface can be used to create AI players that would learn how to make decisions “playing” as some organization entity. For the command line tool implementation there is a plan to include tools for easier organization input substitution. This will probably be implemented as a “player mode” where a sort of an API is provided for getting required information into and out of the simulation.
Global entity is the planetary level. In practice this can also encompass smaller celestial bodies, like moons. Global level is relevant for traits that are shared by different planetary/moon scale bodies. One example of such thing would be an atmosphere. Of course we’re talking mostly about things that are related to human operations, and so we’ll focus on global entities being places humans can possibly inhabit. Earth, The Moon and Mars are the chief examples and indeed the three main globals we’ll usually focus on in the context of our simulations.
2D variable maps exist on the global level.
Universal (built in)
For any simulation instance there is only one universal entity. This means that anything that needs to “exist only once”, as opposed to being duplicated for each instance of an entity as is the case with all other entity types, will exist on the universal level.
Things that are not replicable in any of the regional or global contexts, or things we just want a single instance of, exist on the universal level. One example use case for modeling on the universal entity level would be sun activity.