Jon Mayfield
Orange, CA

Skill Summary:

  • 14 years game programming experience, and a dozen shipped games on 16 platforms
  • Hardware graphics programming at the low and midlevels on a variety of hardware, with an interest in optimization
  • Highly self motivated and very productive
  • Shipped on Platforms: 3DS, PSP, PS3, Xbox360, DirectX 9/OpenGL, Brew/J2ME, Wii, Gamecube, XBOX, PS2, PC VGA, PSX, Dreamcast, N64
  • Languages: C/C++, GLSL, Cg, Assembly (8086, VectorUnit/Shader assembly, etc), PHP, HTML

Experience




Applied Minds [Oct '12 - Current]

I worked on several different software projects and every week seemed to bring something new. Much of my programming has been very similar to work you'd see in the video game industry, although I have spent more time out of my comfort zone than usual. Due to the nature of what Applied Minds does, I cannot provide more specific details here.




Hobby Project [Dec '10 - Current]
http://vrbike.jmxdigital.com

This is a personal project I started over my Christmas break in 2010 in order to make riding a stationary bike less boring, as well as to work on things new and exciting to me. The riders leg speed, bicycle speed, and heart rate are all monitored wirelessly and a custom USB controller I built allows you to steer around a 3d environment. I personally designed and programmed the entirety of the application.


  • Reverse engineered wireless data packets sent from bicycle sensors
  • Created Arduino based bicycle speed and steering sensors, which communicated realtime with my PC program. ~1000 lines of C ran on the Arduino
  • Written in 80% C, 20% C++. Used OpenGL 2.1+ as the graphics API and XAudio/OpenAL as the audio API.
  • Shaders and textures can be edited in near-realtime during program execution
  • Cross platform MAC/PC
  • Graphics features include FXAA, SSAO, Cascaded Shadow Maps
  • OculusVR and 3DTV support



High Impact Games [Aug '05 - Sept '12]

I started at High Impact Games nearly when it was founded and during the 7 years there we shipped on 8 different hardware platforms (PSP/PS2/Wii/360/PS3/3DS/PC/MAC). I was responsible for the vast majority of graphics hardware support for all but Wii and 3DS. Additionally during this time I did 2 "port" projects working with a single programmer underneath me under very tight time constraints. Our primary language at High Impact Games was C, with minimal C# and C++ used. For 3-4 years of the company's existence I was the only graphics programmer.

Shipped Titles
PSP/PS2
PSP
PSP/PS2
Wii/PS3
3DS/Wii/360/PS3
3DS/Wii/PC/MAC

Disney Princess

    Late 2011 to 2012: Disney Princess: My Fairytale Adventures

  • Worked on getting our previously internal-only PC version of the engine ready to ship a game on
  • Responsible for adding Mac OSX OpenGL as a supported platform to our engine
  • Wii/3DS graphics enhancements and bugfixes
  • Engine enhacements to allow more character customizations
  • Responsible for all graphics TRC/Lotcheck fixes for 3DS/Wii/PC

Realtime connected Asset Report

    Late 2010- Early 2011: Dreamworks Kartz

  • After Phineas and Ferb was out the door, I jumped back to our other team and continued work on our primary graphics engine
  • Added 3DS support in the texture compiler
  • Spent 2-3 months optimizing 360/PS3 engine, shaders, and shadowmapping code
  • 360/Wii/PS3 graphics bugfixes, as it'd be the first time this engine shipped on any of those 3 platforms

Phineas and Ferb on PS3

    2010: PS3 Phineas and Ferb

  • At this point in time, I'd now had our engine working on PC/360/PS3/PSP/PS2, but no Wii. Internally we received a Wii Engine from a sister company, and a team had begun work on Phineas and Ferb for Wii. I was tasked with taking the foreign codebase and making it multiplatform to support Wii and PS3. I had one programmer under me for the last 6 months of the 9 month task.
  • Wrote new PS3 tools and rendering to fit into 2nd party Wii engine
  • Created post effects for both Wii/PS3 versions of the game
  • Responsible for all Wii engine issues, as well as nearly everything PS3 related

PS3 realtime raytracing

    2008 - 2009: Xbox360 and PS3 system and graphics

  • Added the first pass of support for the Xbox 360 to our engine and tools for a prototype project for Microsoft Games
  • Dabbled with PS3 hardware, including writing a realtime sphere raytracer using the Cell's SPU processors (pictured left)
  • Responsible for adding PS3 support to our engine and tools
  • Responsible for adding PC support to our engine and tools for internal use only
  • Wrote first pass of lighting shaders and cascaded shadowmaps for 360/PS3
  • Added realtime debug communication to our engine, so my Asset Report tool could get live data from the engine including info about all texture assets, memory heaps, frame buffers and render targets, and cpu usage.
  • Rewrote our texture compiler to support all the various formats needed by PS3/360/etc level hardware

Asset Report
PSP Analizer

    Aug 2005 - 2008: PSP Graphics tech and full PS2 port

  • Worked on a team of 4, and was responsible for the bulk of the PSP graphics engine we used for 3 titles, including all low level interface with the hardware and all mesh rendering and culling
  • Worked on tools for extracting, processing, and then packing mesh and texture data in their most optimal formats for the hardware
  • Wrote a PSP graphics debugger for Windows, similar to Microsofts "PIX" (seen left). With this I could step the display lists one instruction at a time, render using various modes, highlight meshes by bone weight count, and much more. We could even use it to inspect retail games graphics display lists.
  • General system optimizations for PSP
  • In 8 months I ported the fully complete Ratchet PSP game to PS2, with 0 lines of PS2 code as the start. During the last 2 months, I had 1 programmer and 1 artist helping.
  • Integrated my PS2 engine into our PSP code, creating our first version of our multi-platform engine and tool chain
  • Using C#/.NET I wrote a asset report tool (seen left) to explain to programmers and artists where memory is being spent, and what the entirity of system memory looks like.
  • Wrote integrated profiling tools which were used for the entirety of the life of the company



Knockabout Games [Mar '05 - Sept '05]

  • Programmed simple 3d space shooter game in BREW (C/C++) as a prototype. At the time all cell phone games were 2D.
  • Worked on a mobile golf game using BREW and J2ME in the Eclipse environment
  • Wrote a full game level editor for the golf game using MFC and OpenGL



Independent contractor [Sept '04 - Mar '05]

    Tech:


  • 100% Offsite work for a hardware company in Seattle
  • Solely responsible for developing a low-mid level graphics API for custom embedded mobile hardware running linux
  • API was very closely modelled after OpenGL, with support for lighting and full screen antialiasing
  • Created an emulation environment using ARM based PDAs for debugging within Microsoft Visual Studio, with the touch screen used to press virtual phone buttons
  • All rasterizers were done in software in C with a bit of assembly, along with a heavy dose of C preprocessor magic to create optimized variations


  • Game:

  • Created a simple 3D Tetris type game using my API as a proof of concept for the client



Iguana Entertainment / Acclaim Studios - Austin [Apr '98 - Sept '04]

At Acclaim the first 1.5 years was spent on game teams. During the remaining 5 years I was on a team of 4-7 programmers writing lower level code for a multi-platform engine.

Shipped Titles
N64/PC
DC/PC/Gamecube/PS2
Gamecube/Xbox/PS2
Gamecube/Xbox/PS2
PS2

Dec 1999 - Mid 2004: Core technology group

  • PS2 engine optimization
  • Engine bug fixes and enhancements.
  • Worked with XBOX/PC to begin development of new graphics engine. Helped write geometry compilers, static mesh renderers, and particle renderers
  • Developed distributed PVS (Potential Visible Sets) system, utilizing hardware accelerators for visibility calculations and a client-server model to farm out the work.
  • Added Nintendo Gamecube support to engine/tools, being the only person working on gamecube for about 6 months. This included file io, graphics, input code, and tools support.
  • Major optimization on all platforms, with expertise on Gamecube.
  • Joined game teams for last few months of the projects to provide all Gamecube related engine support up to ship date

Jan 1999 - November 1999: Southpark Chef’s Luv Shack Game Team

  • Technical platform lead on N64 version of game, using already existing N64 engine. Built all final rom files for production.
  • Developed quick and dirty sound system for PSX, including sound packaging tools and streaming.
  • Developed sound system, again with streaming, for Dreamcast and PC versions using DirectSound.
  • Four shipped domestic SKUs, Luv Shack N64, PSX, Dreamcast, and PC

April 1998 - December 1998: Southpark (N64 and PC)

  • Participated on a team of three to port the N64 engine to PC
  • Wrote Pentium optimized assembly software texturemapper
  • Coded the PC appropriate 2d GUI
  • PC sound system coded from scratch, and modified existing sound tools
  • PC Input handling
  • 2 Shipped domestic skus, Southpark Win95, and Southpark N64.



Other interests:

  • 2010 - Current: Cycling, both on road bikes and mountain bikes.
  • 2008 - Current: Deep space astrophotography. I'll drive out into the california desert with 100lbs of telescopes, cameras, laptops and mounts and collect photons from the skies. The results can be beautiful. My personal astrophotos are available here http://jmx.ls1howto.com/
  • 2001 - Current: I run a successful automotive website to help out owners of certain GM engines work on their own vehicles, including replacing camshafts, cylinder heads, and exhaust. It was written using PHP and MYSQL, and all php/html, art, design, and content was created by me.
  • 2003 - Current: Developed an electronic sensor simulator for General Motors 1997-2004 Corvette and marketed it direct to customers via my website, and later moved to a distributor model. All design, manufacturing, and QA is done by me.
  • 1992 - 1999: Participated in the "demo scene" where I taught myself C, Pascal, and basic 2d and 3d graphics programming. I produced PC tech demos showing off graphical special effects and hacks, timed to music. Participated in an international demo competition in Montreal, Canada in Summer of 1996. Demo programming is what got me into graphics in high school, and the rest is history.