A terminal paddle game

Quiet, fast, and
honest Pong.

A physics-based paddle game that lives in your terminal. Sub-stepped collisions that never glitch, five restrained themes, and a paddle that follows your mouse. One binary, no clutter.

$ go install github.com/subhadeeproy3902/pong-ball@latest
What's inside

Built to feel right, not to shout.

Every part of the game is tuned for a calm, precise feel — restrained color, smooth motion, and physics you can trust.

01

Sub-stepped physics

The ball moves in collision-safe sub-steps, so it never tunnels through a wall or resets mid-rally — even at top speed.

02

Spring-driven paddle

A harmonica spring chases your input for weighty, fluid control. Keys, or just move your mouse — the paddle follows.

03

Five quiet themes

Claude, Mono, Nord, Moss, and Ember. Each leans on a single accent — no rainbow, no neon, no glow.

04

Power-ups & phases

Six power-ups and five escalating difficulty phases in Arcade, from a gentle warm-up to genuinely insane.

05

Score history

Every run is saved to a local JSON store with a built-in leaderboard, per-mode filters, and lifetime stats.

06

Single binary

Pure Go, zero runtime dependencies. One command with go install, Homebrew, winget, Chocolatey, or Scoop — or a single curl-pipe script.

See it run

The real thing, in your terminal.

An actual frame from Arcade mode — live HUD, a power-up timer, the ball's trail, and the coral paddle. Rendered, not mocked.

pong-ball running in a terminal: Arcade mode showing score 128, phase 4 Blazing, three lives, a 17 streak, the ball and its trail, the coral paddle, and an active Fire Paddle power-up.
pong-ball · Arcade · Claude theme
Hear it

The actual game sounds.

Every effect is from soundcn — the same files the terminal game plays. Tap to listen.

Three ways to play

Pick a pace.

01

Classic

One life, pure score chase. Every miss ends the run.

02

Arcade

Three lives and the full power-up roster to fight for.

03

Time Trial

A sixty-second sprint for the highest score you can stack.

Install

One command, any platform.

Install script
curl -sSL https://raw.githubusercontent.com/subhadeeproy3902/pong-ball/main/install.sh | sh
Distro packages
# .deb · .rpm · .apk — from the
# releases page below
github.com/subhadeeproy3902/pong-ball/releases
Homebrew — one command
brew install https://raw.githubusercontent.com/subhadeeproy3902/pong-ball/main/Formula/pong-ball.rb
winget
winget install pong-ball
Chocolatey
choco install pong-ball
Scoop
scoop bucket add pong-ball https://github.com/subhadeeproy3902/pong-ball
scoop install pong-ball
Go
# works on any OS with the Go toolchain
go install github.com/subhadeeproy3902/pong-ball@latest
Install script
curl -sSL https://raw.githubusercontent.com/subhadeeproy3902/pong-ball/main/install.sh | sh
Uninstall
Any platform
pong-ball uninstall

Asks for confirmation, then removes the binary, your saved scores & settings, and the cached sound files. Add --yes to skip the prompt or --keep-data to keep your scores. Installed via a package manager? Use its own uninstall too.

Controls

Everything from the keyboard.

← →move the paddle
mousepaddle follows the cursor
P · Spacepause / resume
Tcycle theme
Mtoggle sound
Cclear score history
Rrestart
Q · Ctrl+Cquit
Questions

Good to know.

What is pong-ball?

A free, open-source, minimalist Pong game that runs entirely in your terminal. It pairs sub-stepped collision physics with a spring-driven paddle you steer with the keyboard or mouse, five restrained themes, three game modes, sound, and a persistent score history.

How do I install it?

On any OS with Go: go install github.com/subhadeeproy3902/pong-ball@latest. On Windows: winget install pong-ball or choco install pong-ball (Scoop too, via the project bucket). On macOS, one command: brew install https://raw.githubusercontent.com/subhadeeproy3902/pong-ball/main/Formula/pong-ball.rb. On Linux, run the install.sh one-liner. Prebuilt binaries and .deb/.rpm/.apk packages are on the releases page.

Which operating systems are supported?

Prebuilt binaries ship for macOS, Linux, and Windows on amd64 and arm64, plus .deb, .rpm, and .apk packages and a Docker image. Anything that can run a single Go binary in a UTF-8 terminal works.

Is it free and open source?

Yes — MIT-licensed and free. The full source lives on GitHub.