by date
GPGT Postmortem - Part 1 of 3 (History)
GPGT Postmortem - Part 1 of 3 (History)
| Name: | Edward F. Maurina III | ![]() |
|---|---|---|
| Date Posted: | Aug 10, 2006 | |
| Rating: | Not Rated | |
| Public: | YES | |
| Comments: | YES | |
| RSS Feed: | or Subscribe with . | |
| Profile Page: | View profile page for Edward F. Maurina III |
Blog post
Synopsis
After much deliberation, I have decided to ignore the trend to write a postmortem using the standard 3-3-3 format (three things that went wrong, three things that went right, and three things learned). So, consider yourself warned, this postmortem is a little long.
I am writing this postmortem for the community and for myself. It is my hope that those who read it will be able to take away some useful bits of information.
This postmortem contains the following three sections:
1. History Of GPGT - In this first section of the postmortem I traverse the entire history of this project, highlighting the important events that occurred along the way. The purpose of this is to show how a whim and a hobby can turn into something more serious.
2. Project Analysis - In this second section of the postmortem I will do a detailed analysis of the project, providing a more formal look at the different parts of writing this book. I will discuss such details as schedule, budget, tools, etc.
3. Lessons Learned - In this third and final section I examine some specific things that I learned along the way.
Part I - History Of GPGT
The history of "The Game Programmer's Guide to Torque" is both a history of the book and to a large extent, a history of my time (thus far) as an independent game developer.
Like Many Of You
Like many of you, I have played computer games most of my life, and also like many of you, I played around writing my own 'games' of sorts. Up until about 1996, the idea of making games was nothing more than a dream and I pursued it like a hobby.
Pre-Indie Indies
In 1996, I had just finished my degree in Computer Engineering and had also gotten a great job at Intel Corp. Jerry Shaw, a prior classmate of mine, was also hired by Intel. We ended up working together and formed a friendship. Jerry would end up being my cohort in crime for many years to come.
Amazingly, we were both of like mind when it came to making games. So, we decided to team up in our spare time and to work seriously on a 3D game engine.
Once we 'knocked that out', we would move on to making games.


Using our combined programming skills, the results of much research (thanks NeHe, GameDev, GamaSutra, Romaka, Sulaco, OpenGL Org, Flipcode, et cetera!), and a little ingenuity, we quickly cobbled together our first attempt at a 3D game engine.
Our first attempt was fine as a tech demo, but it wasn't a real game engine.
We accepted this and decided to try again.
Options: "1. Make a Game Engine 2. Make a Game" - Choose One.
Having learned much from our first attempt at developing a 3D game engine, we started over again on "Nascent". This, we decided, would be our first 'serious' attempt at a complete 3D game engine.
Work on Nascent went on for about a year. We met every 2 or 3 weeks (when we could spare the time), compared our latest advancements, and assigned each other new tasks to work on. The project went well and feature after feature was added to the engine.
At the end of this effort, we had an engine with the following features:
- A fully hierarchical set of game classes.
- An embedded TCL scripting engine with full access to the C++ core components.
- A ROAM based terrain engine, utilizing multi-texturing and pseudo bump-mapping.
- Rudimentary game recording and playback.
- Support for scripted shape rendering (i.e. defined in script), billboard rendering, and full Quake 2 style shape rendering and animation.
- A multi-pass collision detection and response system.
- A limited Physics Engine.
- Hierarchical view-culling.
- Dynamic render scheduling.
- Multiple camera support.
- Etc.
However, we realized that there was still a long ways to go before we could start making a game. Nascent still needed a ton of features. Inevitably, this led us to a very significant conclusion:
Quote:
"You can write a game engine, or you can make a game, but you can't do both (with a small team)."
Decidedly dejected and plain tired of the entire effort, we both returned to our careers and lives, letting Nascent die a quiet death.
We did however continue to play games and quietly aspire to write our own.
GarageGames Breaks The Mold
In 2001, still working at Intel and still playing games (after work of course), my current favorite game was "Tribes 2".
After passing the 100 hour mark playing this addictive game, I learned that the engine used to make this this very cool game had been released under an extremely relaxed and inexpensive license. So, in August of 2001, I signed up and bought a license to the V12 engine.
At this time, the V12 engine (AKA Torque) was quite unique. Certainly, there were other engines available but none of them had V12's combination of history, features, and price. Also, none of them had the stellar and dedicated GarageGames crew behind them.
After getting my copy of the engine, I quickly jumped into the demo and examined the current docs.
I was both excited and somewhat daunted. This thing was huge!
Now, I had worked on projects of this size before, but still, wrapping my head around the engine and grokking it was no mean feat.
I think perhaps that this summarized excerpt from the original 'Known Issues' disclaimer says it best:
- .... This is not for the timid.
- GarageGames did not receive any documentation ... you will have to hone your code perusing skills.
- In the process of removing the Tribes2 intellectual property ... functionality was impaired
In addition to the exceptions noted in the original disclaimer, V12 did not come with all of the tools/exporters that we all take for granted now. For me, the real clincher was the lack of a Milkshape Exporter. Being a 'doit-it-on-the-cheap' guy, I didn't have 3DS Max and could not see myself spending that kind of money on what was still, only a hobby.


