At the time I began working on Piranha’s Valley, I hadn’t really tried open-world level design before, so my strategy was to first approach the problem from a more familiar perspective. I started by brainstorming the individual missions– sets of obstacles the player would face in order to reach a single Star.
Once I had ten or so promising ideas (which would be cut down to six, because that’s how many Star missions there are in a course), I got to work experimenting with placing multiple missions in a single gameplay space. Arriving at the final plan shown here was a tricky process with a little trial-and-error, but that’s not to say I wasn’t guided by clear objectives. First, I wanted the Stars to be reasonably spread out, so no matter where players explored, they would have a very good chance of finding one before long. Second, I wanted to work additional obstacles into the main paths through the course– small challenges that weren’t part of any mission in particular, and that the player would pass through frequently while traveling around the level. This was the key to preventing the course from just feeling like six separate levels stitched together, and also helped ensure Star missions wouldn’t vary in difficulty too drastically. And third, I wanted the shape of the level as a whole to be nice and open, so the player would be able to easily see their way around and notice points of interest.
Building and implementing the level was its own challenge, but that was more because I had to adapt to the innate limitations of the game as they became apparent. Being an N64 game and all, there was a tight budget for how much stuff I could put on screen without affecting performance. Creating the level model was a delicate balance of using as few triangles as possible (less than 1000, in the final version of the course) without completely sacrificing visual interest. I also had to alter some missions after I discovered Super Mario 64’s memory is structured into object banks that make it impossible to use some combinations of objects in the same course. This is why one star that was originally going to have the player glide over the course on Hoot the Owl ended up using a Bob-omb cannon instead, it’s why the large enemy fish I wanted to place in the lake got cut, and it’s why the level contains Spindrift enemies (that happen to be in the same object bank as penguins) which I didn’t originally plan to use.