Asperia Games

Arcade

Food Fall

Move the plate, catch what's falling. Burgers and doughnuts are points, the fire costs you a life, and you only get three.

  • Arcade
  • Reflex

Controls

Move
The plate follows your pointer
Tap
Same on a touchscreen

About this port

Ported from a React component in my tech blog, rewritten as a single dependency-free HTML file. Every sprite is an emoji; the two sound effects came with the original.

The simplest game in here, and the one that works best on a phone — every sprite is an emoji, so there is no art to load and nothing to go missing.

The bug that made it look finished

The original had a game loop gated like this:

useEffect(() => {
  if (!gameStarted || !containerWidth) return;
  // ...falling food
}, [gameStarted, plateX, containerWidth]);

containerWidth was only ever assigned inside handleMouseMove. So after pressing Start, nothing fell — not until you happened to move the mouse, at which point the whole game sprang into life at once. On a first play that reads as “broken”, and it’s invisible in testing because you’re already holding the mouse.

The port measures the stage on load instead. Start means start.

Other changes

  • Delta timing. The original stepped a fixed number of pixels on a 50ms interval. This uses requestAnimationFrame with a time delta, so it falls at the same speed on a 60Hz and a 120Hz display.
  • One Audio per effect, reused. The original constructed a new one on every single catch.
  • The plate is the cursor. cursor: none over the stage, which the original also did — worth keeping, it’s the whole feel of the thing.
  • Real restart. The original’s “Play Again” reset the score and then left the game stopped.

Arcade

More small games

All arcade games →