A migration of the engine which is being carried out between between January - September 2024 will completely overhaul it to a different kind of architecture.
The game engine is adopting a data-driven ECS approach(like the one in bevy) instead of a object oriented ECS (like for Unity's MonoBehaviours).
This means that components should not contain core functionality such as update and init on them, but rather implemented on systems.Components will only contain data for an entity.Systems will no longer contain a list of component and a generic update and init but will be functions which act on an ECS world.Entities will also become an identifier instead of a mapping of components.
Advantages of the migration.
Much faster update execution as components will be stored in linear memory and systems will be monomorphous.
System dependencies are straight forward as they are defined in the actual system instead of components.
Less clutter in components as references to other components are referenced in systems instead using a Query.
Less memory consumption as references to other components by a component are needed.
Disadvantages of the migration.
It might be confusing to wrap your head around if you are used to object oriented
In some cases,fragmentation of the archetype table may cause slow downs.
Why is this a deprecation and not an update.
The new architecture does not blend in well with the old one hence will cause huge conflicts between migrations.
The git repository also has an unclear commit history with many mistakes which make it on the changelog.I would like to start afresh on a new commit history.
What next?
I'll provide an update here when I release the new engine.
Introduction
A migration of the engine which is being carried out between between January - September 2024 will completely overhaul it to a different kind of architecture.
The game engine is adopting a data-driven ECS approach(like the one in bevy) instead of a object oriented ECS (like for Unity's MonoBehaviours).
This means that components should not contain core functionality such as
update
andinit
on them, but rather implemented on systems.Components will only contain data for an entity.Systems will no longer contain a list of component and a genericupdate
andinit
but will be functions which act on an ECS world.Entities will also become an identifier instead of a mapping of components.Advantages of the migration.
Query
.Disadvantages of the migration.
Why is this a deprecation and not an update.
The new architecture does not blend in well with the old one hence will cause huge conflicts between migrations. The git repository also has an unclear commit history with many mistakes which make it on the changelog.I would like to start afresh on a new commit history.
What next?
I'll provide an update here when I release the new engine.