Madagascar (PS2/GameCube/XBox)

When I was just 19, I talked my way into a six month contract at Toys for Bob working as a cutscene designer/scripter on the Madagascar game. It was a fantastic experience.

Funny enough, they listed me in the credits as Cinematics Guy. Seriously, look!

What Does Cinematics Guy Do?

When I started the job, the leads at Toys for Bob weren’t sure what I’d be able to do on my own, so the expected workflow was this:

  • An artist/animator sketches out a complete storyboard for a scene
  • I implement the scene via visual scripting language according to the storyboard
  • That’s literally it

The first storyboard given to me was for a fairly long scene, and I stared work on it just three days after my first day on the job. That was three days to get set up, learn the RenderWare editor, and learn their proprietary visual scripting language. (TfB’s founders have since gone on to create a new version as an open-source project called Simple.)

If I remember correctly, it took me five or six workdays to complete the first cutscene, and it went pretty well. At this point in the game, there were a ton of small transitional cutscenes that were still in very rough states, so I started chipping away at cleaning them up while waiting for more storyboards. For the first few months, I alternated between implementing fully-storyboarded scenes and cleaning up smaller ones.

As the team’s confidence in me increased along with my own self-confidence, my responsibilities expanded. I started touching up the script, adding jokes, removing unnecessary lines, and sometimes filling in entire scenes; I wrote the first meeting with the lemurs as well as the final confrontation with the Fossa King, along with a bunch of other exchanges that linked levels and scenes together or brought details into the game from the latest version of the movie script (which the studio was loaned one copy of for two days about nine months before the game was supposed to be completed!).

“Mort, did it ever occur to you that saying that you’re not here proves that you ARE here?” “I don’t get it.”

I was also trusted to start implementing the more important cutscenes without an animator creating a storyboard first. One of my proudest moments during the project was when I showed a few team members the intro cutscene before the final battle, and got strong complements for this shot:

Lip-Sync Battles

At some point, we realized that flapping mouths based on audio volume would simply not cut it when it came to cutscene animation. The programmers (I can’t remember which one) did some research and found some tools that would automatically detect phonemes and create a phoneme timeline to accompany each audio file. When sounds were played in the game, a character would optionally be selected to be the source of that sound, and if there was an accompanying phoneme file (and the character was one of the main characters actually rigged for it), their mouth would automatically animate correctly along with the dialogue sound.

Unfortunately, the tool’s default settings simply did not work for us. I had to spend a few days tweaking the settings and playing around with an internal testing tool that would load a few test dialogue snippets and animate one of the main character’s mouths along with it. Tweak settings, play audio, rotate character, squint, look at their mouth closely while they talked, etc.

Eventually, I settled on whatever the best detection algorithm / sensitivity was and, if I remember correctly, tried to commit hundreds of automatically-generated phoneme files to the on-site CVS server and promptly took it down for everyone. Oops.

Fortunately, after that, we didn’t have to mess with the phoneme settings ever again. Or at least, I didn’t. Maybe the team made some changes after I left. I was only on a six month contract (that luckily ended the Friday before the Monday I was to start at San Francisco State), and production continued a few months after I left.

The Minigame

At some point, I decided that I could make a top-down shmup using existing elements and the game’s visual scripting language.

I came in on a weekend and hacked it together using mostly bug models.

The basic idea was to create a bunch of invisible checkpoint objects: Three above the top of the screen, three at the top of the screen, two in the middle, three at the bottom, and three below the bottom. Using these as path waypoints, I would spawn enemies at the points above the screen, move them to the objects directly below those, then to one of the two mid-screen objects, then to one of the objects at the bottom of the screen, then off the bottom of the screen and despawn them.

I gave the objects names grouped according to their rows, like A B C, D E F, L M, Q R S, and X Y Z. Then, in a notebook, I mapped out and wrote down every possible valid path from the top of the screen to the bottom of the screen. Finally, I created a data structure in the engine that would store a pre-determined list of rows with enemy spawns by pattern id.

I also added a boss bug that would spawn offscreen and then crawl between the onscreen points, laying eggs that would hatch into enemies that would fly towards the player. Defeating one of these would yield a powerup that gave the player a triple-shot.

Once the game ran out of pre-made spawns, it would speed up and switch to random spawns.

The following Monday, I built a version of the game with my minigame in it for my development PS2 and left the game on with my TV facing towards the walkway and the controller on my desk. Over the next few days, everyone in the office played the minigame. Eventually it was decided that one of the artists would take a few days to model spaceships and set up proper VFX for the game, and one of the other game designers would set up a high score system to integrate with the player’s save. Finally, the game was added as an official Easter egg to level 2 of the game. I was so proud!

Also: Long Camera Moves

Before I worked at Toys for Bob, I had spent two years at Marin Community College, taking general ed courses while taking one film class every semester. The college had a remarkably good film department, and after being merely a casual movie fan in high school, I was now fully a Movie Nerd.

As a movie nerd, I had to be obsessed with long takes in movies. So naturally, I put huge sweeping camera moves into Madagascar whenever I could. The limiting factor was often draw distance, so for any of these shots that pull back, wherever the camera stops is probably just a game unit or two away from something important disappearing completely into draw distance fog.