Tales of the Rampant Coyote
Adventures in Indie Gaming!


(  RSS Feed! | Games! | Forums! )

Tuesday, January 16, 2007
 
Jet Moto Memories
I got a couple of emails over the weekend by someone asking me about Jet Moto. Principally, he was asking what happened in Jet Moto 2 to make it "less fun" than the first game. That, I couldn't answer. I wasn't involved in the sequel's development, and frankly I enjoyed JM2. But then he asked me for a few stories and technical details.

The scary thing is, it's been a dozen years since I was working on that game. It's amazing how time flies. For amazing, read "freaking scary!" But here are a few tidbits I remember.

The original concept behind Jet Moto was to do a game that felt like science-fiction motocross. That meant the chaos of having a lot of bikes on the track. Twenty, to be exact. And unlike most racing games of the era, we didn't want the AI to be merely mobile timers and obstacles. We wanted to see them really jockey for position, fight each other --- and of course, wreck.

Technical Issues
One decision we made was to go with wheel-less hoverbikes. This was due to a technological limitation: We wanted to have 20 bikes in the game, but we couldn't afford to model 40 nice, round-looking wheels in addition to the bikes, riders, and environment. By modeling the bikes with no wheels, and assuming we'd needed a minimum of about 32 triangles per wheel, that was 32 x 40 or 1280 polygons we got out of rendering. (Yes, there's Level-of-Detail, but the plan from the beginning was to make it very possible to have all 20 bikes on-screen in close proximity at once... that was the whole idea).

The physics system was the brainchild of Travis Hilton, the lead programmer on the game. He'd done some work on "particle physics" while getting his master's degree, and wanted to use them for a practical purpose - in this case, the game. There was one problem. When all was said and done, the physics system was extremely expensive. On the Playstation, it ended up taking something like 6.5 - 7 milliseconds to calculate all collisions, responses, and spring forces. That may not sound like a lot, but we were running 20 frames per second (with a full physics update every frame). 1000 milliseconds per second divided by 20 is 50 milliseconds in which we had to process everything - physics, AI, player controls, sound, and of course processing the entire game world and sending that data down the rendering pipeline. We really only had enough processing budget to handle maybe 4 physics bikes at that rate, not including AI processing time.

Since running 20 bikes was critical in our design (we really wanted the chaos of a motocross competition, with bikes everywhere), this meant we had to design a whole 'nother physics system for the other 18-19 bikes racing with you. That was my job. And I had to have them all run within just barely more time than a single fully-physics bike. The budget that they gave me to fit the AI within kept shrinking as development continued. I think at one point they asked me if I could make the AI for 18 bikes fit within 4.5 milliseconds, and I explained that our collision detection routines couldn't even run that fast just to make sure the bikes didn't hit anything. In the end, I think I had about 7.5 milliseconds to work with.

So my proud contribution to Jet Moto was the lame AI and physics for the AI bikes. If they didn't move exactly like the player, that was my fault. I did time tests and everything to try and get them resemble the behavior as best I could, but it was never satisfactory to me. I also did a bunch of the "gameplay" code - all the little odds and ends that need to be in place for there to actually be a game in place. The grappling hook code, calculating race positions and checkpoints, etc.

The Lost Track
One of the early prototype levels that was created for the game was completely thrown away (which definitely impacted our schedule). I think we had a series of tracks set in some kind of stadium planned. Unfortunately, the stadium track sections did not match the design emphasis of the game whatsoever. They were really laid out as more of a speed-bike track with a few bumps.

After much consideration, the entire theme was dumped, and all of the track sections (which made up almost all of a complete level) were archived and never seen again.

He Ainnagonna Finish!
One of the early design decisions for the more difficult levels was to have the infamous cliffs. It was always intended that a fall off a cliff would remove the rider from the race (after all, they'd be in the hospital or something). The idea was that there'd be fewer and fewer racers with each lap, and that the player would be encouraged to take things carefully near the cliffs to avoid a race-ending mistake. This was fully implemented about mid-way through development. During one discussion, the local producer (Danny) kept talking about how the bike "ain't a gonna" finish. We hashed out a bunch of details, and I implemented the "ainnagonna flag." That was literally the variable name, "ainnagonna."

Unfortunately, what sounds great on paper or in your head often doesn't pan out on the screen. The thing is, it's not actually all that fun to be forced to go slow or suffer an instant defeat. And losing the AI bikes on the cliffs was a fairly random occurance, which meant that the difficulty level was almost purely random. Sometimes you'd hit the third lap with almost all of the AI still fighting and attempting to knock YOU off the cliff.... othertimes you'd be down to only three or four opponents.

We tried to soften the blow by implementing the "three strikes and you're out" rule. After the third fall, the player (or AI) was out of the race. Suddenly the "ainnagonna" flag became a counter.

That wasn't any fun, either. That just delayed the annoyance. Finally, we ripped the code out entirely, and the player only suffered the temporary (though still punishing) setback of being restored at the last checkpoint on the track. Though the code was gone, I believe the "ainnagonna" flag (or counter) was still left in the bike data structure. In fact, I believe it remained through Jet Moto 2... completely useless and forgotten (though I'm pretty sure I included a comment so people knew what it was intended to do... or what it ainnagonna do).

The Best Jet Moto Player In The World
During the final days of testing prior to releasing the gold master to the publisher for THEIR testing and duplication, we had a Jet Moto tournament. The big challenge was between myself and Nate, our lead tester, as we were the two best players. Everyone participated, and we spent about three hours just playing it like crazy and watching each other play it. The final round of the tournament came down, unsurprisingly, to Nate and me.

My favorite --- and best --- level was "Nightmare," the final track that towers over a city. Unfortunately, I choked on that one this time. I think I still managed to squeak out a win, because I still maintained that I was "The Best Jet Moto Player In The World!" At least until the game landed in stores. I imagined that my title would be lost within two days of the game being available to the public.

Jet Moto Trivia
The name of the mountain level, "Willpower," was actually a bit of a joke and compliment for the lead artist / modeler, Will Dougherty, who designed the level.

Some of the Jet Moto characters were named after SingleTrac employees. Polly Harris was named after Polly Harris, a programmer (formerly testing manager) at SingleTrac. Like her picture, she was a skydiver. She used to be the camera-person who would wear a camcorder on her helmet and tape people on their first dive. We saw the recording around that time of then her parachute opened UNDERNEATH her as she was taping someone's jump. We were all very lucky to have her still with us on the team :) (And no, that didn't stop her from continuing to jump!)

