Welcome to my work portfolio

By clicking on the tabs above you can see some of my university work. In all aspects, the work on these pages are first attempts in their respective areas and have taught me ways to improve in future.

Having just finished university, I would like to find a job with a fairly large game developer, preferably in the UK, who I can get more programming experience with. Ideally as a Graduate or Junior Programmer, or possibly a relevant Internship. I would also be happy to join a smaller development group where I can make use of my broader knowledge. My dream job would be with Traveller's Tales or Rocksteady as I am a fan of their games.

About Me

When I was young, I wanted to design toys, as I grew up video games took over from toys and since the end of secondary school I have been focused on becoming a game developer.

I studied Computer Games Design and Programming at Staffordshire University. It was the only course I could find which taught both aspects of game devopment, which I feel is important. Juggling the two different teaching styles proved to be a challenge for everyone on the course. Only three of us remained at graduation, everyone else had moved to either pure programming or pure design.

Curriculum Vitae


Graphics Engines

The video below demonstrates some of the features of both engines, but the capture software frame rate was very low, so it's not a good indication of the programs' smoothness. Please download the programs using the links provided and try them for yourself.

C++ and DirectX (Third Year)

Originally intended to be a group project, this graphics engine (game engine to-be) was built almost entirely by me as the other two members couldn't keep up/complete their components. The program has a modular structure, it was designed to have a standard graphics interface as an overlay for a API implementation (DirectX versions, OpenGL or Console Specific Open GL). DirectX 9 was the only one completed to a usable extent, as I had already used OpenGL before and DX10/11 were't compatible with university PCs for demonstration. An input manager was partially completed and supports keyboard, mouse and XInput. It was extended for use with Wii Remotes as part of my Final Year Project, but this functionallity is excluded (and will be until the manager is stable). The content manager and scene graph are functional and extendible.

C and OpenGL (First Year)

This was my first 3D graphics program; it's written in procedural C and relies heavily on GLUT. Because of the framework and functions provided by GLUT, this Engine is more interactive than the newer C++ version. A significant drawback using GLUT was getting Alpha blending to work in a satisfying way. This was fixed in the C++ version by using HLSL Shaders, which could probably be emulated in OpenGL with GLSL, but at the time I was unaware that it was an option.

Iron Man

This asset was created for a Nintendo DS game. The Nintendo DS can process 120k triangles per frame with 2048 on screen at one time. After culling, this asset would take up approximately 1/8th of the available triangles, which seems fair for the main character. The same mesh has been used with different textures for the Mark IV and Mark VI suits from Iron Man 2.

The mesh has been rigged with a custom skeleton and hinges in the mesh have animation joints for correct deformation

WARNING: Includes obligatory Black Sabbath audio sample!

Finally, a DS mockup using a simple environment

Final Year Project - Gem Handle Mechanic

This video demostrates a subset of the weapons in a game mechanic I designed. Each gem represents a material or property of the weapons it creates. The gems here from left to right are: Metal, Wood, Slice, Pierce and Weight. The weapon models and textures are representative, not final. Up to 1080p

View all the weapon combinations:

Group Games Design - 'Divinity' intro animatic

This animatic was produced by me as part of my second year group project, however the game concept, backstory, drawings and voice-over were by other group members. Up to 720p

Character Animation

Stormtroopers 'Off Duty'

This is the main component of my Character Animation module. The Stormtrooper asset was provided by my university, although it was heavily modified. All characters use biped as a skeleton, and biped's 'footsteps' was used for the first third. Otherwise hand animated.

Getting up from prone 'Knocked Out'

Also uses a heavily modified university asset known as 'Noob'. Hand animated using Biped.

Splinter Cell walk 'Splinter Noob'

Looping walk cycle using 'Noob' asset. Hand animated using Biped.

Mechanical Animation - Asimo

My first attempt at complex animation. Based on Honda's Asimo robot, the character uses History Dependent kinematics with no skeleton. Each segment of the robot is confined to its real life motion limits. It's supposed to move like the robot, not a human.

Wiimote Mapping Application

The following form designs were for the programming side of my final year project.

Main Wii remote Window

This form shows all the mappings and buttons to access the more complex features of the Wii remote. The top of the form has a drop down box where different profiles (Created in the Manage Profiles Window) can be chosen from. Different Wii remote bindings can be made for each connected remote using the “+ Add Remote” Tab. When the appropriate remote has an extension connected, the Connect Extension button is enabled and opens either the Nunchuk or Classic Windows.

Nunchuk Window

This window allows the user to see and assign buttons for the Wii remote (Still activated through the main window) The joystick can be mapped to buttons or floats similarly to the Sensor Bar Tracking window.

Classic Controller Window

Much like the Nunchuk and Main Wii remote Windows, this form shows the mapped values and provides access to analogue mapping for the appropriate controls. An option is provided to disable all gestures when the classic controller is connected (as it has no inertial sensors and the Wii Remote is usually left dangling). The progress bars below each trigger mapping button show the amount of depression of that trigger.

Profile Management Window

When the ‘+’ button is clicked on the main window, this dialog appears listing all the existing profiles, allowing additions changes or removal. Each Profile can be disabled with its checkbox to hide it in the main form and stop t being used for mappings without deleting it permanently. Each profile can be associated with executables which will be detected and the corresponding profile loaded (unless disabled).

Sensor Bar Tracking (Analogue Mapping) Window

For analogue values (in this case the infrared camera) a window like this is shown, allowing trigger zones (adjusted with scroll bars and numeric up/down boxes) to be set to buttons or to alter other analogue values. ‘Digital’ allows a key to be captured and ‘Other’ gives a list of analogue values to map to, and the alteration per second or value scaling (for direct mapping). In this example the grey box represents what the camera sees.

Other Windows not shown

  • Rumble - In Xbox 360 mode, the real rumble information can be passed on, otherwise a list of triggers and delays (in ms) can be specified.
  • Gestures - Unlike other analogue values, gestures are recorded 5 times and a template is created to which further captured data will be compared. Keys can be triggered on execution.
  • Combinations - Here, a combination of buttons or gestures on the Wii remote can trigger alternative outcomes (can be used with unmapped gestures to require a button to execute.)
  • Offline Pokedex

    I made this application in college, although I still feel it shows a good understanding of interface design and style. It's been downloaded over 1200 times from mediafire via pokémon forums since I published it.