Skip to content

Repository files navigation

SCOREFLOOR seven-segment logo with the ball arcing over the display

SCOREFLOOR

A small browser game where the score is also the floor.

Play SCOREFLOOR on itch.io Built with Phaser 3.90 TypeScript 5.8 Vite 6.3 Tested with Playwright Built with Codex

SCOREFLOOR started as a way for me to experiment with agentic coding workflows. I wanted a small project where I could try ideas, test my harness setup, and see how quickly a web game could go from a rough concept to something playable.

Somewhere along the way, the test project became a game I actually enjoyed playing. So I kept it. This repo is part game, part workflow experiment, and mostly a fun byproduct of figuring out how I want to build with agents.

Gameplay recording

gameplay-recording.mp4

Watch or download the full 78-second gameplay recording

This is a full, uncut play session. If the video player does not appear in your Markdown viewer, the link above opens the same recording directly.

Screenshots

Ball airborne between digits over the normal yellow score terrain Ball moving through score nine in the normal yellow orientation

Ball crossing the cyan terrain during the flipped orientation

Normal and flipped moments from the play session above.

Other captured states

SCOREFLOOR menu screen SCOREFLOOR game-over screen

SCOREFLOOR gameplay with the score acting as the floor SCOREFLOOR score transition showing a ghosted next terrain shape

SCOREFLOOR gameplay framed for a landscape mobile viewport

How it plays

The large four-digit score display is the level. Every lit segment is solid ground, and every dark segment is a gap. When the score changes, the digits change shape underneath the ball.

Your job is to keep the ball moving as long as possible. You can ask for the next score or flip the whole counter to kick the ball upward. The trick is choosing the right moment, because a safe piece of floor can disappear on the next number.

The first version was much too easy: the ball could settle inside a zero while the player kept pressing the score button. I added the flip kick, side rails, a short landing gate between score changes, and a way for the ball to escape closed digits. It is still a small prototype, but now there is an actual timing game in there.

Controls

Input Action
Space, Enter, or click Move to the next score; restart after game over
F, Shift, or middle/right click Flip the counter and kick the ball upward
One-finger tap Move to the next score; restart after game over
Two-finger tap Flip the counter
Backquote Show or hide the developer overlay

The small lamp in the top-right tells you when the next score input is ready. Your best score and sound settings stay in your browser.

What's in the repo

  • The playable TypeScript, Phaser, and Vite game
  • Procedural seven-segment terrain and a small custom collision system
  • Desktop and landscape-mobile Playwright tests
  • The original game spec, progress notes, acceptance checks, and playtest notes

I left the iteration notes in the repo on purpose. They show the less tidy part of the process: what I first thought would work, what felt bad once I played it, and what changed afterward.

Run it locally

You will need a recent version of Node.js and npm.

npm install
npm run dev

Then open http://127.0.0.1:5173.

The Makefile provides the same common entry points:

make              # start the local development server
make build        # typecheck and build the static app
make smoke        # run the Playwright smoke suite
make verify       # diff check, build, and smoke suite

FRESH_PLAYER_PLAYTEST.md contains the lightweight playtest checklist I used while working on the game.

Project notes

These are working notes rather than polished documentation. That is part of why I kept them here.

Current state

The game is playable on itch.io, and the repository is public for anyone curious about the game or the process behind it.

I am not treating it as a commercial release or planning a big roadmap for it. It did what I wanted it to do: it gave me a small, real project for working out my agent workflow, and it turned into something fun along the way.

The package remains private in package.json because this is a browser game, not an npm package.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages