To Be A Rabbit
To Be A Rabbit is a 2D platformer where the player must use a lamp post to reach the end of each level. It features 22 levels and a short story. This page goes heavily into detail about the development of TBaR. This game is out! Click the image to go to the itch.io page!
Planning
Originally, TBaR was meant for the Playdate. The Playdate is a unique and modern handheld, but Kazoo did not have the money to buy one, and was intimidated by the C programming language. Kazoo stuck with Godot for TBaR, and began prototyping. Most of Kazoo's scetch pad was level designs and game mechanics, since story and characters were taken from Through.
Developing
Prototyping the character controller was simple enough. Rabbit has a few things he can do: run, jump, hold ledges, and throw lamp posts. Running and jumping were extremely simple, but Kazoo had to do a few interesting things for the other 2 mechanics.
Making Rabbit Work
For the sake of explanation, we will name each part of Rabbit.
- The L shaped areas that reach under Rabbit are called "ledge_denies"
- The thick orange area above Rabbit is called "ledge_grab"
- The blue box around Rabbit is his collider
- The arrows are the "ledge_adjusts"
- It is not visible, but Rabbit has a "post_collision_handler." This will be explained.
When ledge_grab starts colliding with the ground, it calls the function "calcHanging." If both of the ledge_denies are colliding, Rabbit cannot grab any ledge. If calcHanging is called and one of the ledge_denies is not colliding, Rabbit will stop falling and the appropriate ledge_adjust will position Rabbit so his hand touches the ground. Then Rabbit will play the ledge grab animation and his sprite will flip depending on the side the ledge is on.
When Rabbit steps next to the base of a grabbable pole, he can pull it up. After a short animation, Rabbit now has a pole. With a pole, Rabbit cannot jump or ledge grab. When the player presses space, Rabbit prepares to throw the pole. Rabbit can no longer move while prepped. The player can move the mouse to aim the pole, and Rabbit will throw when the user presses space. The post_collision_handler does a few things while Rabbit is aiming. It has a Raycast2D that shoots where the player points their mouse. It also checks if the post will collide with anything after it's thrown. If the new post collides with anything, the player cannot throw. Later in the game, a hard surface is introduced. Poles cannot land on this surface, they bounce instead. The post_collision_handler checks the ground to determine if the pole should bounce. If the pole should bounce, the post_collision_handler instantiates a copy of itself. This copy does a few things:
- Renames itself depending on the child number. (If it's the 3rd instance, its name is "3")
- Finds the rebound angle and points in that direction
- Shows a collision sprite
The post_collision_handler will not make a copy if it is the 10th handler, so the player cannot infinitely create handlers and crash their game.
Making Siko Work
Siko is the first NPC in TBaR, and he is the simplest. Siko can do 2 things: Walk and Jump. Siko has a long brace, but he jumps very high, and can catch the player off guard. Despite his verticle, he walks extremely slowly.
Siko only has a collider at his feet. The collider was shortened so Siko he wouldn't bump his head. In order to calculate jumps, he gets help from a node called "siko_jump" which has a destination node. When Siko collides with the Area2D in siko_jump, siko_jump gives Siko a velocity that will make siko land on the destination node. After Siko finishes the brace animation, the function "bump" is called, which launches Siko to the destination node.
Making Dad Work
Rabbit's Dad is the 2nd and last NPC in TBaR. Dad is a goat, and goats are great climbers. Kazoo thought having the dad directly walk up walls be a comedic subversion of expectations, so Dad completely ignores gravity.
Dad has a few tricks to make him walk up walls.
- The box on Dad's left is called "wall_detect"
- The box below Dad is called "floor_detect"
- The blue box around Dad is his collider
- The arrow below Dad is called "displacer"
Dad only walks to his left, and whenever wall_detect collides, he rotates 90 degrees to the right. After rotating, displacer snaps Dad's feet to the floor. When floor_detect stops colliding, Dad rotates 90 degrees to the left, and moves so his feet are over the floor. Displacer then snaps Dad's feet to the floor. Every time Dad rotates, gravity pulls him to whatever surface he's standing on.
Cut Content
In no particular order, Here is a list of all of the content Kazoo cut from TBaR:
- Esper. An NPC that the player would have to guide to the end of a level.
- Launching with gunpowder.
- Dialogue system enhancements.
- Turn based fight against Esper.
Meaning
Kazoo wants the story in all of her games to mean something personal. For To Be a Rabbit, Kazoo wanted to explore what it meant to try to be something you're not. Kazoo wanted the player to know that wanting to change is something that a lot of people experience. Don't give up just because you don't look a certain way. You can be anything you want to be, even a rabbit.