Resume

Rich Whitehouse
Solicitations are not welcome.
Document created October 24, 2004.
Last updated March 8, 2025.

Experience Summary
  • Over twenty-five years of experience in video game programming and development.
  • Experience on numerous commercial titles for Windows/PC, Xbox, Xbox 360, Xbox One, Xbox Series X, PlayStation 2, PlayStation 3, PlayStation 4, PlayStation Vita, GameCube, Nintendo 3DS, Nintendo Switch, iOS, and others. Titles include Star Wars: Jedi Knight II, Star Wars: Jedi Knight - Jedi Academy, Soldier of Fortune Gold, Soldier of Fortune II, X-Men Legends, Prey, ReCore, Fortnite, and Atari 50: The Anniversary Celebration.
  • Functioned as multiplayer/network programmer on two commercial Quake III engine titles, as well as one DOOM III engine title.
  • Experience instructing and educating employees, as well as working professionally with third parties.
    • Contracted and managed multiple employees, as the owner of a small video game development studio.
    • Worked directly with publishers and third-party developers, as an independent contractor.
    • Performed lead and management roles at well-established studios.
  • Experience in maximizing performance and visual fidelity on a large variety of devices and platforms, from limited embedded/mobile systems to cutting-edge PC/console systems.
  • Experience developing and maintaining complex software tools for a public audience.
  • Experience debugging in high-pressure scenarios, often called upon to address extremely difficult/evasive bugs.

Skills
  • Extensive knowledge of C/C++ and other low-level/high-level languages.
    • x86/x64 assembly for optimization and debugging.
    • MMX/SSE/SSE2/NEON/etc. SIMD instruction sets.
    • C# under numerous environments, including Mono/IL2CPP via Unity.
    • Python under numerous environments, including Pylons and Shotgun.
    • Objective-C with Cocoa on Apple platforms.
    • Experience with other scripting/programming languages as needed, including: PHP, Java, JavaScript, Pascal, Perl, ARM (numerous series) assembly, MIPS (numerous series) assembly, 6502 and 65C816 assembly, Motorola 68000 (and variants) assembly, PPC assembly, and many more.
    • Comfortable learning new languages on the job.
  • Capable of implementing fast and accurate software emulation from the ground up.
  • Extensive knowledge of rendering architecture and optimization across many generations of hardware.
    • Various lighting and shadowing techniques, combining pre-computed and dynamic solutions to suit hardware capabilities.
    • GPU pipeline and shader optimization.
    • 3D software rendering.
    • Experience with most console-specific graphics API's, as well as common multi-platform API's such as Direct3D and OpenGL.
  • Implementation experience in most other technical areas of game development.
    • Animation systems.
    • Particle systems.
    • Audio systems.
    • Physics and collision, both with and without third-party library support.
    • Networking with a client/server architecture.
    • AI and path finding systems.
    • Domain-specific (including animations, textures, meshes, and audio) compression.
  • Extensive knowledge of general Microsoft Windows programming and associated API's, including MFC and GDI. This includes low-level experience with Kernel/driver programming.
  • Extensive knowledge of reverse engineering, with specialization in disassembling programs and understanding proprietary data formats.
  • Excellent debugging and problem solving skills.
  • Excellent team and leadership skills.
  • Excellent technical writing skills.
  • Good at public speaking, and conveying a technical narrative in a way that's still fun and engaging for a non-technical audience.
  • Knowledge of what makes a game feel solid and fun, having been responsible for game logic and design on a number of critically-acclaimed titles.

History

