Week 1: What's up with Inner-Tube Climber

This animation of the tuber stuck in their tube is shown at the start of each Inner-Tube Climber level.

tl;dr: I didn't get much done last week, since I was mostly wrapping up with my team at Google. So this post will just catch you up with my current work on Inner-Tube Climber.

What happened last week?

Today is my first official day of sabbatical! So last week, I didn't get much done other than wrapping things up with my old team at Google.

What happened before that?

Back in October I participated in a game jam called Ludum Dare. The goal of this 48-hour hackathon was to build all the parts of a game from scratch and to design this game around a theme that was announced at the start of the 48 hours. The theme was "stuck in a loop", and I made an endless-climber-style 2D platformer game in which the player is stuck inside a “loop”–that is, their inner tube–from a tragic inner-tubing accident that left them stuck in the bottom of an endless crevasse! Here's my entry.

Since then, I've been slowly polishing this game, and converting it into a mobile app. My plan is to have it finished by the end of January. My current title for this game is Inner-Tube Climber. I'm hoping I can come up with something more interesting to call it, but this is at least simple and descriptive for now.

Here are some of the exciting additions I've added since Ludum Dare.

A new framework for navigating between screens, and being responsive to different screen sizes.

Some fancy fog (using fractal simplex noise), with a peep hole around the player, and snow!

Subtle lights and shadows, lots of particle effects (for falling snow, player collisions, and fire), and stretch and squash when the player jumps!

As well as:

  • Mobile controls.
  • Improved tilemap art.
  • Made tilemaps easier to configure.
  • Made levels and tiers easier to configure.
  • Added smooth transitions between the different parameters of adjacent tiers.
  • Added a wind mechanic, which affects player jump trajectories as well as fog, snow, and fire particle effects.
  • Increased the player's size slightly, to make them easier to see and control.
  • More sound effects.
  • Configurable settings.
  • A score system, with a multiplier based off of continuous ascent.
  • Increasing camera scroll and music speed with each new tier.
  • Improved player movement details to make jumping more enjoyable. Here are some highlights of the jump mechanics in my game:
    • Increased horizontal and upward speed after bouncing off a wall (this enables some fun gameplay and is what makes my platformer unique!).
    • Variable jump height (this means that the player can control how high they jump by holding the jump button for more or less time).
    • Increased gravity when descending (this makes the jump feel better, by giving the player more time to position themselves when ascending, but then lets them quickly descend afterward, once they've already lined up their trajectory).
    • Increased in-air friction after the player releases sideways movement (this makes things feel less out of control, and makes it easier for the player to land in the right spot).
    • Coyote time (this lets the player press jump a few frames after they've already run off the edge of the platform; the player can also press jump a few frames before they've landed on a platform).

And there are probably some other cool things I added that I just can't remember at the moment!

What's next?

Most recently, I've been researching how to set up a leaderboard for Inner-Tube Climber. It turns out, leaderboards are incredibly complicated to do correctly. Also, if you want a leaderboard, you need a backend to store it in, and you then need all sorts of security measures in place... This little addition to the game has taken too much time! But I think I finally have all the parts figured out. I'll let you know all about it next week!

🎉 Cheers!

This is a simple icon representing my sabbatical.


  1. It looks really nice! The particle effects when moving are great and the squash/stretch are great polish. Nice work!

  2. pdope
    firebase has a free tier and a leaderboard tutorial

    1. And the make it very difficult do things in Godot without writing your own server. They seem to rely pretty heavily on you using their handy SDKs for whatever client environment you're working in. But they don't have anything that works for Godot! :( (I am still using Firebase anyway; I'm just using their Admin SDK from some custom server logic, and doing a ton of heavy lifting myself).

    2. Ooh, actually, I just found an addon for Godot that might give me the ability to interact with the native Android/iOS Firebase SDKs (https://github.com/DrMoriarty/nativelib). We'll see if this works...


Post a Comment