This was my contribution to a Team Project developed in the 3rd year of my BSc Degree in Computing with Games Development.
It is a 2.5D Platform Game Engine / Technical Demo. It has been coded from scratch in C++ using OpenGL with elements of SDL such as SDL Input, SDL TTF, SDL Mixer and SDL's Windowing System. The idea behind the engine has been based loosely on the Tile Game see in Chapter 7 of David Brackeen's Book "Developing Games in Java", alough if you were to compare his code tomine you would probably see no similarity as I have implemented things in a way that seemed logical to me with minimal reference to any one else's code.
The Game World is made up of 3D Cubes/Tiles while all Sprites in the game are drawn in 2D. This was referred to as 2.5D - a 3D world with 2D Characters. It was felt that this would add an extra element of de-pth to the game and make it somewhat different to other platform adventure games that have alredy been developed.
In all it probably took just under 5 moths to make what can be seen on this page. I began programming in Januray and was "finished" by Mid May. All of my programming was done on a Mac using XCode. As SDL and OpenGL are platform independant I have also made a Windows build but it has only successfully run on about 50% of the machines tested. Also, very little attention was taken to improve the overall performance of the engine so you may find that it will be unplayable on some machines. (When I was developing as long as it ran on my Mac that was all I was worried about!!) . There are a number of improvements that could be made to the engine - Vertex Arrays, Vertex Buffer Objects, Display Lists, Better thought into the actual mechanics and logic of the running of the game to name a few.
The Graphics used are not all my own. I developed all the tiles and background images used in the game myself but a lot of the character animations (such as the Teenage Mutant Hero Turtle and the Donosaur) have been taken from other sources on the net. Unfortunately I did not save where I took the images from so I cannot give credit.
Currently I am working of developing an iPhone port of the engine, with the hope that I can make the finished product into a Game App that could be be released on the Apple App Store.
Here is a screen of what I have developed so far on the iPhone. It is not very much but I have only been working with the iPhone for the past few weeks and actually figuring out how to get Objective C to work with C++ has taken up most of my time (and what I have done is more of a hack to get my C++ classes to work, rather than an actual understanding of Objective C) .
Here is a video of me playing through the engine in a 2 Player game.
Mac App (this has been tested on a few Macs and worked OK - must be running OS X 10.5 or later)
Windows Exe (this has worked on very few machines so I am not putting it up- better to download the code and compile yourself - you may need to change the SDL Header files or refer to LazyFoo.net to get the SDL setup instructions for your machine)
Here are some screens that were taken during development.
Features
If a Game Pad is connected when the game is launched it will detect the pad and set that as the input device, otherwise the keyboard is used.
If two pads are connected then the game will detect this on launch and when the game is started you can play in 2 Player mode
Player can bounce/jump off the walls to reach higher areas or slide down walls to slow their descent from higher ground
As the Player progresses they will learn how to shoot fireballs and throw grenades
Main Menu screen detailing controls and credits along with options to start and quit game
Congratulations and Game Over Screens
Before each level a comic book page will appear. The Player can move the comic to read what is happening. If this was to be turned into an actual game the details of the story would be contained on the comic book.
GUI Detailing Players' health and power remaing- as player shoots their power decreases.
Depending on the angle and force when aiming grenades effects their distance thrown in the game
Levels loaded from text file - each letter corresponds to a different element in level.