Inspiration

Good old Doodle Jump and a bit of the incredible machine. I am a huge fan of retro games and tried to bring a little fun game to life again.

When thinking about which game to create i was scrolling through my old iPod Touch, found Doodle Jump and though: Why not twist the concept a bit? ;)

What it does

Doodle Drop is a daily contraption puzzle the whole subreddit solves together.

Every day a scheduler auto-posts a fresh, hand-tuned puzzle: a doodle ball sits above a bucket, with gaps, ledges, and dead ends between them. You drag parts from the tray — planks, trampolines, fans, balloons, bumpers, sticky pads — onto the paper, hit Test, and deterministic physics decides whether the ball rolls, bounces, and floats its way home.

You can also create your own puzzles and post them, so they can be chosen as the next daily contraption puzzle.

These are the core features:

  • One shared daily, each post its own scoreboard, with spoiler-free Wordle-style sharing (part count + time, never your placements).
  • A party-hat community goal — if 25 players solve today's daily, tomorrow's ball spawns wearing a party hat, and the splash counts it down live.
  • Streaks with freezes, streak flair that travels into every comment thread, and an all-time league.
  • The play mode is the level editor — once you've solved the daily, build your own contraption, prove it's solvable, and publish it as a fresh Reddit post credited to you.
  • Ghost replays of the #1 solution, server-gated so they can't spoil the daily.

How we built it

Phaser 4 (4.2.0) for rendering and input, mobile-first. Matter.js physics in deterministic fixed-step mode — we turned off world.autoUpdate and step the simulation manually, so identical placements always produce identical results. That determinism is the necessary: it's what makes stored solutions replayable as ghosts and makes cross-device scores trustworthy. Devvit Web — the whole game runs as an interactive Reddit post. A scheduler creates the daily; Reddit APIs handle posting, flair, subscriptions, and leaderboards. Hono for the API routes, TypeScript + Vite throughout, strictly typed and linted. A procedural doodle-rendering layer gives every part that wobbly, hand-drawn notebook look instead of clean vector art.

Challenges we ran into

  • Determinism across devices. Physics engines love to be frame-rate dependent. Getting Matter.js to produce bit-identical outcomes on every phone was a challenge.
  • Legacy posts breaking on updates. Removing a part type tha I did not want for the first version crashed the tray on old stored levels. I learned to filter stored levels and replays down to known part types so day-1 posts keep working after every re-publish.
  • Reddit's platform quirks. This was my first time creating a game for Reddit and i had to get used to the dev-features of the platform.

Accomplishments that we're proud of

  • A genuinely shared daily
  • The hand-drawn identity — wobbly lines, doodle parts, notebook paper. The artstyle has become really nice and i love it!
  • The most important accomplishment: I built a game, even a non-gamer (my girlfriend, who was a playtester for me) was able to enjoy the game and habe some fun!

What we learned

  • In a contraption game, a lot of the playtime is failure, so failure has to be fun, not punishing.
  • I learnt how to make UIs easier. With each version i changed the design a bit and made it more clear, so that the game later could be even more accessible to more and more people. Even the ones who are not used to gaming!

What's next for DoodleDrop

  • New Party
  • Skins for the Doodle-Ball
  • Maybe a Leaderboard Post on the installed subs
  • Better animation
  • More integrated Audio

Built With

Share this project:

Updates

Submission history