Wednesday, July 01, 2009

Game Engine Architecture


I've written a book containing comprehensive coverage of both the theory and practice of game engine software development. Intended as the text for a college level series in game programming, this book can also be used by amateur software engineers, hobbyists, self-taught game programmers, and existing members of the game industry. Junior game engineers can use it to solidify their understanding of game technology and engine architecture. Even senior engineers who specialize in one particular field of game development can benefit from the bigger picture presented in these pages.

Game Engine Architecture is available for sale now at major outlets including http://www.amazon.com/, http://www.barnesandnoble.com/, and http://www.akpeters.com/.


Labels: , , ,

Tuesday, June 27, 2006

Welcome. My name is Jason Gregory. I'm a senior game engineer, currently working at Naughty Dog Inc. in Santa Monica on our next big project. This little blog is my way of sharing information about my career with prospective employers, colleagues, friends and family.

Monday, June 26, 2006

Here are a few notes about the kind of engineer I am:
  • My position at Naughty Dog is Generalist Programmer, and I believe the job is a perfect fit for me. I like tackling any problem, at all levels from game play to engine to to tools. I'm equally comfortable optimizing a single function in assembly language and planning the architecture of an entire engine system.
  • I'm a natural problem solver.
  • I'm trained in the discipline of design. I understand that design is an iterative process, one of continual divergence (ideal generation) and convergence (decision making).
  • I'm a closer. I'm the heavy hitter that the team calls up when they need a home run. I'm not above any task if it will enable the team to be successful.
  • I've got a deep understanding of C++, from its generic programming features all the way down to its roots in C and assembly language.
  • I believe in KISS (keep it simple, stupid).
  • I believe that every problem has a level of "necessary complexity"... and that most programmers have a tendancy to overshoot that mark. (Especially the really smart ones!)
  • I believe in UML diagrams... and any other kind of diagram that gets the idea across.
  • I think scheduling should be granular in the near term, gross in the long term. Schedules should account explicitly for risk. Use the simplest scheduling tool possible -- Excel works just fine for a lot of projects. Anyone who says you can schedule down to the day six months out is smoking something.
  • I'm a self starter... ah, what the heck, I admit it -- I'm a full-on work-aholic!
  • I get a thrill out of helping others to learn and grow. I teach at USC, host brown-bag talks, mentor interns and junior team members. I believe in transparency, and that the efficient dissemination of information should be a core competency at any company or studio.

Thursday, June 15, 2006


I was recently interviewed on a USC talk show called CU @ USC, and it was broadcast on their cable channel Trojan Vision. You can download it here.

Saturday, June 10, 2006


Here are the games I've worked on thus far...



Medal of Honor Airborne (PS3, XBOX360)



Medal of Honor Pacific Assault (PC)

Freaky Flyers (PS2, XBOX, NGC)

Crank the Weasel (PS2, XBOX, NGC)
Unfortunately never shipped.

Stock Carnage (arcade)
Unfortunately never shipped.

Hydro Thunder 2 (arcade)
Unfortunately never shipped.

Thursday, June 01, 2006

Résumé:
Also available in MS Word format at http://opensvn.csie.org/JasonQGregory/ (userid: visitor, pw: jqg).

Objective: To contribute to the creation of a cutting-edge next-gen game as a systems architect, technical lead or senior software engineer

