GMTK 2021: Momma Duck

Cover art for the Momma Duck game, showing a momma duck and three ducklings.

tl;dr: I made a game about a Momma Duck and her ducklings for the GMTK 2021 game jam!

The game

My game is about a momma duck who needs to lead her ducklings through a dangerous level to the safety of a pond.

The ducklings don't move as quickly as Momma, so she needs to keep an eye on them and go slow!

If Momma gets too far from her ducklings, they stop and need to be re-collected!

If a duckling encounters an enemy, they get scared and run back to their start position!

I used the Surfacer and Scaffolder frameworks that I've been working on. So it has polished point-and-click navigation and nice menus.

The theme

The theme for the game jam was "joined together." I think a momma duck trailing behind her ducklings is a great fit!

An animated GIF of a momma duck leading a string of ducklings

The game jam

The GMTK game jam is an annual event. This jam is 48-hours long. You can work by yourself, or with a team. You can use pre-existing art, sound, and code, or create everything during the jam.

I worked solo, and created everything during the event. Except for the two big frameworks I used and whatever other tools Godot provides.

Some gameplay footage

An animated GIF showing a gameplay from Momma Duck: Momma leads her ducklings around enemies to the safety of a pond

An animated GIF showing a gameplay from Momma Duck: Momma leads a long string of duckling to a pond

An animated GIF showing a gameplay from Momma Duck: Momma finds a lost duckling

A rope simulation

I spent a lot of time implementing a rope simulation, which I was going to use to show the connection between a duckling and its leader. It included cool physics swinginess and stretch, and used width and color to indicate how close you are to losing the duckling behind you.

BUT. It was distracting, and didn't really add much to the experience. It's pretty obvious when a duckling is in tow. We all know how ducklings work. So I removed it. I only wish I'd spent those hours on other parts of the game!

An animated GIF showing a gameplay from Momma Duck: Momma duck leads a duckling around and a swinging leash rope dangles between them


What went well

  • My frameworks work!
    • I did fix a few framework things that cropped up during the jam, but overall, they both worked pretty well!
    • I got a lot of feedback about how polished the game feels, and I think that's mostly due to all the heavy-lifting done by Surfacer (mostly platform-graph, path-finding, and navigation annotations) and Scaffolder (mostly screen-navigation and GUIs).
  • Great concept
    • I really like how well the Momma+duckling concept worked out.
    • A cute concept to bias the audience is always a good idea!
  • I like working solo

What could be improved

  • Didn't need the rope simulation
    • I spent a few hours getting this to work.
    • And, in the end, it was distracting from the gameplay, so I removed it.
    • At least this is definitely a tool I can re-use in the future.
  • Needed more play-testing of AI decision logic
    • The ducklings sometimes stop following in an unpredictable way.
      • They are definitely supposed to be easy to lose track of (Momma's gotta look out for her babies!), but it's a little too easy to lose them, and it's sometimes not very predictable.
      • This is probably mostly due custom decision logic I wrote for the ducklings and enemies.
      • But there also might be a bug in Surfacer that sometimes causes navigation to stop unexpectedly.
    • The fox, the only enemy that actually uses Surfacer in an interesting way, is way too skittish from Momma, and doesn't threaten the ducklings enough.
      • Also, the fox seems to get stuck in a stand-still sometimes, which is probably also due to a Surfacer navigation bug.
  • Needed more time for level design
    • I only started making the final levels in the last couple hours of the jam.
    • I definitely should have spent more time adding interesting puzzles, and helping the levels to make more sense!
  • Needed more time for sound design
    • Mostly, I wish the ducklings made a more peepish peep sound, and Momma made a more quack-like quack.
    • I threw the sounds together in all of maybe 5-10 minutes.
  • Still some rough edges to fix in Surfacer
    • Edge-calculation false-negatives
      • I mostly got around this with playtesting.
      • But there are some still places where you can get through one way, but not back the other.
      • There are some graph edge cases that aren't supported right now, and really should be:
        • Hitting an intermediate ceiling surface before reaching the destination surface.
          • This essentially produces false-negatives for most potential jump calculations near low ceilings.
        • There seem to be more fall-from-floor false-negatives than there should be.
    • There is a bug in Surfacer that sometimes causes navigation to stop unexpectedly.
  • A bug in the level-select screen when unlocking new levels
    • Ideally, you wouldn't have access to the next level until you've passed the previous level.
    • But there was a bug in my new-level-unlock-animation that I didn't have time to fix.

🎉 Cheers!

This is a simple icon representing my sabbatical.