2018 - Present
  • Owner and Engineer at Swinecrafters LLC
    • BigPEmu
      • Created the fastest, most compatible Atari Jaguar emulator to date.
      • Created a new framework/engine and scripting system around the emulator core.
      • Created a new network interface (with various backends, including WS2 and POSIX sockets) and implemented networked multiplayer. This work involved creating a new protocol with very little overhead for reliable delivery and auto-fragmentation over UDP. A new rollback system was also created to facilitate a seamless experience with no local input latency even in high network latency conditions.
      • Created a new client-server network interface for the scripting system. This interface makes it easy to manage networked game states and automatically applies delta compression. This functionality was used to add online multiplayer to Alien vs Predator, a game which does not include a multiplayer mode, using only a small amount of script code on top of an unmodified retail image of the game.
      • Created new native rendering functionality for the emulator's scripting system and created a flexible postprocessing system.
      • Ported the framework to a variety of targets and architectures. Video/audio/input backend implementations include OpenGL/GLES, Direct3D 12, SDL2, DirectSound, Core Audio, and others.
      • Published the application on the App Store.
    • Atari 50: The Anniversary Celebration
      • Created a new Atari Jaguar emulator, facilitating the inclusion of Jaguar titles. This emulator was eventually rewritten and refined into the Jaguar core in BigPEmu.
      • Reverse engineered and created patches for various titles in the collection, offering new gameplay enhancements and bug fixes.
    • Teenage Mutant Ninja Turtles: The Cowabunga Collection
      • Reverse engineered and created enhancement options for every title in the collection. Enhancement features included new gameplay modes and new playable characters for select titles.
      • Selectively improved the quality and performance of emulation across various systems.
    • Disney Classic Games: Aladdin and The Lion King
      • Created a new version of Aladdin with special features and enhancements.
      • Reverse engineered an Aladdin CES demo build, fixing critical bugs and restoring functionality to make the build suitable for commercial distribution.
      • Reverse engineered Aladdin and The Lion King across all available platforms (Nintendo Game Boy, NES, Sega Genesis, and SNES) where source code was not available, in order to provide reference material to the art staff and create patches for the games.
    • Blizzard Arcade Collection
      • Extracted and converted exclusive content from the Sega Genesis version of The Lost Vikings without the aid of source code.
      • Implemented text hooks and synchronized overlays for The Lost Vikings and Blackthorne so that the emulated titles could be seamlessly localized for many new languages.
      • Reduced emulated load times without compromising timing/accuracy by translating decompression and APU load routines into native C/C++ routines.
      • Reverse engineered each game in the collection on platforms where source code was not available, in order to provide reference material to the art staff, create patches for the games, and facilitate additional "Definitive Edition" features.
    • Boiling Point: Road to Hell
      • Cracked the original release's copy protection, facilitating a new Steam release without the need for source code.
      • Created a custom module hook in the newly cracked executable, making additional fixes (such as support for modern Windows scaling/DPI functionality) trivial to implement despite the lack of source code.
    • Ballance
      • Debugged and fixed numerous bugs which made the software unusable on modern Windows machines, without access to source code. This also meant having to understand the game's particle system through pure x86 assembly, as a particle system bug was responsible for causing hangs/crashes under tenuous circumstances.
    • Fireteam Rogue Project
      • Reverse engineered compression, tile, and sprite formats for a Fireteam Rogue SNES prototype.
      • Reverse engineered game-level logic/data, including object types and state machine routines/data, in order to create a custom build of the game featuring various debug and accessibility options. This build was used by the client to assess the game and scope out additional work.
    • Unannounced Unity Project
      • Implemented a full-featured character customization system in Unity.
      • Created a native plugin to handle asynchronous loading and batching of character resources, allowing for over 100 fully detailed and customized characters to be rendered simultaneously.
      • Maintained native functionality and performance across platform targets, including Microsoft Windows (D3D11 and D3D12), Xbox One, and Xbox Series X.
      • Implemented a unique solution for specular antialiasing under Unity's URP.
    • Virtual Camera Project
      • Created new rendering, scene graphing, streaming video device, and resource systems.
      • Integrated AprilTag support for real world camera and display tracking.
    • Medical Imaging Project
      • Implemented a custom volume renderer.
      • Implemented support for numerous popular medical imaging standards, including DICOM.
    • Debugging and Analysis Support
      • Found and fixed multiple crash bugs in a popular video game title after launch.
      • Provided production staff with weekly reports on content issues and performance.

  • Independent
    • Reverse engineered the Sega VR tracking and stereo synchronization protocol, created a modern implementation of the headset through emulation, and published an article outlining the entire process on the Video Game History Foundation blog.
    • Restored an unpublished version of Days of Thunder for the NES, and published an associated article on the Video Game History Foundation blog.
    • Published an article on Motherboard, discussing the future of video game streaming technology and the problems it creates by endangering open data ecosystems.
    • Created DOOMBA, a tool which tracks a Roomba and uses that tracking information to generate a DOOM map. This project received coverage from PC Gamer, Variety, Engadget, Polygon, Digital Trends, Hackaday, Gizmodo, SYFY WIRE, The Verge, and dozens of other press outlets.
    • Continued to maintain Noesis, including support for serializing and interpreting cooked mesh/animation/material/etc. data from a wide variety of Unreal Engine 4 titles. The built-in Noesis debugger was also given Python scripting support, which is utilized by BigPEmu.
