Curriculum Vitae
You can download my CV in Doc Format or PDF Format.
Personal Projects
Listed below is a selection of personal projects that I have worked on in my spare time including some work based on University work. All the projects require Windows XP or greater to run, as well as a video card that supports OpenGL 1.2+.
I have also put together a small sample pack that contains four demos from the projects below.
- Sample Pack [ .zip (~3,500 KB) | .rar (~3,500 KB) ]
DelGE
Overview
- Language(s) used: C++, Squirrel
- Libraries used: OpenGL, FMod, FreeImage, FreeType
- Project type: Library & Script Interpreter
Downloads
- Source Code [ zip (~3,356 KB) | .rar (~2,516 KB) ]
- Engine Examples [ .zip (~3,323 KB) | .rar (~2,827 KB) ]
Requirements
- To build the project you will need Visual Studio 2010
DelGE is a 2D game programming library which I wrote in C++. The goal of this project was to learn about game engine design while developing something that I could use for later projects. I designed the engine using a module & interface style as I also wanted to learn techniques for abstracting functionality, meaning the modules are the external parts that users interact with and interfaces are the implementations of module functionality. By designing the engine in this manner I was able to learn a lot about methods of Inheritance and Object Orientation within C++, and how these can be applied in a functional way.
The core engine features:
- System management
Handling of system events. - Window management
Creation and management of windows. - Input module
A state based input system where you can query the state of keys and mouse buttons. - Graphics module
Allows for 2D rendering and provides classes and functions for doing this, such as DrawTexture which draws a textured quad to the screen. - Audio module
This module provides two classes; Music and Sound, which can be used to play audio files
After developing the engine and having written some examples of usage, I decided that I wanted to add scriptable layer. This turned into the sub project I call DelGE Squirrel. I ended up writing a wrapper for my engine that would allow you to write fully functional programs without even having to touch C++. By doing this sub project I learnt a lot about how you would go about implementing a scriptable system and the advantages of doing this, such as the fact that you can now have a smaller portable coding system as all you need is the wrapper exe and your scripts.
I am still developing this engine, adding features as I do. To help me better manage the updates I decided to make a Google Code page
for the project, this can be found here:
Google Code Page.
The image below shows what the audio example looks like running:
DelGE Squirrel Editor
Overview
- Language(s) used: C#, Squirrel
- Libraries used: ISharpCode.AvalonEditor, AvalonDock, WPF, .NET 4.0
- Project type: Application
Downloads
- Source Code [ .zip (~397 KB) | .rar (~361 KB) ]
- DelGE Squirrel Editor [ .zip (~3,062 KB) | .rar (~2,533 KB) ]
Requirements
- To build the project you will need Visual Studio 2010 with C# and .net 4.0
- To run the editor you need .net 4.0
Once I had a wrapper for Squirrel I thought that it would be nice to develop a better way to develop programs for it. As it stood to begin with, the only way you could write programs that used DelGE Squirrel was to create the correct folder structure, copy the wrapper exes and dlls, then begin writing the scripts in a text editor. I didn't think this was a very nice approach so decided to develop a small application that would provide a better environment to develop in.
The solution I ended up building, was written is C# using WPF. I decided to go this route as I had not used C# before, nor WPF so it would be a good application to try and write using these technologies and learn more about them as I did.
The image below shows the editor with the Mesh example project open.
DelGE Pong
Overview
- Language(s) used: Squirrel
- Libraries used: DelGE Squirrel
- Project type: Game
Downloads
- Source Code * Comes with DelGE Squirrel Editor, the code can be opened in the editor and is found within the examples folder. *
- DelGE Pong .exe [ .zip (~2,718 KB) | .rar (~2,195 KB) ]
DelGE Pong is a game I wrote to test some new features of the engine. The game was written to give a reference point for writting a full game using just DelGE Squirrel, as such it shows many of more advance features such as 3D projection and mesh transformation.
I am currently using this game as a test project for when I add new features, however the game here is a fully functional clone of Pong which is for 2 players.
The images below show the game running.
HighGUI3
Overview
- Language(s) used: BlitzMax
- Project type: GUI (Graphical User Interface) library.
Downloads
- Source Code [ .zip (~1,546 KB) | .rar (~1,442 KB) ]
- Examples [ .zip (~8,642 KB) | .rar (~8,064 KB) ]
Requirements
- In order to build you will need BlitzMax
When I first decided that I wanted to learn about programming I had to choose a language that I would learn. During secondary school I heard about a language called Blitz3D and decided that it looked like the kind of thing that I would need to learn. The language looked promising as it offered a simple interface for developing 3D application, however at the time I was still very much learning the basics and so didn't write anything that complex in it. By the time I was at college the developers of Blitz3D were creating a new language, that I would move on to learn, called BlitzMax.
After developing my skills in this language, and learning the basics of programming whilst doing so, I thought of the idea of writing a GUI system for this language, because at the time there wasn't one. The first iteration was a basic implementation and developing it taught me a lot about code design of a fairly large project and I wanted to apply what I had learnt so I decided to rewrite the library with a better design. Unfortunately the second iteration became quite buggy and slow, so I finally decided to put as much effort as I could into developing what would be the last iteration of HighGUI.
I was very pleased with the final results of my efforts and I also pleased by the communities positive look on my project, as I had released the library as a free module for BlitzMax.
The image below shows an example application of HighGUI3.