📄️ Elixir
Core Language
📄️ Overview
📄️ Create Your First Mod
A mod as you know it is usually called a plugin. Both terminologies are interchangeable.
📄️ Shared Context
The shared context of the engine is created by the Entity-Component-System used. Every aspect of the game world is created using entities, components and systems that update the data of components. This is transparent. The idea is that even buttons, menus, are just entities with UI data attached. If you want to add a new button to a menu. You should be able to query for the menu and add a button as a child. If this is not possible its most likely a bug.
📄️ Game State
The game state is just a SQLite Database. This makes it possible to add custom data or logic to the game by simply registering them to the database. Updated the game using a time step is just a pipeline transformation of the data in the database. Modifying the game in any way is just adding/removing/changing parts of the pipeline. So even the most basic and simply aspect can be plugged out or plugged in.
📄️ Time step
An hour is the smallest time step, and every other step is just a multiple of that. So a day is just 1 24, a week 24 7, and a month 24 31. Every calculation or data transformation is done by the hour. So events do not happen in months but instead in X amount of months times 31 24.
📄️ Turn-Based
The engine mostly works by defining an update to the world state as one turn, the smallest turn we can do is progressing time by one hour. So a day would be 24 turns. It's important to understand that we won't focus on real-time performance, I strongly disbelieve that we could achieve something like 100 turns ala 60FPS.