2020 - Present
  • Head of Digital Conservation at the Video Game History Foundation
    • Responsible for ingesting source code artifacts and overseeing source-related projects.
    • Create environments, provide documentation, and create patches/modifications as needed in order to build source code and recover data.
    • Reverse engineer data/protocols and perform deep artifact analysis.
2013 - 2018
  • Principal Engineer at Armature Studio, LLC
    • Lead Engineer on The Unfinished Swan for PlayStation 4 and PlayStation Vita.
    • Lead Engineer on a partner project with Riot Games. Project details cannot be provided at this time.
    • Lead Engineer on an optimization team for an external PlayStation 3 title. Implemented SPU-based rendering (building of the commandbuffer) and culling, and coordinated efforts to develop SPU-based postprocessing and other game/animation-related tasks. Additional project details cannot be provided at this time.
    • Engine and pipeline work on Fortnite, including fixes and additions to Unreal Engine 4.
    • Engine and optimization work on the Borderlands: The Handsome Collection post-release performance patch for PlayStation 4 and Xbox One.
    • Engine and optimization work on Batman: Arkham Origins Blackgate for Nintendo 3DS and PlayStation Vita.
    • Engine work on Injustice: Gods Among Us for PlayStation Vita.
    • Engine and optimization work on ReCore.

  • Contracting
    • Reverse engineering and content pipeline work on Battlezone 98 Redux for Rebellion.
    • Model and animation content pipeline work for TNB Games.

  • Independent
2011 - 2013
  • Pipeline Engineer at Sony VASG
    • Worked on a proprietary technology related to real-time motion capture.
    • Worked on an unannounced internal video game project.
    • Developed a client-facing web interface with server/database support.

  • Contracting
    • Model and animation pipeline work for MachineWorks Northwest.
    • Worked on motion capture, content pipeline, and rendering technology for the Mirror.ly project at Cloud Cliques, Inc.

  • Independent
    • Added dozens of additional formats and features (including FBX support) to Noesis.
2010 - 2011
  • Contracting
  • Independent
    • Created a personal motion capture solution using the Microsoft Kinect with OpenNI/NITE libraries. One of the videos for this project went viral, and was featured across various web sites and television networks.
    • Added a Python implementation to Noesis, providing a fully translated plugin API and numerous example scripts.
    • Started working on a MIPS R5900 CPU emulator.
    • Continued to maintain personal tech and content pipelines.
