During the course of the Axyz project, I created a very flexible entity system, along with a tightly connected in-game level editor that had let us quickly create and iterate upon ideas and easily view the state of the game world from a debugging perspective.
The ECS in Axyz is purely data-driven. Components contain pure key-value data, and systems act upon the components in a cache-coherent manner. A game entity would then be defined as a simple container, containing zero or more components and child entities, creating a hierarchy. Components are strictly defined in XML schema language, making them easily serialize and de-serialized, providing helpful reflection capabilities to the engine.
Due to the reflection capabilities of the ECS, an in-game level editor could be created with ease, where every component and its inner fields could be presented and edited in real-time by the developers, providing helpful debugging and world creation capabilities.
In this video, one of our artists demonstrates the editor’s capabilities by creating a still scene.