GameSoftwareEngineering 2DFramework DesignPattern