We have worked on a small demo game to showcase the capabilities of our engine in the form of a platform game called Meat Factory. It features a state based animation system with support for transition animations to play between states. To enable this we made an animation manager class that handles the updating of all animations. When playing an animation with the manager a lot of options are present, for example, you can set the frame rate of animations, decide if it should loop or not and also supply a callback function to be called when the animation has finished playing. So in the game, when going from one animation state to another we first check if there exists a transition animation between these. If a transition exists we play that one first and from its callback function we play the animation we originally requested.
We have also made a very useful trigger property that can be put on entities that should do things when touched by some other entity. This property became so general and useful that we’ve decided to add it to the core of the engine. It has attributes for what type of response it should send to an entity that touches it and if it should be removed on contact or not. In Meat Factory we currently use this property for pickups, spawn points, areas that kill you and also the level goal. When touching the level goal a new level is loaded and the player is spawned in that level. To keep the player between levels, we copy it the same way as in the editor and then simply paste it to the new level once it has loaded. To be able to change which level is the starting level as easy as possible we have made an entire level just for the player that we load first to get the player with the attributes we want and not have it attached to a game level.
This demo game will most likely be released along with the engine as a platformer kit to give developers some ideas on how to use the engine.