Developing A Game Engine