2009 - 2010
  • Owner and Engineer at Swinecrafters LLC
    • Shipped a self-funded, multi-platform video game title, with the assistance of several industry-professional contract employees under Swinecrafters LLC. The title, Corporate Fury, was initially released for the iOS platform, and received with great critical praise from a variety of major gaming media outlets:

      "There are a ton of wacky characters, plenty of crude humor, and enough fighting to satisfy any gamers needs in Corporate Fury, and it stands out as one of the more unique offerings for the iPhone." -TouchArcade.com (front page article)

      "The iDevice did not have a proper brawler that delivered until Corporate Fury came along. With a funny (yet crude) premise, and a well deserved 17+ rating, this game is easy to recommend for those who love mindless violence." -nodpad.com (4/4 stars)

      "Corporate Fury has just about everything that I could want in a video game." -148apps.com (4/5 stars)

      Corporate Fury maintained a 4-5 star average on iTunes through its entire lifespan.

    • Continued maintenance on my own game engine and content creation/import/export pipelines. (added support for 10-15 new geometry/animation formats, including COLLADA import/export)
    • Created Noesis, a free asset processing/conversion tool which handles translating data between hundreds of unique file formats.
2008 - 2009
  • Contracting
    • Worked on contract for ngmoco:), developing a robust general game and rendering technology solution for the iOS platform.

  • Independent
    • Created and released AVALANCHE, an unofficial and free fan-game set in the Final Fantasy VII universe. The game was very well-received, and was featured in numerous physical and online publications. Among these publications was the internationally published magazine Retro Gamer, which featured AVALANCHE with the caption "Avalanche: If a new Final Fantasy VII was released today, chances are it might look a little like this."
    • Worked on several hobby projects for Sony's PlayStation Portable, learning about ideal storage and rendering formats for the device in the process.
2007 - 2008
  • Senior Programmer at Human Head Studios, Inc.
    • Implemented new game/technology systems and rendering features for an unannounced title. Rendering features included:
      • Robust texture streaming. (with real-time texel area determination)
      • Hardware vertex blending/animation.
      • Shadowmaps with dynamic frustum grouping/LOD.
      • Adapting a variety of old OpenGL/fragment program functionality to Direct3D 9 with HLSL shaders.
      All rendering features were developed on the Xbox 360 and PC concurrently, dealing with the needs of each platform. (resolving, predicated tiling, and EDRAM limitations among them)
2005 - 2007
  • Programmer at Human Head Studios, Inc.
    • Technology programmer on Prey - various low-level systems and SIMD optimizations, also responsible for getting Prey portals to work in the DOOM III engine.
    • Multiplayer and gameplay programmer on Prey - handled networking code and gameplay systems related to multiplayer.
    • Wrote numerous Windows applications to assist in debugging and bug-finding on the project, including an application to do stack walking on a given process, which could also sift through stack memory and check pointer memory to recover otherwise-lost context records.
    • Worked with third party Digital Interactive Streams, Inc. for Triton integration in Prey.
    • Worked remotely on Prey patch issues, and began work on an unannounced title.

  • Independent
    • Released a demo game using my proprietary game engine technology, which is now featured in several games.
    • Developed a Quake engine featuring various "next-gen" (at the time) features.
2004 - 2005
  • Independent
    • Homebrew programming with the Gameboy Advance. Developed a working sidescroller engine and made a sample game with it, in addition to other games and applications.
    • Developed a full-featured game engine, with a client-server networking architecture, OpenGL-based renderer, proprietary collision/physics systems, various per pixel and pre-baked lighting methods, and other at-the-time cutting-edge features. Development continued periodically up until beginning employment at Human Head Studios, Inc.
2001 - 2004
  • Programmer at Raven Software, Inc.
    • Multiplayer Programmer on Star Wars: Jedi Knight II: Jedi Outcast. Responsible for everything relating to the multiplayer codebase, including all network/game code, and feature parity with the network-incompatible singleplayer codebase.
    • Multiplayer Programmer on Star Wars: Jedi Knight - Jedi Academy. Carried over responsibilities from Jedi Knight II, and worked on various engine/technology systems.
    • Programmer on Soldier of Fortune II. Worked on game systems, and provided foundation for multiplayer codebase.
    • Programmer on X-Men Legends. Technology and effect work.
