| Lead Engineer, Project Manager [2011(Jan)-2012(Sept)] |
Infinity Ward [Encino, CA] |
Call of Duty: MW3 (Xbox360,PS3,PC)
Unannounced Title
Shipped Games: Call of Duty: Modern Warfare 3 (Xbox360,PS3,PC)
Development: Unannounced Title
- Manage a team of 50+ programmers to support game and engine development
- Responsible for setting technical direction
- Collaborate with art leads to establish new process and pipeline for asset creation
- Work with production to establish project schedules and milestones
- Help to establish project goals and art targets
- Reduced audio processing by 3.5 ms (out of a 16ms frame)
- Refactored the effects system and optimized the system for additional concurrency. Result was 2-4ms gained per frame and much tighter scheduling on dependent tasks
- Moved all effects processing to the SPU
- Optimized the general per frame updating of entities to save 2.5ms on average
- General troubleshooting of existing systems
- Organized and managed code teams across multiple development studios during critical final stages of MW3 development
- Scheduled and managed IW code team to finalize PC SKU and day one console patches
- Worked closely with IW production and executive Activision management teams to organize submission process for simultaneous worldwide launch
| Development Engineer [2010(Feb)-2011(Jan)] |
Microsoft (MGS) [Redmond, WA] |
Kinect Adventures (Xbox360)
Shipped Games: Kinect Adventures (Xbox360)
- Optimised Unreal post process shaders to gain back 1.5ms on the GPU.
- Optimisation of the Unreal render pipeline to reduce GPU time by 2.0ms.
- Worked with a team to solve and isolate bugs and issues with the Natal hardware, platform and third party software (GFx, WWise).
- Changed the render thread pipeline to reduce execution time to stay within performance target.
- Primary person responsible solving for crash bugs and soft locks.
- Worked with a team to help keep the game within performance targets.
- Liasoned with the art team to achieve performance and art quality goals.
| Lead Technical Engineer [2006(Mar)-2009(Nov)] |
Obsidian Entertainment [Irvine, CA] |
Neverwinter Night 2 (PC)
Alpha Protocol (PS3,Xbox360)
Shipped Games: Neverwinter Night 2 (PC), Alpha Protocol (PS3,Xbox360,PC)
- Shared in the design of a brand new engine code base to be used for a new AAA title (Xbox360, PS3, PC).
- Implemented a cross-platform rendering system and render resource manager.
- Implemented an asynchronous loading system for all level assets.
- Implemented a basic scene graph for frustum culling, per-object light lists and shadows.
- Implemented a cross-platform engine job system for cpu load balancing of work units.
- Implemented base actor class. They served to keep the system entities synchronized (animation, rendering, physics, pathing and game) and to serve as a base for the update cycle (specially movement) with a concentration on concurrent processing.
- Improved the engine framework to work in a multi threaded environment. Modified the game loop to allow for concurrent processing and fixup of game data.
- Render system is run completely concurrently and asynchronously to the game thread - shared in the responsibility to create the methods in which the two threads update each other and control asset management.
- Restructured the way that render data is exported and then loaded by the engine. The format went from a multi-packet (with differentiated load systems) to a single packet, single load system.
- Integrated Havok into the code base. Implemented a simple interface into the Havok system for game side collision requests. Implemented a robust interface for interacting with the Havok Physics system.
- Helped guide the development process, and mentor the programming team.
- Worked with the Art Technical Director to define render features and the art pipeline.
- Liaison with Art and Design to make sure that we were meeting requirements and that assets would be delivered in time.
- Wrangled the milestone deliverables.
| Senior Programmer |
- Pathing system was based on an A* two dimensional model. Wrote a series of routines for constructing an arbitrary walk surface based on a collection of objects (placeables) that had artist defined walk surfaces. Created a routine to validate face to face pathability that was used by the pathing system.
- Analyzed and optimized the engine to improve performance for a range of PC hardware.
- Isolated and fixed some rendering issues that were producing ill behaviour, either in visual appearance or in execution time.
- Modified text and font routines to work with FreeType v2.0 and in general fix issues that arose with UTF8 support (localization).
- Troubleshooting and firefighting for the shipping product.
| Simulation Engineer [2003(Oct)-2006(Feb)] |
Terminal Reality [Dallas, TX] |
Bloodrayne 2 (PC,XBox,PS2)
Aeon Flux (XBox,PS2)
Spy Hunter 3 (Xbox,PS2)
Shipped Games: Bloodrayne 2 (PC,Xbox,PS2), Aeon Flux (Xbox,PS2), Spy Hunter 3 (Xbox,PS2)
- Integrated O.D.E. (open source physics solver) into the engine code base.
- Created primitive vs triangle-mesh routines to calculate the penetration depth and normal of intersection, providing for interactions with arbitrary environments.
- Created continuous collision detection (swept volume) for interactions involving high-speed and/or small geometries.
- Corrected/Improved a majority of the existing primitive-primitive penetration functions.
- Implemented a new collision primitive (flat-capped cylinder) using a true mathematically defined cylinder. The common practice is to model a cylinder as an extruded octagon (or other n-gon).
- Refined the mathematical parameterization of constraints.
- Modified the methods used to solve the physical simulation ( the calculation of the forces generated by a given set of dynamics and constraints ).
- Implemented limitations on the system to prevent mathematical divergence in the solution system.
- Created a debugging visualization system.
- Refined collision calls for performance on console systems (specifically the PS2).
- Rigorously tested the collision system for stability and performance. Specific care was taken with floating point limitations (extreme value cases ).
- Tweaked capsule collisions to provide the predictable, stable results for soft body simulation.
| Consultant/Programmer [2003(Feb)-2003(July)] |
Confidential [Toronto, ON] |
- Feasibility study for an existing film production company, expanding into video games.
- Rough budgetary requirements taking into account the ramping from an initial technical team to a full development team for a game.
- Preliminary technical design documents for game engine software design.
- Interviewed/Reviewed potential staff members for an implementation team.
| Lead Programmer [2001(Apr)-2002(Sept)] |
Sunstorm Interactive [Indianapolis, IN] |
Airport Tycoon 2 (PC)
Bridge Builder (PC)
Mahjong (PC)
Super Ball (PC)
Shipped Games: Airport Tycoon 2 (PC), Bridge Builder (PC), Mahjong (PC), Super Ball (PC)
- Managed a programming team of five people and communication with the out-sourced art team.
- Created a data driven text-based open simulation system to allow for ease of customization and expandability.
- Refined existing graphic engine for increased performance to allow for greater visual capabilities.
- Created a specifically crafted physics simulation for Bridge Builder ( truss structure simulation ).
- Created an API layer for the internal engine.
| Forum Manager [1994-1997] |
The Microsoft Network (MSN) [Internet] |
- Created an online community for people interested in role playing games for MSN.
- Managed a community team of fifteen people.
- Responsible for multiple message boards, online chat-based games and event organization.
- Official representative for the Illuminati: New World Order CRPG from Steve Jackson games.
| Game Designer [1995-1997] |
Steve Jackson [Internet] |
- Helped with the development and testing of the Illuminati: New World Order expansion, INWO: Subgenius.
| Programmer [1996(May-Aug)] |
Canadian Space Agency [Montreal, QC] |
- Implemented an interactive simulation environment for testing a haptic device to be used as a controller for the Canadian Arm.
| Programmer [1995(Sep-Dec)] |
Cognos [Ottawa, ON] |
- Ported code base to UNIX Platforms (HPUX, DGUX, AIX, Solaris, SunOS)
- Developed/debugged code for the new release of the product
| Network IT [1995(Jan-Apr)] |
Royal Canadian Mounted Police [Ottawa, ON] |
- Engineered the RCMP PC Network for the Canadian Capital Region (Users: ~5000)
- Provided services & support for the transition to the new network structure
| Programmer [1994(May-Aug)] |
Royal Canadian Mounted Police [Ottawa, ON] |
- Developed an in-house program for reducing police oriented paperwork
| Research Assistant [1990 (June-Aug)] |
Atomic Energy Canada [Chalk River, ON] |
- Assisted in the development of an aqueous gamma radiation probe
Computer Science, Honours
B. Math (1993-2000)
University of Waterloo (Waterloo, ON)
Mechanical Engineering, Honours
B.A.Sc.(1993-2000)
University of Waterloo (Waterloo, ON)
Film, Fine Arts Honours
B.A.(1993-)
University of Waterloo (Waterloo, ON)
| 1993 - 2000 | B.Math | Computer Science, Honours | University of Waterloo (Waterloo, ON) |
| 1993 - 2000 | B.A.Sc. | Mechanical Engineering, Honours | University of Waterloo (Waterloo, ON) |
| 1993 - | B.A. | Film, Fine Arts Honours | University of Waterloo (Waterloo, ON) |