Development Diary #4 – On Level Design in a 2d Game

One of the greatest challenges developing Cally’s Caves 2 is how to go about designing 100 levels while keeping the game fresh.  Cally’s Caves had 27 levels, not including boss rooms or the challenge “subrooms.”  At the time, it seemed like a good idea to differentiate each level by the use of music, tile sets, and area names.  Every time you entered a new level, a new song would start playing, and every five levels the environment sprites would change.  While this worked to a certain degree, a large number of players played the first few levels and then gave up (either out of frustration at the difficulty, or just not enjoying the game).  This unfortunately led to a number of the levels and environment sets never being seen.  In retrospect, we may have been better off if we had changed the tile set every level and just rotated the four sets that we had.  Hindsight is 20/20, and having that hindsight doesn’t affect the product we already released.  It does, however, allow us to approach a sequel with the lessons we learned in mind.  Hopefully, using the lessons we learned, we can make the levels in Cally Caves 2 do a lot more for the player.


Level 3 of Cally's Caves
Level 3 of Cally’s Caves

Firstly, the levels in Cally’s Caves were pretty massive.  We started out with a number of levels that were 10,000 by 10,000 pixels, then whittled them all down to about 2500×5000 pixels (this was due to platform constraints, the iPhone 4 couldn’t handle the big areas without the game running choppy).  We thought that bigger was better, and that by allowing the Cally to run around huge areas, players would get the sense that the game they were playing was huge.  Looking back, it’s obvious now that the levels were too big, and that the areas within the level weren’t dense enough (See the screenshot of level 3 above, where a the lower left corner of the level is completely unused).  We added a lot of environment blocks between pathways to give it that sense of largeness, and added a lot of winding pathways with no real player gating, aside from a triple jump mechanic.  At a certain point in the game, if you hadn’t bought the triple jump, you couldn’t reach certain areas.

Level 1 of Cally's Caves 2
Level 1 of Cally’s Caves 2

Note the difference between the levels in Cally 1 and Cally 2.  The first level of Cally’s Caves 2 (pictured above), still utilizes winding pathways, but is much smaller than the levels in the original.  We are going with levels no bigger than 2048×1280 pixels this time around.  The density has also been increased, in the screen of Cally’s Caves 2, you can see that there aren’t any huge, unused areas in the level.  The empty spaces that are there are areas where the player can run or jump around.  We want to keep the sense of exploration, but make everything more functional.  If it doesn’t feel like it has a purpose, it doesn’t belong.

Cally's Caves 2 level 4
Cally’s Caves 2 level 4

Another change this time around will be the implementation of tutorial levels.  As you can see from the incomplete level 4 from Cally’s Caves 2 (pictured above, work-in-progress), the player is shown how jump-through platforms work.  At the beginning of the level, they must jump through the platforms to progress – there’s no way around them.  This introduces the mechanic to the player forcefully, they can’t miss it.  Next up, the player is able to use jump through platforms on their own (not forced onto them through a tunnel).  The final example shows the player that jumpthrough platforms also have no collision detection horizontally.  They can jump through these platforms from underneath, or from the side.  This simple level design utilizes Shigeru Miyamoto’s “rule of threes” that worked so well in Super Mario Bros (I actually first heard about this from Edmund McMillen in Indie Game: The Movie).  The player learns by doing, and there’s no need for lengthy text tutorials.

Cally's Caves 2 - Level 21
Cally’s Caves 2 – Level 21

Another way we are going to mix things up this time around is better gating techniques.  As mentioned earlier, the only gate in the original Cally’s Caves was the triple jump upgrade.  Cally’s Caves 2 is going to feature several types of gates, as demonstrated by the destructible walls pictured above.  The first time the player passes this level, they will not be equipped to destroy these walls, and therefore cannot get the treasure that lies within.  After they find the rocket launcher (in level 23), however, they will be able to destroy the barriers to reach areas they previously couldn’t.  It’s a classic game design technique used by some of the most popular games today, like Batman: Arkham Asylum, but the true inspiration behind the gates in Cally’s Caves 2 is the untouchable Super Metroid.  Destructible walls are just one of many different gate types we will be using in Cally’s Caves 2, including a spear gun that you can shoot into walls and make your own platforms and wooden barriers that can be destroyed with the flamethrower you find midway through the game.  We hope that adding these gates will give the player a better sense of variety, and pay homage to one of our favourite games ever.

Level design in a 2D game is hard, there’s no two ways about it.  Confounding the problem is coming up with the variety to keep things fresh over one hundred different areas.  We hope that with more tile sets, smaller-but-denser areas to explore, and well-implemented player gates, we can make Cally’s Caves 2 have more variety, keep the player’s interest, and more than anything, be more fun for the player.

We are 2 months and three weeks into the development of Cally’s Caves 2.  We have 43 of 100 levels completed.

One thought on “Development Diary #4 – On Level Design in a 2d Game

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s