ICT309 Software for Games Development



This unit involved using an existing and proven game engine preferably open source and creating a game that had no violence or blood involved

Personal Requirements

This was a three person group based unit.
We did not establish roles at the beginning of this unit, in the end I collaberated on Research, programming, design, presentation and documentation.

How it went

This movie is a fraps created intro movie of the game play created by one of the other group members edited briefly using moviemaker.

Click Here To Download

Our group decided on a puzzle game as they are entertaining and seldom created in a 3D graphics world so there is potential market value to begin with we all tried to find different suitable graphics engines and finally decided on Irrilicht, most of the other groups were using it at the time as well.

We all started to experiment with the engine trying out the tutorials modifying them and so on I started to work towards creating a game unfortunately one of our group wasnít a heavy programmer and the other member went to Japan for several weeks at this mid stage during the main development phase of the project.

I kept on progressing I created a quake 3 map started implementing a world I came up with the idea of implementing a 3D variant of Sudoku.
after several weeks of infuriating hair pulling it was finally complete I had a map, a game system, a simple game that took about 2-10 minutes to complete meanwhile I was waiting for the other group members to join in and create their own variants of small puzzle games to complete the overall project.

I implemented a AVI class to play movies within a texture and spent a week messing around with it
I implemented a API for Audiere and a in-game movie player to play and repeat multiple movies with ease
I continuously updated the map and the game in general improving the data members and calling functions to allow the other members to easily integrate there games.
I created quading functions to divide the map into four distinct sections to speed up processing only checking for room activations within each quad
The other programmer now back from Japan began work on a word sleuth puzzle game, I implemented a menu system and all the corridors have ambient sound tracks which gradually fade out to silence after you leave each corridor.

I created a room system which sets a Boolean to activate any type of game I created a new game involving activating plates in a correct sequence to progress inspired by the 5th element with the activating the stones to make the women vomit up light to kill darkness(thatís my take on it anyway)

I created a door class to handle locking people in rooms until the puzzle is completed or failed the other programmer had by now completed a text version of his game but not tried to implement it in Irrilicht graphical system, the third team member created a door model for my door class and created a menu graphic and buttons with prompting on design improvements.

as far as I was concerned now the game was complete it needed some documentation but all music, sound effects, game states, menus and code were done

This image shows a light bulb 3D model I created in Milkshape 3D to explain the light source contained inside the quake 3 map throughout the game This image shows the rendered version of the above model in Irrilicht as you can see it didnít come out quite as I had intended but as I had so much more work to do at this stage of the project I left it as is and didnít recreate it with a better material(I could have the bulb completely transparent or completely opaque, the opaque version is shown in this image)
This image shows the overhead view of the map it is a relatively simple design created in Quark this was created by me in the first week or two of the project and I expected the creative member of our group to take it from me and improve it however with minor alterations it became the final map version for the game This image shows the overhead view again with the quading system overlaid onto the areas it represents one of the optimization methods I used to reduce overall processing requirements the quads are not evenly placed because the map wasnít created with quading in mind at the time so the rooms force the quads to be placed erratically.
There are effectively four map areas the "quad system" there are three designated quads if the player is not within one at any time then they are in the fourth undesignated area this is a cheap optimization technique to remove unnecessary over checking of position for random triggers for doors and music each room in the level potentially had another mini-game in it and if you checked for each event per time increment it can be a lot of extra unnecessary processing.
This image shows the menu system programmed by me with another group members quiet impressive graphic design at the moment you can see the mouse over effect on the Credits option This image shows the credits screen which is an image loaded over the GUI system the button options are remove and replaced with the new okay button to return to the previous options
This image shows the three difficulty ratings of the game which alter the length possible score and time playing this image shows my Sudoku game currently being played in normal mode the minimal HUD in the bottom left shows the elapsed time spend in the game and the current score. The Sudoku game is played by dragging the numbers 1-9 on the top right to any empty slot within the game the undo option undoes the last dropped number
This image shows the result of pressing complete with an incomplete and or an incorrect puzzle solution, a texture is displayed that plays a short movie indicating a win or lose state. In either case the doors will now unlock and allow the player to enter a new room This image shows the column or plate game we have just entered through the open door and the plate game was displayed now the door will auto shut and lock and we will be trapped in the room until this puzzle is solved.
The plate game involves memory and trial and error you must activate each plate in the correct order by running over it the plates will then move upwards activating when all are activated the program will check if the solution is correct if they are the plates will automatically deactivate and the doors will unlock, otherwise the plates will deactivate and the game is reset hence the memory part of the problem you have to remember the previous order and try a new one no clues are given at this stage although there is a in-built hint system for giving the player random hints to the required order of the cubes.

Problems Encountered

  • Lack of Commitment from group members
  • First use of Irrilicht and Audiere
  • Feature de-evolution after continuing lack of support from team
  • Problems Resolved

  • Lack of Commitment from team members was not resolved other than being reflected in thier group participation marks at the end of the unit
  • First use of Irrilicht was combated by using Irrilicht forums online support and help from other groups using the same API
  • First use of Audiere was combated by creating a wrapper class to simplfy the interface and experimentation along with documentation from the API
  • Feature de-evolution was a regretable fact of life in the project as desirable features were removed one by one as it became more apparent that i was not going to recieve any support from them as the project progressed and our plans had to be regressed to reflect this.
  • Conclusion

    It was the best I could do almost completely by myself while doing another unit and having never used a graphics engine before
    My group did there best at the end last week or two unfortunately we had almost no communication for far to long at the beginning when everyone should have been collaborating and the other lead programmer just didnt have the same level of commitment to the project as he came back from Japan in plenty of time to help but wasen't interested till it was to late.