Hi. After vacillating on many different topics, I’ve settled on this one. As mentioned in the list of GSoC topics, I would like to get up to date on the latest about Destination Sol (pinging @Cervator and @vampcat ) . Also, I would like to discuss my understanding of what is expected for this topic. I don’t want to go off on a tangent and write a proposal for something completely different than what you have in mind![Smile :) :)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
So regarding DS’s updates – going through the code, I see that the asset system in the game already using the gestalt asset system. No work has been started to port the game’s Object Oriented entities over to an ECS system. Is this correct? Or is there some fork of the repository underway to port over to ECS?
Current OO system in Destination Sol:
Currently, all entities in DS are an implementation of the
A list of all SolObjects present in the game is maintained in the
With ECS:
With an ECS, the data (speed, position, texture etc.) and logic (update() ) will be decoupled from being inside a single SolObject.
The data will be contained in Components. An Entity will be a collection of components, and each entity will be assigned a unique ID. The logic will be handled by Systems such as renderSystem, collisionSystem etc. Each system will only act on entities which contain a specific set of components. For example, the collisionSystem will only act on entities with a rigidBody component. Systems may also act on events sent by entities.
Is my assessment correct so far?
Also, the GSoC post states:
I would personally prefer doing the renderSystem, inputSystem, collisionSystem and enemySystem in that order since those will get us a Minimum Viable Product, but you all know better than me![Big Grin :D :D](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
So regarding DS’s updates – going through the code, I see that the asset system in the game already using the gestalt asset system. No work has been started to port the game’s Object Oriented entities over to an ECS system. Is this correct? Or is there some fork of the repository underway to port over to ECS?
Current OO system in Destination Sol:
Currently, all entities in DS are an implementation of the
SolObject
interface. All different types of SolObjects have their own properties and implement their own behavior through update()
methods.A list of all SolObjects present in the game is maintained in the
ObjectManager
class. Each frame, this list is iterated through and each SolObject’s own update()
method is called. This system makes it very tedious to create new entities ingame.With ECS:
With an ECS, the data (speed, position, texture etc.) and logic (update() ) will be decoupled from being inside a single SolObject.
The data will be contained in Components. An Entity will be a collection of components, and each entity will be assigned a unique ID. The logic will be handled by Systems such as renderSystem, collisionSystem etc. Each system will only act on entities which contain a specific set of components. For example, the collisionSystem will only act on entities with a rigidBody component. Systems may also act on events sent by entities.
Is my assessment correct so far?
Also, the GSoC post states:
Just to be clear this means that I have to use the generic interfaces provided in the gestalt-entity-system (example), right?This will laying the groundwork for gestalt-entity-system, porting over at least some systems to use the new architecture (since porting the entire game over is not realistic in 3 months), and adding support for modules to be able to register their own systems via annotations.
Which systems and features do you suggest?This is a open idea, and with the correct subset of systems and features, it should be feasible.
I would personally prefer doing the renderSystem, inputSystem, collisionSystem and enemySystem in that order since those will get us a Minimum Viable Product, but you all know better than me
Last edited: