One of the advanced classes in the Game Development Concentration at NCSU was Game Engine Fundamentals. Throughout the course we had the ongoing assignment of creating a platforming game engine. The engine was built in Java and used the Processing library to help with graphics. The main features of this engine were handling collision, incorporating an event driven timeline system, and allowing multiplayer through a client/server interface.
The player controls the small green square and can move using the Arrow Keys and jump by pressing Space. The level can contain any number of static platforms, moving platforms, and killzones.
The engine was built with a Component GameObject Architecture. This allowed for easy object creation and deletion of objects and an easy read-in of level data, such as platforms and killzones.
A significant feature of the engine is the client-server multiplayer setup. This was implemented for 2 players, but it can be extended for any number of clients. Platforms come from both of the clients and are merged in the server to create one unified level. In addition to this, all events (such as button presses and collisions) were logged. Using a Timeline object, the player can press a button and either rewind or replay the exact actions that were just performed.

Space Invaders made with minimal changes
To test the extensibility the engine that was constructed, I created a Space Invaders clone using all of the same assets. The static platforms became barriers and the moving platforms became enemy ships. The player square lost the ability to jump and now “runs” on an invisible platform. The implementation of this game only took a few hours.