Ash is a high-performance entity system framework for game development.
An entity system is a way to organise the code for a game that is efficient for both code execution and code management. It uses composition rather than inheritance for sharing features between game objects and uses a data-oriented approach to separate the game state from the game logic. This makes it much easier to manage the code and to manage the game state.
Ash is a small library that provides the core classes that you need to create your game with this more productive and performant architecture. Ash is designed specifically for games, focusing on the features of games that make them hard to manage and simplifying them. The entity system architecture used in Ash is explained in these articles.
Ash is prescriptive of the architecture for your code, but of nothing else. Your game may be 2d or 3d, using any render pipeline, physics engine etc. and compiled for any platform.
The source code for Ash is available on Github and is released under the MIT license. That means that you can do what you wish with the code, but you must retain the original license, including the copyright notice, when distributing the source code as code or as a precompiled library. There is no requirement to mention Ash in your game but some developers do choose to credit Ash in their finished game, which is nice.
No libraries are required for using Ash. But Ash includes extensions for optional integration with
We have a Google group for discussing Ash where we discuss the project, how to develop it further and how best to use it.
The Google group is the best place to ask questions and raise feature requests. If you have found a bug then please either raise it in the group or create an issue in Github's issue tracker.
If you want to know when we add features to Ash, please watch the project on Github, join the Google group or follow me on Twitter.
If you want to contribute to Ash, please join us in the group and discuss what needs doing, and fork the project and start contributing. I'm happy to receive pull requests for small improvements and bug-fixes. For larger changes and additions it's best to start a conversation in the group before you spend too long on your idea so we can coordinate.
The following ports of Ash have been or are being developed. These ports are not certified to be complete ports of Ash or to be production ready, they are here for information and to encourage involvement by others who would like to see Ash ported to their own favourite language/environment.
All these examples have full source code.
Ash is built by Richard Lord
and is developed using FDT.