Employment History
I worked at Venatrack on several components of their Motion Capture system which recorded football matches from a number of cameras using different software for a variety of stages of the production, both live software and post-production.
- I was involved in re-writing the c++ rendering engine for our 3D-clip production software to move from FixedFunction code (DirectX 9) to a more powerful and flexible system (using DirectX 11) which allowed us to add a large number of effects and render much more higher-resolution geometry (collada) whilst still being efficient and allowing us to produce video clips of the 3D renders.
- Writing HLSL shader effects such as depth of field, realtime shadows, and other post-processing pixel shader effects to go with geometry-effects such as large volume rendering of crowd members (all on GPU)
- As the different cluster components developed I introduced new systems and classes specifically to aid optimising the c++ multithreaded software, identifying slow code, removing contention between threads and increasing concurrency on 16 core machines.
- I refactored and improved much of our core C++ API, used on the truck software and our various tools, introducing Unit Tests and identifying(and fixing) many bugs with these core classes which improved stability
- Much of our C++ software needed to be administrated live under tense conditions so most components had a PHP Web interface with a custom-written C++ HTTP server. This not only needed to be efficient but cross-browser safe (including tablets and mobiles) and implement protocols correctly.
- We had proprietry database and file formats to store gigabytes of data so we often needed specific C++ tools to convert, view and manage these assets which needed to run fast and work with 3gb+ files.
- Much of these video tools needed realtime conversion for other flash or HTML based tools (both live and post-production) and to facilitate operators often had a web-interface to interact with the executables on remote machines. These were often written in PHP on a WAMP server to execute these tools and monitor their progress.
- To evaluate the improving quality of our software, we had various tools to evaluate certain aspects of the software (eg. OCR or Team-kit recognition). Using Teamcity I wrote various scripts in Python to compare the XML output of these tools to automatically produce HTML graphs so we could see improves per-commit.
I joined Travellers Tales to continue my career in the games industry in the MiddleWare team of the company working primarily on the Level Editor and game-systems which the games are run on top of. All of our work was in C++.
Lego StarWars, Lego Pirates of the Caribbean (2010-2011):
- Implementing new high-level UI functionality.
- Rewriting and refactoring underlying/low-level design for the editor to allow massive expansion and improve stability, efficiency and move more tools into one interface
- Refactoring other low-level game-systems which the games run on top of.
Lego Harry Potter (2010) Wii, PS3, XBox360, PC:
- Working on tools and bug fixing towards the end of the project
With a former colleague I formed a company
working on small independent games for
Apple's iPhone and low-barrier entry consoles. We have developed our own
technology and tools with scalability in
mind and looking to expand in the future
back onto consoles. We released a few small games into the AppStore whilst we worked on a much larger project, but this never came to fruition before our funds ran out.
Most of the work was in c++ for cross-platform purposes, with objective-c for IOS specific interfacing.
Tootle has ended as of October 2009 as we have run out of bootstrap funding.
Skills and development involved:
- Large scale engine design with stability, multi-threading, networking/streaming in mind
- Modular and scalable cross platform design.
- Low level efficient render implementation across platforms.
- Created a rapid development asset pipeline working cross platform and realtime asset-reloads, sourced from OS file systems, network/internet.
- State and XML based graph system which is easily serialised into save-assets which can be stored, streamed to other clients or replayed.
- Built in tools development and will have realtime mutli-user development
- Physics, audio implementation and modular integration with 3rd party services and SDK's.
- Rapid data-driven gameplay development
- Business/company related activities, setting up a company, accountancy, tax returns etc.
- Scheduling and working with outsourced artists/services.
- Deployment of company web-site and web-based interface to game social features
- Setting up company systems; Version control, bug tracking, scheduling software, backups, automated build processes and unit testing, secure remote access.
My initial role at Eurocom was developing
gameplay mechanics but soon moved into more
technical work; building frameworks for
other members of the game development team
to use to make their job easier and more
efficient.
The Official Beijing Olympics (2008) PC, XBox 360, PS3:
- Fast large crowd rendering (400,000 animated crowd members) using instancing, vertex shaders and minimum of resources
- Low level networking implementation including a custom protocol with flexible data storage in packets and Nat-negotiation
- High level networking game-interface, transparent to all 32 events.
- SDK specific match making, lobby and user handling on Xbox Live, Gamespy and PSN.
- Base game/event system on which all other events were built on top.
- Event implementation support to other programmers and aiding personal development.
- Generic control system which made GamePad control, AI, network-streamed and replay input transparent to events
- Customisable in-game character creation across all events
- Initial implementation of a few events.
Pirates of the Caribbean: At World's End (2007) PC, Wii, PS2, PSP:
- Credited for work reused from previous project, also provided support for implementations
Ice Age 2: The Meltdown (2006) Wii, PC, Gamecube, PS2, XBox:
- Entire Wii port of the company engine using new rendering features, wii mote implementation, save systems and working with evolving hardware/sdk. Implementation took around 2 months in time for the Wii launch.
- Object graphical effects, glass/ice refraction on objects, physics based tails and ropes, springs. Death effects
- Menu and UI implementation including artist-orientated screen system, cross platform interface support
- Level transition effects, fast level change and file handling
- Save system which allowed us to restore the game to an exact point/state of the game
- Efficient and font rendering system
- Customisable control system for the player through Menu system cross platform.
- Localisation implementation including foreign keyboards on the PC, non english character text support and specific japanese, chinese and russian builds
- TRC handling and correction across all platforms and various territories, eg. japanese wii
- In-game text management tools
Batman Begins (2005) Gamecube, PS2, XBox:
Sphinx and the Cursed Mummy (2003) Gamecube, PS2, XBox:
- Joined both projects to help finish the games to implement missing features, bug fixing and optimising code
- Front end menu system, localisation and text handling.
- Fullscreen graphics effects including heat shimmers, water refraction
- Platform specific save game management and TRC handling
Robots (2005) PC, Gamecube, PS2, XBox:
- Fullscreen graphics effects including heat shimmers, water refraction
- Game-wide optimisation
- Boss level
- Base game object systems, framework development for future games.
-
- Inventory and pickup object management system
-
- Localisation handling, efficient text rendering system for very large amounts of in-game text
- Menu and UI systems with cross platform interface support
- Platform specific save game management and TRC handling
Buffy the vampire slayer: Chaos bleeds (2003) Gamecube, PS2, XBox:
- Multiplayer/control support
- Camera control
- Player weapon implementation
- Gameplay implementation of puzzles, object types
- Gameplay objectives and level-to-level handling
- Inventory and pickup object management system
-
- Menu and UI system, localisation management
- Platform specific save game management and TRC handling
I have produced web sites, backends, Content management systems and e-commerce systems on a contract
basis. I have a long standing experience with web-based
technologies and standards compliance. I
also have been involved in graphics
production including creating logos and
brands and whole site designs and user
interfaces.
Most of my web-based work is personal;
experiments with technologies, integration
into non-web based (console) games.
Whilst I am a competent designer most live
examples are more technical achievements
rather than examples of design. Often I am
asked to implement a design from
drawings/images or add dynamic
functionality to an existing site and not
change the design.
Skills used:
- Worked with PHP, XML, XSLT, Perl, Python, JScript/Javascript, Wordpress and more
- Dynamic image and flash animation manipulation
- AJAX based dynamic pages
- SQL and XML based database interfacing and management
- RSS management and manipulation
- Simple standards based CSS and XHTML sites
- Larger re-usable CMS systems with simple automated interfaces to databases where websites could be constructed from XML
- Negotiating and liaising with clients and other contractors
As part of my college work experience
program I worked at a company for whom I
wrote a web-friendly front-end for their
internal Microsoft Access databases in PHP.
Although this was just work experience I was asked for specifically and was paid for
my work.