We should talk about how we tackle more complex changes to the Evoli code, without blocking momentum of the development. At the moment, we have a very basic set of behaviours (avoid, seek, wander, …) and creatures (carnivores, herbivores, plants) that are not entirely finished. Those will form the “canonical” gameplay experience and the implementations need to stay simple so that we can implement actual gameplay & balancing.
In addition, we have “experimental” creatures and behaviours that will not interact with the “canonical” gameplay experience.
We should split the code accordingly so that experimental code is split into “modules” or one “module”. For now, that would be separate folders. In order to use those experimental creatures, the components need to be registered and the systems need to be added, other than that there should be no calls into the experimental “module”
The call sites should also add a comment that the added system is experimental. We might be able to enable/disable those systems the same way we can toggle the debug systems.
@sunreef It would be great if https://github.com/amethyst/evoli/pull/68 would already implement that structure. I propose that you move all your changes from that PR there, even if, as you said, they might make existing components/systems obsolete. At the moment the systems you added are ‘dead code’, as they are not interacting with any of the canonical code.
If you plan to use them for the canonical code, please create issues outlining the changes, so that we can discuss how they relate to others in progress issues (e.g. avoid behaviour)