Building Shooting Stars Forever: An Arcade Game Born From a 9-Year-Old's Idea

Arthur had an idea for a game this summer. "What if you were a star trying to survive in space?"

It took some time to get right, but we're happy to share a demo: Shooting Stars Forever

You're a star trying to survive as long as you can—dodge hazards, chase green comets for upgrades, and see how far you can go. It's simple, fast, and way more addictive than I intended.

The Game

Shooting Stars Forever is an endless-runner arcade game with a cosmic theme. The core loop is straightforward:

  • Hold to soar, release to fall — simple one-button physics
  • Avoid blue hazards — comets, asteroids, black holes, gas giants, and suns
  • Chase green comets — destroy them to earn orbital upgrades (planets and moons that shoot for you)
  • Survive boss fights — every 1000 points, a boss appears on the right side of the screen

The game progressively ramps up speed and difficulty. Your score increases proportionally to game speed, so "distance" feels like real progression rather than arbitrary points.

It even has a global high score table now. If you qualify, you can enter your initials like an old arcade game. (I've already been bumped off the leaderboard.)

Technical Highlights

Physics that feel right. The player movement uses simple 2D physics—gravity pulls you down, thrust opposes, and velocity is clamped and damped for a "floaty" feel that suits endless runners. Black holes apply inverse-distance gravity wells that pull in both the player and nearby obstacles.

Procedural hazard generation. Obstacles spawn with weighted probabilities that shift as the game progresses. Early on, you only see blue comets. After 500 points, black holes, gas planets, suns, and asteroid clusters join the mix. Boss fights trigger every 1000 points with health that scales.

Upgrade system. Green comets are power-ups in disguise. Destroy one and a planet starts orbiting you, firing projectiles automatically. Collect more and you build a solar system—up to 5 planets, each with moons. It transforms you from vulnerable to formidable.

Global leaderboard. The backend is a Cloudflare Worker with D1 (SQLite). Before showing the initials prompt, the client checks if your score qualifies—no spam, no false hope.

Progressive onboarding. The first 8 seconds are a grace period with slower difficulty. Messages guide you through the mechanics. The first upgrade is guaranteed so every player feels empowered early.

What Makes It Different

This isn't a polished studio game. It's a father-son project where Arthur provided the visual direction and I handled the code. Some design decisions came from that collaboration:

  • Score as distance — the faster you go, the faster your score climbs
  • Arcade initials — 4 characters max, A-Z0-9 only, stored in localStorage for next time
  • Boss fights that matter — they interrupt the endless run with a focused challenge
  • Upgrades are optional but rewarding — you can survive without them, but chasing green comets changes the dynamic entirely

The game respects your time. No tutorials that can't be skipped. No ads. No accounts. Just play.

Tech Stack

  • React 19 with TypeScript — component-based UI, game state in refs to avoid re-renders
  • Vite — fast builds, PWA plugin for installability
  • Cloudflare Workers + D1 — serverless API and SQLite database for leaderboards
  • Netlify — static hosting with branch deploys for versioning
  • Google Gemini API — dynamic death messages with poetic fallbacks
  • Tailwind CSS — utility styling via CDN
  • Orbitron font — that retro arcade aesthetic

Current Status

Done:

  • Core gameplay loop with physics, hazards, and upgrades
  • Boss fights with scaling difficulty
  • Global leaderboard with qualification checks
  • Progressive onboarding
  • Audio crossfading between main and boss loops
  • PWA support

Planned:

  • Custom sprites from Arthur's drawings
  • Low-quality mode for older devices
  • Additional boss phases and attack patterns

What I Learned

Building a game is different from building a web app. Frame budgets matter. Gradient caching matters. Particle counts matter. You think about 60fps the way you think about API response times.

But the biggest lesson was simpler: when a kid has an idea, sometimes you should just build it.

Links


Built as a summer project with visual direction from Arthur (age 9). We'd love to see how far you can get.