TSANCHEZ'S BLOG

Phineas and Ferb: Across the Post Mortem

Phineas and Ferb: Across the Second Dimention was my third published title, and my first chance to work on the Nintendo Wii. Phineas and Ferb is a well written, funny, and overall entertaining kids cartoon published by Disney. Dan Povenmire and Jeff “Swampy” Marsh, the creators of the show, were quite excited about having a video game tie-in to their highly anticipated movie. They gave us lots of support in figuring out what would not only make an interesting game story arc, but what would stay true to the series. In the end we actually ended up adding to the show itself with the introduction of the character Terry The Turtle, a new OWCA agent, who was designed in house at HIG.

My job ended up revolving around a few core set pieces, two boss fights and the Jetpack gameplay mode. The biggest part being the 4 levels of Jetpack gameplay there was some interesting but not unique tech that we decided on for those levels. The Wii, being an outdated platform couldn’t handle too much information being shoved down the draw pipeline. Combine that with the relatively low amount of usable ram in the machine and you end up needing to do tricks to make everything fit. Unlike the other levels in the game, the jetpack levels didn’t have the benifit of being set up like a stage. The camera moves with the players, and we wanted several minutes of fly time on each level, meaning you still needed a lot of level to traverse. So, our solution was simple: hexagonal tiles. But tiled levels look repetitive, so we built up our tiles as a bunch of doodads that could be turned on and off. Each tile had all the same parts, but different details would either be there, or not. Nothing in this tech was revolutionary, but it worked. Having only a couple of tiles per level let us get a lot of details in without going over the memory and draw limits. While lots of doodads let the artists get creative with the overall look without having to make miles of unique artwork. And this made everyone rather happy, especially since everyone suffered through making a non-tiled jetpack level for a pitch to the publisher and decided that the workload wouldn’t scale at all.

So here is a bit more on what went into these tiles. We started out with a n empty tile, and picked the lines of sight we needed. Notice the roads don’t cross at 90 deg.

From there we could add buildings that would turn on or off, leaving the parks as placeholders for any missing building.

Then, to make some tiles seem more active and interesting, we could turn on additional doodads for flavor.

Sometimes we’d let this happen randomly, but some tiles were “hand crafted” to always pick the same doodads. This kept the level from seeming “too repetitive” (but it was still repetitive), while still letting the designer put in any landmarks that would make the level feel right for the enemies that were going to spawn, or clear up some air space for the really big air units.

For the final boss fight in the game we had other challenges to overcome. Largely, we needed to stream in the different players. Since the fight happens in 4 segments, we needed to load 4 different pairs of players. Again, there was nothing fancy going on here. Dump the old players and load in the new ones. One big stumbling block to this though was the way the Wii sucks at handling disk ejects, resulting in days of debugging the level to make it happy with people ejecting the disk an inopportune times. The other stumbling blocks revolved around persistent pointers to data. The engine was designed to load everything once and then go. It wasn’t designed to have pieces dropped in and out. So, we had to dig through a bunch of places in code to make sure everything from meshes and animations to sounds would be able to be unloaded and loaded again, without dangling pointers. In the end, the design wasn’t killer, but it was a fun way to bring all the characters of the game together to finish off the story.

Working with Nintendo hardware was nothing but a pain in the ass. I can’t bash them enough for how shitty their tool chain and hardware is. This became even worse for our next project where we were supporting the 3DS. Nothing about the setup from nintendo was geared for productivity. While Sony and Microsoft both largely force you to fend for yourself after renting their hardware, they provide a good developer experience. Both support the industry standard Visual Studio development environment. Both come with complete documentation on their mostly standard APIs (Sony tends to lean twards Posix while MS obviously emulates Windows). Both come complete with working debuggers, solid hardware and plenty of demo applications. Guess where that leaves Nintendo? Usless, non-standard compilers and debuggers, non-standard APIs, minimal to no example code, buggy hardware, and an overall crappy developer experience. It was bad enough for me to make a crappy rant about it before.

Copyright © 2002-2019 Travis Sanchez. All rights reserved.