Updates Refactoring Destination: Sol to use ECS Architecture

IsaacL

New Member
GSOC/TSOC 2020
This past week, I created a Health component, a Damage event that acts on it, and a system to handle that interaction. I've also made events for handling Forces and Contact. I'll be posting about my progress in detail here every other week.
 

IsaacL

New Member
GSOC/TSOC 2020
This past week, I've created a removal framework, made a Stasis component for entities that don't need to be actively managed, finished contact/force handling, and started a way of interacting with graphics using ECS. I'm working on converting the remaining graphical structures to use ECS as well.

I'm having an issue associating a "Body" (from libGDX) with an entity, because a Body can't be put into a component (since it has functionality). I can do most of the coming week's work before figuring that out, but it is necessary for completing Asteroid creation.

I have three open PRs: Forces, removal, and graphics. Those three, along with Body and the rest of the graphics logic, comprise the rest of the core structure for Destination: Sol entities.
 

IsaacL

New Member
GSOC/TSOC 2020
In the last week, I've created a system for interacting with the Body object from libGDX, which is responsible for the physics handling of an entity. The new system sends location update events and handles force events. If an entity should have an associated Body, but doesn't, the system sends a GenerateBodyEvent so that one will be created.

I've continued working on my graphics PR, and I hope to have an updated version ready for review soon. My removal PR and my Body PR are in the middle of the review process.

This coming week, I intend to create the framework for ECS-based Asteroids and Transcendent entities. Once I have done so, it will be possible to create instances of them from prefabs.
 

IsaacL

New Member
GSOC/TSOC 2020
This past week, I developed a system from drawing entities. It has a few bugs, so it's still under development. That PR can be found here. After I finish that, I'll make the changes to the Body PR that @NicholasBatesNZ suggested.

Next, I'll make the structure for ECS-based Asteroids and Transcendent entities. Developing the graphics system took longer than expected, so I didn't do Asteroid/Transcendent yet. I will make them this week.
 

IsaacL

New Member
GSOC/TSOC 2020
Last week, I made a system for handling the creation of Loot objects whenever an entity with a DropsLoot component dies. The PR for that is here. As of now, the Loot PR doesn't work, because the EntitySystemManager doesn't inject the instance of SolGame into the systems, since the game instance is created after the injection happens. In my testing, I made a workaround, but it would optimally be injected by the ESM along with the rest of the context.

I've been working on making a prefab and systems for asteroids, but I haven't finished yet. I'll hopefully finish within the next day or two.
 

IsaacL

New Member
GSOC/TSOC 2020
This past week, I've made a prefab for asteroid, and I've also made the relevant systems. The PR currently has a few kinks that need to be ironed out, but the basic code is complete. I've also refactored the code in SolApplication to make the EntitySystemManager after the game is created, so that it can inject the game-dependent classes into the systems that need them. That's part of my Loot PR.

In addition, I've begun work on an ECS-based version of the Transcendent class. It's not ready for review yet, so I don't have a link to attach, but it's currently in progress.
 

IsaacL

New Member
GSOC/TSOC 2020
Last week, I refactored the Transcendent class to use ECS architecture. The new PR, Starport travel, is completely finished insofar as its internal structure is concerned. However, it can't be implemented practically, because its usage interacts heavily with SolShip, so that need to be refactored before the PR can be used and tested. Therefore, it has been marked as a draft.

I'm trying to iron out the remaining bugs in Graphics and Asteroids. When I finish that, I'll get started on SolShip.
 

IsaacL

New Member
GSOC/TSOC 2020
Over the past two weeks, I (with a lot of help from my mentors) got the graphics working! It's fully functional, and has aready been merged. I've also gotten asteroids working, although there are still a few kinks in the contact handling that need to be ironed out.

I'm finally up to SolShip! This is the section of my project with the biggest practical impact, so I'm very excited :)
 

IsaacL

New Member
GSOC/TSOC 2020
Over the past week, I've restructured entity removal and contact handling. Previously, contact handling wouldn't cause damage, and destroying an entity with a Body at certain times would cause the game to crash. In my new PR, collision and destruction are handled smoothly.

Next, I'm working on getting projectiles to interact cleanly with entities. As of now, they pass right through.
 
Top