This project was a double semester group coursework where we had the freedom to design and develop a 3D game.
I took the role of team leader for my group who chose to do a 3D isometric dungeon crawler. We were more
interested in technical development rather than game design so we opted to make more of an engine than
a game. The idea for the game was a two player co-operative game where each player is in a different
dimension of the same dungeon and must work together to get to the end.
We spent a great deal of time designing our engine before we started writing code. We had a well defined structure and tried to abstract the actual game layer away from rendering etc so if we wanted to change that part of the engine we could without affecting gameplay, e.g. changing from an OpenGL to Direct3D renderer. We designed our own data driven asset and settings pipeline, using bitmap images for levels and for different layers in a level to represent objects, NPCs and so on. The vast majority of data also came from files read in at load time. One of our members focused on rendering and implemented a physically based renderer. Another worked on physics and collisions, all NPCs and players use force based movement and can push into each other. The third member worked on AI to have the NPCs efficiently chase the player. I created a robust input system that worked with mouse and keyboard as well as game controllers and can cope with a controller being disconnected during gameplay. I also spent some time creating a base for a networked version of the game, there was not enough time to finish this but I got to explore network programming and created a simple multi-user chatroom that let clients connect from both Windows and OS x.