Game Development Community

dev|Pro Game Development Curriculum

A Decade with GarageGames - Part 2

by Matt Fairfax · 02/14/2011 (1:33 am) · 14 comments

Continued


This blog is a continuation of the one I started writing earlier last week. If you haven't read it I recommend you check it out here:

A Decade with GarageGames - Part 1

BraveTree


When I left off from my last blog, I had just arrived in Eugene, OR (Sept 1st, 2004) to start working full time as a game developer. This was after 6 years of doing game development in my free time so it marked a *huge* milestone in my life.

At BraveTree, I immediately jumped into helping John Quigley and Clark Fagot with porting ThinkTanks to the Xbox 1 Live Arcade. I spent most of my time on that project fixing bugs and helping to test out the changes we made in gameplay (a sort of auto-aim system intended to make it easier with a controller). It did help me to start to become familiar with TSE (Torque Shader Engine) which would play a major part in my life for years to come.


farm6.static.flickr.com/5252/5444047395_c7df6bfc33_z.jpg
One of the debug rendering modes I used in ThinkTanks and some of the first pixel shaders I ever wrote

While I was helping with ThinkTanks for Xbox 1 Live Arcade, I was also spending my time revamping the BraveTree Car Pack and helping to polish up and ship the Jill Pack (I spent a *lot* of time in Milkshape on that one) and the Tank Pack. Also, in very typical programmer fashion, I was also bouncing back and forth to building a new version of BoomBall so that we would have it ready in time for IGC 2004.

It was a crazy time in my life with many late nights and a lot of work but I loved every minute of it. Here are some of my favorite memories from my time at BraveTree:

  • My desk was a folding table, my chair Joe's wife found on freecycle (I actually kep that chair till last week when I had to give it up because it was too damaged in my last move), and I worked off my own computer. This was the case for the entire time I was at BraveTree.
  • The office was tiny (most public bathrooms are bigger) so every time Joe or Mark wanted to leave or come back, John and I both had to lean forward to let them past
  • John spent many long hours playing Mutant Storm (the precursor to Geometry Wars) when he was taking a break from coding or when he was done for the day and ended up being extremely good at it
  • Joe taught me 2 extremely useful things: "Make your programmer art as ugly as possible so that the artists are overwhelmingly compelled to fix it as soon as possible" and "You know your game is getting close when your team starts to spend more time playing it than working on it"
  • Clark's Elegant Solution Axiom: "If you wait long enough, someone else will do it for you"
  • The guys buying me a case of Mt Dew Livewire once the BoomBall demo was done for IGC (the morning of) because I had been drinking it non-stop for many late nights in the weeks leading up to it
  • Working all weekend into the wee hours of the morning to put together a working example of a moving platform in Torque to show the rest of the community it could be done =P
  • Watching Clark drop a wheelchair from a work training simulator we were working on under contract into the dRacer game he was working on with Brett Fattori and racing it around the track at 100+ mph (it was a little squirrelly to steer).
  • All of the outlets in the BraveTree office (3?) were on the same circuit breaker as the outlets in the GarageGames kitchens across the hall. This meant that if anyone plugged in a water boiler in the GG kitchen at the same time we were working and the GG fridge kicked in, it blew the power in our office (we got really good at saving at lunch time). The biggest problem is that the circuit breaker box was in the storage room of the adjoining business and they all went to lunch pretty strictly from noon to 1PM so if it blew we were usually stuck for most of an hour (enforced break =P).
  • John actually missed the solar collection demonstrator that EWEB kept near our office when they would take it out for a fair or show. He liked looking to see how much it had collected every day as he walked by on the way to work.
  • On Tim Aste's first day in Eugene (a couple of days after min), he was pulling out of the GarageGames/BraveTree parking lot and was looking down the street to see if a car was coming when there is a horrible *bang* up against his driver side door. He quickly turns to look and it turns out that an old guy on a scooter (from the retirement community across the street) had slammed into the side of Tim's car. The old guy then proceeds to yell in Tim's face about how he shouldn't have been blocking the sidewalk. Tim pulled out as fast as he could!

farm5.static.flickr.com/4073/5444696716_72719e5eda_b.jpg
We had a little issue with the exporter settings on Jill at some point and ended up with full environmental reflection turned on

BoomBall


One of the main reasons, I started fulltime at BraveTree was so that I could work more on BoomBall. For IGC 2004 we wanted to get AI into place and to set an art direction for the game. I had also received a lot of complaints the previous year that the ball physics were completely unrealistic (like a big bouncy beachball) so I wanted to make sure that I improved that.


farm6.static.flickr.com/5260/5444110845_b8a4d6731b_z.jpgfarm5.static.flickr.com/4122/5444712496_726bc7ab69_b.jpgfarm5.static.flickr.com/4122/5444110877_403ac2182c_z.jpg
Some of the concept art that Joe had made while we were working on the artist direction for BoomBall

For the AI, I decided to see how far I could get with the stock Torque AIPlayer. On the first pass I simply made the bots move to about 10 ft behind the ball facing the opposite team's goal and to keep shooting at the ball as fast as they could (I think I had to add an offset to the aimobject script function so that they wouldn't keep shooting the bottom of the ball). This ended up being my favorite version of the BoomBall AI despite the improvements and complexity I later added (and the rewrite it got for RokkitBall). Since the ball was moving and all of the AI bots were chasing it constantly, when you had a lot of bots it looked a bit like two flocks of seagulls fighting over a scrap of food (imagine the scene from Finding Nemo). My next step was to have some of the gullers stop shooting the ball and to instead shoot players on the other team. Then I focused on teaching the bots to play zone defense (particularly the goalie) and lastly I had random bots start to rocket jump at time (the timing on that was tricky). What I ended up with was a very tough to beat soccer-style AI gameplay that could fill in any empty spots on the human led teams. It was fun but *way* too hard.


