Portfolio
This page contains videos of various projects I’ve worked on. This is not a complete list of projects for obvious reasons of company confidentiality but it should give you an indication of my areas of experience. If you would like more information in any area please get in contact with me.
Jump to category:
- Projects while working at Four Door Lemon
- Projects while working at Canalside Studios
- University Team Project – Dark Oz
- Personal projects
Projects while working at Four Door Lemon
QuizQuizQuiz (WP7)
Ported game from iPhone to Windows Phone 7 while working at Four Door Lemon in Summer 2010. Now on sale on the WP7 marketplace.
Projects while working at Canalside Studios
Pirates: Naval Warfare
Tasks on project: 2d & 3d Graphics programming
Unfortunately there was a glitch with the lighting on ATI cards (which wasn’t realised till we recorded this video as the studio ran on nVidia.) I’ll fix the glitch and upload a new video with the correct ship lighting soon.
Pirates: Battle Stats
With this game I wrote the quad system to use multiple types of texture and stencil, in combination with a variety of lighting modes (for different specification PCs) and also several cursor-ray to quad section solving systems as I needed to find a more efficient way of achieving the collision with the required machine minimum specification lowered. I also developed various rendering implementations to draw the 3d scene on a range of hardware (from old on-board GPUs to the latest graphics cards.) However, I ended up implementing a more optimal approach with the 3d artist rendering the scene to a texture with varied light maps which I could then blend. This meant we got offline visuals at the price of rendering a texture, but was only possible because we didn’t move the camera and therefore the 3d quads and 2d scene texture could be aligned correctly.
Newspaper Valley: Word Wings
My principle tasks here were to build up the core gameplay backend code for making the questions and level progression work and also developing the 3d graphics code to cope with the high-poly alpha-textured scene, which required culling methods and alpha-depth sorting to deal with all the foliage.
Vessel Wars
I primarily had a graphics focus on this game, we had the game working in a couple of days and worked on the prototype for two weeks. This video was recorded at the end of those two weeks. I coded the never ending vessel walls, utilising displacement mapping and blending between two maps so that the walls pulsate. The effect is quite subtle and is more apparent when you can actually control the game. I also wrote a morph target system for the blood cells, so that they would change shape, however this was disabled as the effect was not noticeable. I also developed the shield effect, the space ship’s shaders and the laser effect.
Ironclads: Naval Warfare
Again for this game I was principally the graphics programmer, coding the water and terrain effects. The projectile trails and animated splashes when they hit the water. I also wrote a system to load meta-bones from the model for placement of locations such as flags, fire spawning and cannon barrel exits. I wrote a quick flag shader and the normal mapping effect seen on the ship. To support the ship effects I wrote a material application tool as we had issues with the version of the FBX plugin we were using at the time.
Stitch-Up
Platformer prototype developed in 8 days. I worked mainly on the level editor for this project.
Age of Sail: Naval Warfare
A prototype recreating the Battle of Trafalgar, allowing two players to control one ship. With one player controlling the navigation while the other takes charge of the gunnery decks.
University Team Project
Dark Oz
I was lead programmer on this project, Team 6 consisted of 10 developers (a mixture of programmers, artists and designers) and we decided to adapt the (public domain) classic story The Wonderful Wizard of Oz but give it a twisted retelling. Dark Oz principally is a puzzle-platformer where the player controls Toto (the dog) and must get through the levels safely with his owner Dorothy. The game is written in C++ with Haaf’s Game Engine upgraded to support DX9, Box2D physics integrated and levels driven by Lua. The integration of these libraries and the exposing game engine functionality to be controlled via Lua (via ToLua++) were my main programming areas on the project.
Personal Projects
City Simulator
Implemented in C++ with DirectX 9.
- City model created with GhostTown (a plugin for 3ds max)
- City light maps created using automatic unwrapping and render to texture in 3ds max
- Interiors are faked using Joost van Dongen’s Interior Mapping technique
- Splines are created in 3ds max, then exported via a custom MAXSCRIPT I’ve written. The splines are then interpolated using Catmull Rom to give the nice curving paths of the vehicles
- The HUD is created in Photoshop and based on the Halo ODST drone HUD, certain parts of the HUD react to camera movement (yaw, pitch and height are animated)
One of the things I enjoyed most about the development of the project is the key role that 3DS Max played. This is the first opportunity I’ve been able to use 3DS Max in such a big way, for procedural geometry generation, lightmap calculation and traffic path creation (via MAXSCRIPT). In the future I’d like to extend my knowledge of MAXSCRIPT and Max driven automation which is proving extremely powerful.
Software Renderer
Implemented the following from scratch in C++ with GDI:
- OBJ File Support
- Model Mesh structure
- Vector2 and Vector3s
- Matrix class – Being used here with a Rotation Y matrix to turn the tank
- 3D projection of vertices to screen space via WVP matrix implementations
Morph Target Animation
Especially suitable for non-skeletal animation such as facial animation and cloth simulations. This example uses multiple vertex streams and blends between them using a vertex shader. This approach is a differing method to CPU or VTF based implementations and does not require the calculation of vertex textures, making it quite simple and straightforward. I believe the performance should be better than the usage of VTF. Because of the nature of the implementation each morph target must have the same topology (vertex/index count and ordering.) The video below is an old version, the newer one cycles through multiple morph targets rather than just two. I’ve spent some time commenting the source code so it should be quite explanatory.
Implemented with C#/XNA 3.1 and HLSL
Advanced Effects in RenderMonkey
Interior mapping, flow mapping and multi layer car paint. Please view with annotations enabled for an in-video description.
Mika the Meerkat
A platformer I developed several years ago, this was my first introduction to using XML in games (having previously used it for a range of other purposes). Part of my focus was to allow the game to be edited on the fly with a level editor you could jump straight into. I wanted the game to be quick and easy to expand without having to save and reload levels which can be a hassle. This game advanced a little beyond the point here supporting more advanced level editing capabilities.
