ICT311 Advanced Games Design and Programming



In this unit we had to design and implement our own graphics engine we had to add networking support at least to the level of chat and communication synchronization and we could use external physics and sound APIís but the core graphics had to be application independent i.e. DirectX or OpenGL and it had to be all our own code.

Personal Requirements

This was a three person group based unit.
In the end I was responsible for creating the menu system, the Raknet based multiplayer system and starting the game with the required information such as difficulty level and screen size.

How it went

This movie is a fraps created intro movie of the menu created by me and edited briefly using moviemaker this movie shows the menu system which I researched designed and coded including the multiplayer and single player extensions and all features of the menu. The menu implements CEGUI system.

Click Here To Download

The following images show the parts of the engine that I was responsible for and any highlights and features of import.

The is the first screen upon loading of the game it has the standard menu options such as new game, quit game, options and so on. This image shows the new game screen where you can start either a multiplayer or single player game.
This is the first screen upon selecting multiplayer games, here you can specify what name you would like for the multiplayer session. This is the map selection menu it allows you to click on all correctly parsed maps each map has its own distinctive map image and carries different statistics on the map itself such as map size, number of players allowed and other important details when selecting maps. This page also allows you to select how you would like your multiplayer game to be viewable to other players i.e. come play twonk or btanks 6.6.
This image shows the multiplayer game ready to accept new players it shows the current map the map name all players currently in the game there is a chat area which displays messages and chat data to all players there are commands to boot ban and ping players. This image shows the three difficulty levels available to play the game once one of these values is selected the game is started with the requested data. The screen size setting specified in the options menu is also used to set the games screen size once the difficulty level is selected.

The actual engine I had little to do with implementing beyond general problem solving and integration of other code this is an image of the final game play.

This image shows the final game play there is a brief text based HUD showing the game goals the hand fires realistically with recoil then eventually returning to original position there are high detail trees anisotropic filtering, Level of detail tests, height based mapping, MIP mapping, procedural texturing, water effects, runtime terrain generation and MD2 model loading supported among other features. The game level is huge over ten kilometers square.

Problems Encountered

  • Very little team communication
  • Very few team meetings/coding sessions
  • First experience with networking and Raknet
  • First experience with CEGUI and menus
  • Problems Resolved

  • Raknet had alot of tutorials, online help and past projects I could look at and learn from, eventually I had a working client and server implementation that allowed me to host and join test maps and chat with all connected clients.
  • CEGUI had a very active forum, a huge amount of online help and examples the people there were of great assistance to me in creating a working GUI for our project.
  • Conclusion

    Without teamwork these projects seem to suffer a great deal. I wish i could do this unit again with a more active team so I could learn more of the graphics rendering side of things although learning all this networking and GUI stuff has been quite enjoyable as well.