A bubble-eating arcade game for every Pebble watch — aplite, basalt, chalk, diorite, emery, flint, and gabbro — controlled entirely by tilting the watch (IMU/accelerometer). Eat smaller bubbles, dodge bigger ones, grow to rule the arena.
| Action | Feeding | Game over |
|---|---|---|
![]() |
![]() |
![]() |
- Tilt the watch to steer your bubble (cyan) around a 600×600 world.
- Eat yellow food pellets and smaller bubbles to grow. Bigger = slower.
- Enemy bubbles are colored by threat: red can eat you, green you can eat, gray is too close in size for either. On black & white watches: solid means danger, hollow means edible, and your own bubble has a dark core.
- Enemies hunt food, chase you when you're edible, and flee when you're the threat. A bubble must be mostly engulfed before it's eaten — grazing a red bubble won't kill you.
- Select: pause/resume, or restart after being eaten.
- Back: quit.
- Pure C against the Pebble SDK, no external resources or libraries.
- ~30 fps
AppTimergame loop pollingaccel_service_peek()for tilt input. - Integer fixed-point (24.8) positions and velocities — no floating point.
- Area-conserving growth:
r' = √(r₁² + r₂²). - Backlight is held on while the game is running.
Requires the Pebble tool and SDK 4.33+ (first SDK with emery support):
uv tool install pebble-tool
pebble sdk install latest
pebble buildNote: after changing app metadata in
package.json(version, platforms, etc.), runpebble cleanfirst — the build caches the generatedappinfo.jsonand won't pick up the change otherwise.
pebble install --emulator emerySimulate tilt from another terminal:
pebble emu-accel tilt-right # also: tilt-left, tilt-forward, tilt-back
pebble emu-control # live tilt control from your phone's sensorsEmulator buttons: W=Up, S=Select, X=Down, Q=Back.
Enable the developer connection in the Pebble mobile app (Settings → "Use LAN developer connection", then toggle "Dev Connection" in the watch's ⋮ menu — requires being signed in), note the IP it shows, then:
pebble install --phone <server-ip>store-assets/ holds the appstore listing material (icons, banner,
screenshots). Icons and banner are generated by:
uv run --with pillow store-assets/make_assets.py