I quickly realized that I didn't have the time to work with V12 in its current state. So, I put it down for about a year.
Torque Notes Is Born
In early 2002, I came back to the GarageGames site to discover some great things.
Wow! These guys had really made some progress:
- Torque was up to release 1_1_2,
- The site had forums, resources, member home pages, a cool newsletter, and
- There was DOCUMENTATION.
"This is more like it", I thought to myself.
Jumping in head first, I read through the docs, downloaded release 1_1_2, and set to work on a game.
I started work on an MMO* and learned another valuable lesson.

Start small.
My game idea was way too big for one guy. However, it did force me to learn a lot about Torque.

While I worked on my game idea, I quickly exhausted the easily located documentation and started to read thread after thread, digging deeper and deeper to find information.
Eventually, I had compiled a pretty big collection of notes and Torque related links. So, I decided to share this information with the rest of the community in the form of a monolithic web page.
Thus, 'Torque Notes' was born.
What About A Book?
Torque Notes was an instant success, getting 1000s of unique hits every month and quickly delivering folks to topics they were seeking.
However, the page began to sprawl and to become very dated. In fact, it soon became completely unmanageable. So, I made a hard choice and stopped maintaining it.
Interestingly, by this time, a new thought was starting to tickle my brain,
Quote:
"Hmmm, there might be a book in this somewhere."
After thinking about this for some time, I decided that some kind of short reference would be a great idea. I figured,
Quote:
"A 100 page quick reference ought to be real popular."
"Essential Guide to the Torque Game Engine" Announced
In September 2002 I officially announced that I was writing a reference guide for the engine and gave it the working title: "Essential Guide to the Torque Game Engine" (EGTGE).
Nobody took any notice, but I was inspired and that was enough.
EGTGE Hits 350 Pages

March 2003 came and went. EGTGE hit and passed the 350 page mark.
At this time, I was still thinking that I would be done soon.
The work continued. In fact, the rest of 2002 and a good part of 2003 came and went, and the work still continued.
Quote:
"Hmmm. This is harder than I thought it would be."
Ken (Finney) Releases His Book
In May of 2004, Ken Finney's book "3D Game Programming All In One" was released. In my mind, this effectively quashed my plans for EGTGE.
Severely disappointed, I released the lite-edition of EGTGE as a community resource and called it quits.
I took a long delayed vacation, thinking that it was time to move onto a new project. But, I couldn't have been more wrong.
It seems, I had not accounted for the fact that Torque Notes, and the promise of EGTGE had started to draw a following.
The community response was rapid and overwhelming. People took turns, either lambasting me or encouraging me, but the gist of the message was the same from everyone:
Quote:
"Keep working on your book!".
A few days later, GarageGames contacted me and offered to publish my book if I would just finish it.
"You're Not Going To Get Rich"

