Amethyst has been described as a “Game Engine-Engine”, which I have taken to mean “A framework that gives easier access to functionality that one might need for a game, while making few assumptions on how that game should be built”. My biggest gripe with this is that I will often be rewriting common utilities, such as a prefab loading system.
The question I have is - should common utilities be identified, generalized, and merged into Amethyst itself for better ergonomics? Better usability is the obvious upside of this plan - but because Amethyst is rapidly evolving, more utility helpers means more headache when trying to change code. As an example, the aforementioned prefab loading system might not even need to exist after Atelier is merged.
Another path is to provide documentation for these common solutions and structures. This has the benefit of not being directly supported by the main engine while still giving people a good base to expand upon. However, there still would be upkeep involved, just on the documentation team.
I want to know your thoughts. Is the situation I’ve described something you’ve experienced in your own games? If so, is this an issue that would benefit from action, or is it best to wait for Amethyst to further mature before adding more abstractions?