One of the racers was named after Michael Makarczyk, one of the artists. The picture shows that racer swimming, and if I recall correctly, Mike was also an avid swimmer. And I believe he also raced motorcycles. But not motocross.

John Olsen, who did work on Void War, got to work on the PC port of Jet Moto as his very first task at SingleTrac. Though he had some help from various team members when he was working on their pieces, I think to a large degree he had to handle that port as a solo programmer. Talk about being thrown into the deep end!


(Vaguely) related verbal doodles:
* You Can't Design Fun On Paper
* A Pirate Story
* On Reviews and Criticism
* Easter Eggs

.

Labels: , , ,



Did you enjoy this post? Feel free to share it: del.icio.us | Digg it | Furl | reddit | Yahoo MyWeb

Comments:
The PC port of Jet Moto was a little easier than a solo job since Steve Willis was doing the PC port of Twisted Metal 2 at the same time, so we shared ideas.

I appreciated being back on a team larger than one when I moved over to help with Jet Moto 2. I suppose you could blame some of the change on the feel for JM2 on me, since I was involved in some of the design of the AI for that game.

We ended up cutting down the number of simultaneous riders in the game so we could dedicate a bit more processor to each.

Rather than fully coding the racing behavior in JM2, we recorded Mike Snow (a tester and sponsored snowboarder) running each track multiple times. The AI would then use that recording as where it would prefer to be if nobody was in the way. That way, we could automatically use all the corner cutting and finding the ideal paths just because Mike had learned the tracks.
 
I love these behind-the-scenes articles.

Jet Moto was one of my favorite games for the PSX simply because it was so accessible and downright fun. I know I caught the non-gamers in my house playing it on more than one occasion.

And that Nightmare level was probably my favorite. I just really liked the look and feel of it. There was just something fun about being miles above a cityscape zooming around.

If I remember correctly, there was at least one "big" jump that I always found particularly exciting because you could get massive air but landing wrong was a good way of flying off the track (which I did, many times!).
 
Looks like a new batch of players will have access to your baby:

http://www.kotaku.com/gaming/psp/whats-on-deck-for-the-playstation-store-this-229142.php

Wouldn't it be cool to meet someone playing it on a psp next to you on the bus/train/plane?
 
Chris: Yeah, the Nightmare track was one of the few levels where you really did have to slow down or you'd go over the edge... or, at best, actually get a lousy time because you could accelerate better descending than free-falling (that's weird physics for you, but it's true).

I think the one you are thinking of is actually right at the beginning of the race --- when you came over it again in subsequent laps, you had to be careful or you would just go FLYING.

Martin Richard -
DUDE! That's awesome news! The original!!! Not quite enough to get me to buy a PSP (I already have two original copies... the original and the "Greatest Hits" version which starts with all the tracks unlocked).
 
Congrats on being next for the PSP. They are reviving some cool titles. Rally Cross was released last week, which is unusual given its relatively unknown status (but a cult hit among people that do know it).
 
I'm kinda excited about having a PSP game. And ... hey, if it's emulated, it means my name is in the credits! Woot! :)

Warhawk may have been my favorite to work on, but I have some very fond memories of getting Jet Moto out the door. Though the new console game I'm working on could give Warhawk a run for its money...
 
Some people dream about flying, others about falling. Jet Moto riders do both.
 
I remember Jet Moto back on the playstation. Was a fun game!
 
What an honor to be able to communicate with someone who was responsible for, not only my favorite videogame of all time, but a game that meant a lot to my family and I. My brothers and I played Jet Moto every single day for months and months, and then every single time we would get together over the holidays. We got so good at the game that we frequently would find ourselves having to race on the ceiling (in the ice caves) or walls to keep from braking becuase we knew if one of us did, it would cost us the race.

Thank you for all your great work and for making a game that was difficult, but rewarded you for mastering it's difficulty. Also thanks for having the guts to make an original idea in racing that didn't fall prey to a need to make it more "badass" with missles and other nonsense.

Brandon@crbctw.org
 
Post a Comment

Links to this post:

Create a Link



<< Home

Powered by Blogger