September 2004 came rolling along. The book was at the 824 page mark. Somewhere along the way, Josh and I had decided that the book would need to be printed in two volumes.
Great! Now, I had two books to finish. This was getting out of hand.
It felt like it should be done, but I didn't feel like everything was in place yet.
Soon, IGC'04 arrived and it was time to head to Eugene. During the conference, Jeff Tunnell and I huddled up for a talk about EGTGE. I no longer remember everything that was said, but one thing did stick. Jeff told me (paraphrased):
Quote:
"Ed, you're not going to get rich making this book. So, just finish it up and get it out".
This was excellent advise. I just didn't I know how to follow it. At the time, I was seriously wondering how I would ever finish the book, that is, the books.
Draft Version Completed
In May 2005, I finished the draft version of the GPGT volume 1. I also had much of GPGT volume 2 ready to go. In total, I had accumulated:
- Approximately 1400 pages of written material.
- A finished single-player game prototype.
- A kit containing 24 GUI samples, 8 functionally complete interface samples, 3 example HUDs, 23 3D lessons, ...
I turned this in to GarageGames and they sent it to AK Peters.
GPGT Jam Session #1
By mid-September 2005, AK Peters had reviewed the draft and was asking for some changes. So, I hopped in my car and drove to Eugene to participate in a copy-editing and writing marathon (otherwise known as GPGT jam session #1).
Over Saturday September 10th and part of the 11th, Josh Williams, Ben Garney, Matt Fairfax, and I read and reviewed the entire guide. We also discussed the various changes that AK Peters had requested.
Basically the way this worked was that everyone got a chapter and read it. Then, they sat down with me (and sometimes with Josh) to review any issues and to have me answer any questions about questionable sections.
When we got done with the session I had the following list of things to do:
- Incorporate fixes for all 14 chapters.
- Replace the original 'Torque Man' (a 3D Pac-Man clone) with 'Maze Runner', thereby avoiding any possibility of legal issues with Namco Limited.
- Remove the game prototype creation chapter and instead append 'lessons' to the end of chapters, thereby building the game as the reader progresses through the guide.
- Put together a description to go on the back cover.
- Incorporate professional art for a finished version of the game (AKA Maze Runner Advanced).

All of this work needed to be done in about a week. So, I drove home and got to work immediately.
Josh did me a huge favor and wrote the back-cover text. Then, he hooked me up with Christophe Canon of FroGames to put the pro-art into Maze Runner Advanced.
Note: Christophe was a real pleasure to work with.
GPGT Jam Session #2
Exactly three months later, in mid-December 2005, AK Peters had re-examined the book. As a result of their re-review, they supplied a new list of things that needed fixing, and they sent a hard-copy with hand written notations back to GarageGames for the GarageGames staff and I to update. It was time for another jam session.
Over Saturday December 10th and most of the 11th, Josh Williams, Justin DuJardin, Ben Garney, Matt Langley, Jay Moore, Julie Moore, and I did another complete review.
It is worth noting that this sessions was a little different than our prior one. We had no schedule leeway for completing the fixes. They all needed to be in by the following Monday to stay on schedule.
It was painful, but we were successful!
Please Make It Stop!
After the second Jam session, I thought AK Peters would be taking over and I would get some time to breath.
Wrong!
In the period between December 27th 2005 and February 3rd 2006, AK Peters did the final review and layout work. Josh and I ended up being heavily involved with this process.
The way this worked was as follows:
1. Josh would receive the 'current chapter' from AK Peters and forward it to me. This chapter came in layout form. That is, it now closely approximated the final look. In addition to the chapter, we also received a list of 20 to 40 questions and comments from the copy-editors and layout staff.
2. Josh and I then (independently) re-read the entire chapter, looking for any errors or technical issues.
3. Next, I would handle all of the questions/requests that came with the chapter. These were usually such things as:
- Spelling Questions
- Missing Table/Image Captions
- Path Questions
- Illustration Revision Request
4. Once I was done writing all of my own corrections down, providing responses to the questions and comments, and re-doing any artwork, I shipped all this to Josh.
5. Lastly, Josh would packages everything up, adding his own inputs, and ship it off to AK Peters.
This went on for the next 39 days. During this time, I re-read every chapter at least once, I updated or re-createe 373 images, I wrote between 18,000 and 20,000 words of feedback in the form of 898 unique fixes and responses to questions, and I created an Index through a combination of concordance files and a whole lot of hand-editing.
In short, this experience was enlightening, but exhausting.
First Printing
In March 2006, AK Peters ran the first printing and took 90 copies with them to GDC '06.
They sold out.
Amazon, Barnes & Noble, GarageGames, and AK Peters all started taking and filling orders.
Over the next three some odd months, the Amazon Ranking would look like this:

Summary Of Effort
Over the past four years, I have spent about 2500 hours working on this book. In retrospect, I am somewhat surprised to find that writing was only about half of the work. Besides writing, I did all of the following tasks:
- Learned the engine thoroughly,
- Found and fixed engine bugs,
- Wrote tens-of-thousands of lines of script and C++ code
- Created well over 1000 unique art assets (mostly illustrations, but also textures for the GPGT lesson kit and the game prototype),
- Designed and wrote two complete single-player games, and
- Participated in review and proofing sessions till I was ready to cry.
At the end of the day, I believe that the effort was worthwhile. In addition to working with lots of wonderful people in the community, I also got to know the staff of GarageGames much better. GarageGames, the community, and all three of the Torque engines rock!
Mission Accomplished?
The bold among you may ask,
Quote:
"So, was Jeff right, or did you get rich?"
Yes, Jeff was right, and No, I did not get rich. However, I didn't start this project with that in mind.
My original motivations for writing this book were:

1. Help grow the Torque community,
2. Help others so they won't have to go through the growing pains I had to go through,
3. Get my own company started. i.e. Build some recognition for myself and hopefully for the Hall Of Worlds Logo.
4. Hopefully make some money,
I accomplished #4, but did I accomplish the other goals?
You tell me.
EdM|GPGT
Recent Blog Posts
| List: | 04/25/08 - Psssss... Hot! 03/24/08 - "Multiplayer Gaming and Engine Coding for the Torque Game Engine" and other announcements ... 02/28/07 - Its all still good... 12/01/06 - GGE and Writing 08/15/06 - GPGT Postmortem - Part 3 of 3 (Lessons Learned) 08/11/06 - GPGT Postmortem - Part 2 of 3 (Project Analysis) 08/10/06 - GPGT Postmortem - Part 1 of 3 (History) 08/05/06 - Seeking your assitance |
|---|
Submit your own resources!| Jerry Shaw (Aug 10, 2006 at 22:40 GMT) |
| Rubes (Aug 10, 2006 at 23:16 GMT) |
| Rodney (OldRod) Burns (Aug 10, 2006 at 23:18 GMT) |
| Matthew Langley (Aug 10, 2006 at 23:19 GMT) |
| Rex (Aug 10, 2006 at 23:41 GMT) |
My wife reads novels about Florida and it's 'interesting' inhabitants, and laughs at me as I sit reading a book of computer code...lol. It's a top 10 in my list!
Thanks again and I hope in the long run, the compensation will begin to 'adjust'. 2500 hours is well over a solid year of 40 hr weeks...
| Joshua Dallman (Aug 11, 2006 at 00:07 GMT) |
| Josh Williams (Aug 11, 2006 at 07:16 GMT) |
Great blog. :) Lots of lessons here for anyone interested in writing (and some even just on indie gamedev in general). Good stuff!
I hope you aren't too modest about the success of the book though. It's doing great on Amazon, and in book stores. In fact, relative to other game programming books, your project is way up in the ranks of the fastest selling titles! You should be proud man. :) You did an outstanding job, and though writing books in general isn't a get rich quick scheme, the work you put in is paying off already, and GPGT should have a nice lifetime in front of it. :)
It was a real pleasure working with you on this book!
| James Laker (BurNinG) (Aug 11, 2006 at 10:40 GMT) |
Can't find the link now... :)
| Edward F. Maurina III (Aug 11, 2006 at 16:01 GMT) |
Thanks to everyone. Like I said in the postmortem, I had the pleasure of working with a lot of great folks from the community and I got to know the staff of GarageGames better too. Speaking of which, GarageGames has really grown, but they've managed to not only maintain their skilled and excellent staff, but to add great-performer after great-performer.
I have a feeling that GG and this community will be making big splashes in the gaming and game related arenas for years to come.
@Josh and All
Likewise, it was a pleasure to work with you also. Note, you are entirely correct when you say:
Quote:
and though writing books in general isn't a get rich quick scheme, the work you put in is paying off already, and GPGT should have a nice lifetime in front of it. :)
I discuss the reasons for and against writing a book in part III of my postmotem which I'll be posting later today as a post part II and part III.
On another topic, I keep forgetting to ask, but it would be really wonderful if I could get a few book owners to do at least a small write-up on Amazon. You don't need to have bought your book there. As long as you own the book, you should feel free to write a review. This is a big deal for getting your book to the top of searches and would really help me a lot. So, I thank any and all who can spare the time to do at least a small writeup and ranking. Here is a link to the book on Amazon: THANK YOU.
EdM|GPGT
Edited on Aug 11, 2006 17:55 GMT
| Tom Bentz (Aug 11, 2006 at 22:01 GMT) |
| Mark Barner (Aug 11, 2006 at 23:25 GMT) |
I have been using Torque notes on your website since you first posted it. It has been great to see how you have been able to develop such a great product. The things that you learned, the people you met, the money you get from sales, the recognition and respect from the community. I think you hit your goals 1-3. As for number 4, I don't know what your goal was on that.. was it a million or two? :)
Edited on Aug 15, 2006 21:06 GMT
| Saurabh Torne (Aug 12, 2006 at 13:38 GMT) |
You must be a member and be logged in to either append comments or rate this resource.



Not Rated


