Awesome
game-engine
This is an educational game engine for 2D games.
It uses an entity/component architecture. This means that a game is defined as a set of entities (with components). These entities may come and go. Their components may change. But at any given time, the state of the game is fully defined by its entities and their components.
In fact, the notion of entity is really just: a bundle of components. You can easily construct new entities from existing components.