2000 - 2001
  • Contracting
    • Worked on AI and path finding for Crytek, on a game called Engalus. This was one of Crytek's very first titles, but it was never completed.
    • Worked with Raven Software, Inc. remotely, in order to develop the hidebot, a multiplayer AI opponent for the original Soldier of Fortune. The bot was later included in the retail distribution of Soldier of Fortune Gold. (and Platinum Edition)
1996 - 2000
  • Independent
    • After experience with various Quake mods, developed and released the Famkebot, the first publicly available Quake II multiplayer AI opponent.
    • Developed the Jumbot, still often hailed as the number one Half-Life Deathmatch/Teamplay bot. This project saw millions of downloads worldwide, and is primarily what kicked off my career in game development.
    • Continued development of various mods and freeware applications. Some notable projects include Head Soccer and Scientist Hunt.

Self-summary

I've been making games for most of my life now. I've worked in a wide range of roles within the confines of my job as a programmer, from high-level logic and design, to low-level debugging and optimization. I've enjoyed the unique aspects of each of these roles, and am glad to take on any challenge presented to me. I do most of my work in C and C++, but have experience with a wide variety of programming languages. My love for low-level assembly coding has often proven valuable for the purposes of optimization and debugging.

Having a broad knowledge of both technical and general production aspects of video game development has made me a valuable asset in project evaluations and planning. I've performed many unique assessments across a wide variety of projects, creating detailed documentation, charting out milestones, and identifying risks. These assessments have been consistently accurate and have played a large part in establishing efficient budgets and timelines.


Interview Preferences

Medically, I've been through a lot in recent years. That includes a battle with cancer (which has been successfully treated, at least as of this writing) and some autoimmune conditions with suspected complications from Long COVID. These medical issues can manifest in cognitive difficulties which vary in severity from day to day. Stress/anxiety will usually exacerbate these problems, so I'm generally going to be a much lousier interview than I was 5 years ago. I may blank on things which are obvious or fundamental; it's not because that knowledge isn't already embedded in me, it's because I generally can't think on the spot anymore unless I have a moment to privately meditate and achieve a proper flow state.

I know that stating these things upfront isn't necessarily ideal, but I'm being honest here mainly in order to help you make the most of me. Please don't give me whiteboard questions or tell me to write code on the spot, it has a high probability of making me look dumber than I am (and compounding my anxiety) when I'm under interview pressure. I know when it's appropriate to use a map instead of a vector and vice versa, I generally avoid linear searches in anything performance-sensitive unless the dataset is very small, I don't use linked lists (because indirection is generally the enemy of performance) in any case where an array can do the job, I know how to implement a binary search. Over the years, I've written a handful of spatial partitioning implementations from scratch and employed them for the purposes of both collision and rendering. I know what a dot product is, how/when it might be desirable to calculate an angle between vectors or project a vector onto another vector. You can see where I'm going here; I'm not misrepresenting myself, and I'm not representing someone else's work as my own. I do understand the skepticism and the need for rigor, however, as I've discovered plenty of genuine imposters while interviewing candidates of my own.

The best way to verify that I'm still a competent genius underneath the stress and brain fog is to walk through my work with me. Ask me about a thing I did and I'll usually be able to start recalling the finer points as I traverse the problem space even on a bad brain fog day. I generally recommend this tack even for people who aren't having cognitive difficulties, as it works to separate people who truly understand their domain and have good problem-solving skills from people who have memorized answers to the usual gauntlet of interview questions. I'm also happy to walk through code that I've written and explain it, which is just as effective as writing code on the spot (it's pretty easy to tell when someone is trying to explain code that they don't actually understand) but far less stressful.


References

References will be supplied on request.



15597781 page hits since February 11, 2009.

Site design and contents (c) 2009 Rich Whitehouse. Except those contents which happen to be images or screenshots containing shit that is (c) someone/something else entirely. That shit isn't really mine. Fair use though! FAIR USE!
All works on this web site are the result of my own personal efforts, and are not in any way supported by any given company. You alone are responsible for any damages which you may incur as a result of this web site or files related to this web site.