farm5.static.flickr.com/4142/5444746562_8d65b371c8_z.jpg
One of the best shots I have of BoomBall from IGC 2004 with the two teams of AI bots facing off against each other

To address the issue of realistic physics, I first tried to write my own spherical collision and physics system but I did not have the necessary skills to pull it off (not to mention the lack of chops on the networking side of things). This was the cause of many a late night. I ended up with something that looked more realistic but it often would impenetrate the walls of the area it weird ways or go flying off into space. Fortunately, we were able to borrow the code from GarageGames for the marble physics in Marble Blast and dropping that in at the last minute gave us some pretty robust physics for the BoomBall ball.

In the meantime, we ported BoomBall from Torque Game Engine to Torque Shader Engine (I think we were the first PC game to fully embrace it). This posed a whole new set of challenges since there were a lot of features that hadn't been ported from TGE to TSE as well as a whole new rendering pipeline chock full of bugs.


farm6.static.flickr.com/5219/5444746576_c1775ebefe_z.jpg
A quick test of a glowing BoomBall shader

Tom Bampton was still helping us with BoomBall and spent a decent chunk of this time period adding a secret cheat code that would cause a naked girl to "streak" around the play field. If you ever get a chance to work with Tom be sure to keep an eye out for that kind of thing ;)

The arena we ended up using was built by Tim Aste as a quick test of angled walls which we liked so much that we kept it. In the meantime, Joe spend many long weeks researching different art styles he was interested in for the game. He finally settled on a robotic style and ended up building the now familiar BoomBot in only 3 days and dropping it into the game the day before IGC.


farm6.static.flickr.com/5216/5444778912_23ae3e8b02_z.jpg
Justin DuJardin and I hanging out in the IGC parking lot

We took this version of BoomBall to IGC 2004 and even though I was proud of many of the individual components of the game (the logo that Mark did was particularly cool), the sum total ended up feeling like it was less fun than the very ugly version that almost didn't show the year before. The bots were too good, the ball moved too fast, and the game had lost some of the raw silliness that it had had before.

We came back from IGC with a new perspective on the game and I was determined to buckle down and really knock it out of the park but then something happened which through BraveTree for a loop:

GarageGames offered to buy BraveTree


The Next Chapter


Again it grows late and there is still much left to tell of this story so I will continue this in Part 3 =)


farm5.static.flickr.com/4141/5444182261_6ff5e1fc32_b.jpg
A shot from the new and improved BraveTree Car Pack (now with ejection seats)

About the author

I am a Game Designer at PopCap who has worked on PvZ Adventures, PvZ2, Peggle Blast, and Bejeweled Skies. I am an ex-GarageGames employee who helped ship TGE, TGEA, Torque 3D, and Constructor.


#1
02/14/2011 (4:20 am)
yet another good historical blog on your path to GG Matt. Do I detect an autobiography in the works :)
#2
02/14/2011 (6:34 am)
Ah crap! Now I have to wait another week for the next chapter!

Excellent read Matt, please keep'em coming! =)
#3
02/14/2011 (7:48 am)
Quote:
... at the last minute gave us some pretty robust physics for the BoomBall ball.

Quote:
... dropping it into the game the day before IGC.

There was a lot of close shaves with deadlines, then.
#4
02/14/2011 (5:48 pm)
Quote:There was a lot of close shaves with deadlines, then.

That's what real programmers do =p At my work, I remember use compiling a database that takes about 30 minutes to compile, 31 minutes before we were scheduled to demo the software.

Great article Matt.
Quote:Make your programmer art as ugly as possible so that the artists are overwhelmingly compelled to fix it as soon as possible"
I'm gonna have to keep that one in mind.
#5
02/14/2011 (7:45 pm)
"Make your programmer art as ugly as possible so that the artists are overwhelmingly compelled to fix it as soon as possible" This one I still use regularly. It's great advice.
#6
02/15/2011 (3:54 am)
Love the tip about making programmer art ugly so that the artists will hop to it! :D
#7
02/15/2011 (10:27 am)
I wonder what happens in the next episode?
#8
02/15/2011 (1:57 pm)
Quote:Tom Bampton was still helping us with BoomBall and spent a decent chunk of this time period adding a secret cheat code that would cause a naked girl to "streak" around the play field. If you ever get a chance to work with Tom be sure to keep an eye out for that kind of thing ;)

I had forgotten about that. I don't remember spending all that much time on the streaker, though.

Hmmm. I haven't made a good easter egg in years. The last one I remember was the space invaders easter egg in Constructor.

Thanks for reminding me, I shall endeavor to ensure the existence of easter eggs in all our games. In fact, I'm adding that to Mantis right now :)

T.
#9
02/15/2011 (2:17 pm)
@Ben: I've been applying that to the wiki lately >:)

Waiting for the book/soap opera based on Matt's story now.
#10
02/17/2011 (1:48 pm)
Great read. Keep them coming.
#11
03/04/2011 (12:19 pm)
I don't mean to be rude or anything but:
"I will continue this in Part 3 =)"

That was nearly 3 weeks ago. Come on man!!! I've been anxiously waiting to hear the next part.

I challenge your =) with a =( of my own. Not cool man. Not cool.
#12
03/04/2011 (1:38 pm)
Sorry =)

We've had a very busy couple of weeks at work (back-to-back updates of Zombie Farm which had a lot of new tech in them that I wrote). Things should be slowing down a little bit now and I am hoping to work on Part 3 this weekend (after I get some sleep and R&R).
#13
03/13/2012 (4:58 am)
Matt Fairfax...
We miss u...
#14
07/04/2017 (4:16 pm)
Never got the Part 3 we all deserved! ;]