Highlights:
· Currently a Generalist Programmer at Naughty Dog; we just completed Uncharted: Drake's Fortune (PS3)
· Engineering lead on Medal of Honor: Airborne (PS3, XBOX360)
· Teach game engine programming and architecture at the University of Southern California
· Generated a patent for high-speed rendering of instanced geometry (http://www.patentstorm.us/patents/7209139.html)
· Exceptional problem-solving skills
· Experienced systems architect; expert in OOD/OOP, UML and design patterns
· Exceptional ability to understand, debug and integrate with other people’s code
· Able to work at all levels, from assembly optimization to engine systems to game play systems to tools
· 7 years experience in the gaming industry, plus 7 years experience in non-game software development
· Education in Systems Design Engineering — electrical, mechanical, software, process control, signal theory, systems integration, design as a discipline
· Superior leadership, communication, technical documentation, public speaking and training abilities
· Artistic talents, including voice acting (appear on 6 Midway titles), music and illustration

Game Expertise: Character animation, engine architecture, 3D math, rendering, AI, collision and physics, game play systems and scripting, tools and pipelines, client/server multiplayer networking
Software Expertise: OOD/OOP, design patterns, SW development processes, large-scale C++ development, user interface design, test-driven development, real-time embedded systems, concurrent programming, CM
Languages: Expert: C, C++; Experienced: C#/MC++, Perl, UnrealScript, Lua, MEL script, Java/JSP, Smalltalk-80, make, Cg/HLSL, assembly (DirectX shader, Intel, PowerPC, 68k, PS2 VU, DSP96002, i8051, 6502)
Environments: Platforms: Windows PC, XBOX360, PS3, XBOX, PS2; Engines: Quake Engine, Renderware 4, Unreal Engine 3; SDKs: DirectX9, OpenGL, Granny, Maya SDK, Win32, MFC, .NET CLR, UNIX, Xlib/Xt, Boost, Tools.h++
Tools: Dev: VS.NET 2k3, SN Systems/PS3, CodeWarrior/PS2, gcc, gdb, dbx; CM: Perforce, VSS, Clearcase, RCS; Profiling: VTune, Microsoft LOP, Purify, Quantify; OOD: Visio UML, MagicDraw UML, Rational Rose

Work Experience:
Naughty Dog Inc.: Generalist Programmer, December 2006 – Present
Uncharted: Drake's Fortune (PS3)
· Designed and implemented scripting system used for all in-game cinematics and scripted game play elements in the product
· Wrote SPU-based mesh ray-casting and decal system, including parallax mapping shader
· Wrote all game play code for the jeep chase level ("Out of the Frying Pan"), and co-designed the level with Benson Russell
· Worked on various other subsystems including the "vox" character speech system and the process memory relocation system
University of Southern California (USC): Part-Time Lecturer, January 2004 – Present
· Developed curriculum for and currently instruct ITP 485: Programming Game Engines
· Co-instructed ITP 380: Introduction to Game Programming with Paul Keet and Matt Rusch; personally developed approximately 60% of the curriculum for the course
· Co-instructed ITP 481: Video Game Graphics Lab with Matt Rusch; personally developed approximately 25% of the curriculum for the course
Electronic Arts Los Angeles: Senior Software Engineer, March 2003 – December 2006
Engineering Lead, Medal of Honor™ Airborne (PS3, XBOX360)
· Architected game systems, wrote code and conducted R&D into new technologies required for the game
· Set goals and developed execution strategies, working with Technical Director & Development Directors
· Assisted team members with solving problems, debugging, designing new systems, and career development
· Screened and interviewed potential new employees
Medal of Honor™ Pacific Assault (PC)
· Co-designed high-speed DX9-based “replicant” rendering technology with Paul Keet and Mark Dochtermann; implemented and maintained the system myself; patent pending
· Designed and implemented Granny™-based skinned model rendering and character animation systems
· Designed/implemented engine technologies including XML object serialization; contributed to physics system
· Augmented the Radiant world building tool; supervised two other tools engineers
· Augmented Quake multiplayer client-server layer to work with the new model and animation systems
Midway Home Entertainment: Senior Software Engineer, March 1999 – February 2003
Crank the Weasel, Freaky Flyers (XBOX, PS2, NGC)
· Designed and implemented PS2-optimized animation blending system for Fang2 engine, plus the attribute system, world object class hierarchy, XML-based world loading system, event system, and work scheduler
· Wrote 50% of first two Weasel game prototypes, including skinned animation system and Maya export tools, character control, loot system, health system, fighting system
· Wrote DogPound (an art asset revision control tool) and Shark2 (a world building tool)
· Provided character voices for Ready2Rumble and R2R2, Freaky Flyers, Legion, Haven and Fireblade

QUALCOMM Incorporated: Software Engineer, November 1996 – March 1999
· Wrote C++ class library for QEDesign 2.0 CDMA analysis; maintained and upgraded QEDesign software
· Integrated CDMA analysis engine into the Parcell tool, at France Telecom’s Paris headquarters
· Helped port base station controller software for QCS-800 to PC platform using Dialogic DM3 CT board
Visix Software Incorporated: Engineer, Consultant, Trainer, Tech. Writer, May 1994 – November 1996
· Served as a consultant at customer sites in the U.S. and Canada, providing guidance, designing systems and cutting code (clients included Ford, Susquehanna, Arbortext, Hydro Quebec)
· Managed a 4-person training team: wrote, edited and illustrated Visix’s 4 training course texts, instructed one-week training courses for corporate clients, both at HQ and at customer sites in the U.S., Canada, Italy and Finland (e.g. Bellcore, JP Morgan, McDonnel Douglas, Los Alamos National Labos, Vanguard, AT&T)
· Designed and implemented the split container manager (sliding window panes GUI) for Galaxy
· Led seminars at three annual Galaxy Developers’ Conferences
Internships, 1986 – 1994
· Co-op university internships: Bell-Northern Research, Microsoft, Dy-4 and CS Computing (6 ´ 4-month terms)
· High school summer jobs programming in C: Du Pont Canada (1989) , CIBA-Geigy Canada (1988), The Toronto Stock Exchange (1987), Canada Systems Group (1986 / age 16)
Education:
B.S., Systems Design Engineering: University of Waterloo 1989 – 1994
Exclusive 5-year co-op program enabled me to acquire 2 years of real-world work experience during my time at Waterloo; held Canada Scholarship for all 5 years; awarded University of Waterloo Special Entrance Scholarship, University of Toronto Arbor Scholarship (declined) and Queen’s University entrance scholarship (declined)
Personal:
· Member of Toastmasters International—received District 5’s Toastmaster of the Year award in 2002
· Amateur jazz saxophone, piano and flute; I also compose and arrange jazz music (when I have time!)
· Produced animated and live-action super-8mm films and videos as a child/teen
I am 36 years old, a Canadian citizen with a green card. I have lived in the U.S. since 1994, and plan to become a U.S. citizen. I am honest, responsible, reliable, loyal, trustworthy, and I’m passionate about making games. I enjoy being productive, take great pride in my work, and thrive when I’m challenged and under pressure.
References: Upon request

Tuesday, May 30, 2006

Publications

Many of the publications cited below are available through Subversion (SVN) at http://opensvn.csie.org/JasonQGregory/.
  • User Id: visitor
  • Password: jqg
You can access the repository with any web browser, or use the Tortoise SVN client for a more user-friendly experience.

Patent: Instanced Rendering in DirectX
While at Electronic Arts, my colleagues Paul Keet, Mark Dochtermann and I developed a cool way to do instanced rendering in DirectX, which I implemented for use on Medal of Honor: Pacific Assault. Our patent on the technique can be viewed here: http://www.patentstorm.us/patents/7209139.html.

Course Notes - ITP485: Programming Game Engines
ITP485_CourseNotes.doc
I developed and currently instruct ITP485: Programming Game Engines at the University of Southern California. These are the course notes I wrote for last fall's class. I'm currently working on revising the notes for the upcoming fall 2006 semester.

Presentation on the Basics of Skinned Animation
AnimationPresentation.zip
I've used this introductory talk a number of times, both at USC and in other venues. To view, extract the contents of the .zip file to a folder -- the three .avi files need to live in the same folder as the .ppt.

MOH Insider
I contributed various articles and development logs to the MOH Insider series. A good example is my article on skinned character animation.

EA Journal
I wrote an article for the EA Journal describing the Action Tree animation system I designed and implemented for MOH Pacific Assault. Unfortunately I cannot share it here, as it is proprietary to Electronic Arts.

Galaxy Training Manuals
When working for Visix Software in Reston, VA, I wrote and/or edited a number of training manuals describing various aspects of the Galaxy Application Environment.

Galaxy Developers' Conference Seminars
During my time at Visix Software, I regularly led seminars on the architecture and use of the Galaxy Application Environment at annual Galaxy Developers' Conferences.