← Back to Portfolio

The Magnificent Misadventures of Poddles and Bowlber

Battling between chaos and curiosity, and realizing when to let each win for two unique characters.

Engine Unity
Language C#
Timeline Solo Project
Status Shipped

The Magnificent Misadventures of Poddles and Bowlber came as my in between when I was working on CyberCity Runner and Tapped Out. When I first came back to it, I had no idea where I had left off except for some wonky code that seemed to work in varying parts and conditions. So I took that to work and let each varying piece work for what it wanted to do. Bowlber could move really fast that you might miss the jump between platforms where Poddles could form great leaps or heroism but moved slow enough that he could be caught falling with the platform. Both abilities were something I wanted to give to one character, but each skill would lock out the other if applied on one character, and from one, came TWO new characters!

Working with legacy code you haven't read in a while or practiced is a skill on it own. Working with your own legacy code that you didn't bother to document or annotate is another, and it's why I couldn't figure out why my original character couldn't just earn the ability to sprint for a few seconds or why he couldn't have a super jump if he could double jump. Item generation would only work when the player had specific abilities because the platforms had to adapt to whether the player was moving slower or if they could jump farther.

Core Problem

When your obstacles and rewards are dependent on your character's abilities, you ought to make sure those abilities can pull through.

I figured if I can't have one character have both abilities, why not have two characters have each ability. I saw more stable play throughs, quicker iterations that solved platform regeneration and item randomization without risking the reward factor of having to collect all the gems before the platform fell. No longer trying to time when to jump with Bowlber because platform generation became faster and the gaps became shorter to accomodate his speed, but his lack of air. Poddles was soaring through the clouds like the raindrop he is to reach new heights and earn more gems.

One thing I was able to grant both characters was the ability to double jump, as well as the ability to walk off a platform and still jump. The classic Coyote Time — a small window after walking off a platform where the player can still jump, named after a certain cartoon character who runs off cliffs before realizing gravity exists.

if (jump){
    groundCounter();
    if (grounded)
    {
        anim.SetTrigger("Jump");
        rb2d.AddForce(new Vector2(0f, jumpForce));
        jump = false;
        canDoubleJump = true;
    }
    else
    {
        if (canDoubleJump)
        {
            anim.SetTrigger("Jump");
            rb2d.AddForce(new Vector2(0f, doubleJumpForce));
            jump = false;
            canDoubleJump = false;
        }
    }
}

In the end, being able to use their abilities to traverse the levels in their own unique manner gave them their own strengths. Trying to introduce different challenges and obstacles per character and level just unfolded and the possibilities had become a wide range of options now.

What worked, and what I'd do differently.

What Worked
  • Unique character abilities — gave the game a good feel in deciding how you wanted to play.
  • Platform generation and item spawning are part of a system I want to continue to use moving forward in other platformers.
What I'd Change
  • Level progression could be improved to save players stats and scores per level.
  • Could use more item randomization and power ups instead of single chance reward or dangerous items.