Creating a Game Engine 1 - Theory