Integrate gestalt-entity-system in place of embedded entity system #3145
Labels
Category: Doc
Requests, Issues and Changes targeting javadoc and module documentation
Category: Performance
Requests, Issues and Changes targeting performance
Multiplayer
Affects aspects not visible in Singleplayer mode only
Size: L
Very big effort likely requiring a lot of research and work in many areas across the codebase
Status: Needs Investigation
Requires to be debugged or checked for feasibility, etc.
Topic: Architecture
Requests, Issues and Changes related to software architecture, programming patterns, etc.
Milestone
This is for now just a relatively short placeholder for a very large and complex issue with lots of history, not so much a viable issue for somebody to pick up that hasn't been ingrained in that part of the engine for a long time already.
Actually surprised we didn't have an outright issue for this before. Kinda-sorta related to #1234 (but that was focused on assets) or #1770 (which may be too out of date at this point).
@immortius extracted parts of our embedded entity system to https://github.com/MovingBlocks/gestalt/tree/develop/gestalt-entity-system a while ago, but it isn't quite complete enough to re-apply to Terasology yet. We had considered it for GSOC 2017 and the DestSol item had some related effort from @vampcat (and it was on @rzats' list if he had gone for it) but that's where it turned out to be too tricky still.
The new Gestalt version of the ES has a series of new and useful features, but the line is blurry for where Terasology's existing embedded ES would be cut in favor of having Gestalt plugged in. Some parts of the functionality/utility within the engine at present wasn't extracted, either from it not necessarily being considered within Gestalt's scope by @immortius or it just hasn't happened yet.
In the meantime the embedded ES has slowly encountered additional problems yet in some cases those wouldn't be issues with the new system completed and in place. The Sectors item for GSOC 2017 somewhat backed off from going deep into independent entity pools since the ES is likely to change a fair bit with this re-integration complete. Multi-world and some world generation / life cycle changes probably also would be better to do after.
DestSol probably remains the better initial candidate to overhaul with the external ES, although there may be a fair amount of work in pulling out remaining needed pieces from the embedded system within Terasology's engine first.
More documentation and tutorials would also be highly relevant to this item to help make Gestalt and developing with entities more approachable.
Alternatively it may be worth some thought to consider the overall direction here. Flowing into
gestalt-entity-system
has seemed the natural next step for me personally but thinking long term possibilities do we risk getting ourselves painted into a problematic corner somehow? Would we end up clashing / overlapping with anything sizable if we later adopt LibGDX? Is Android support (known issue: lack ofjava.nio
on Android means Gestalt hits issues, probably resolvable) very important to us? Will we risk performance issues? And so on.The text was updated successfully, but these errors were encountered: