Carom
An Arkanoid, in a terminal, on Cauldron.
A game of it, with the music, is on YouTube.
mix carom
mix carom --mode text # glyphs, even where the terminal has pixels
mix carom --fps 120 --seed 7 --name alice
Playing
Move the paddle with the mouse — it follows the pointer exactly. space or a click
serves; p pauses; r restarts; Esc or q goes back to the title. ←/→ work too, and
hold as long as the key is down on a terminal that reports key releases (kitty, Ghostty,
WezTerm); elsewhere a press glides the paddle a set distance, which , and . adjust.
? shows the keys in play. s opens the settings — key bindings, pointer steering, effects
and music levels, display, frame rate. Three lives; lose the ball below the paddle and one is
gone.
The field
Twenty bricks across, six rows deep, walls on three sides and nothing below. Soft bricks are 10 points, firm 30, hard 50; solid blocks bounce and never break, and a level is cleared when everything else is gone. Five layouts cycle — a plain wall; gaps to fall through with two pillars that never go away; a pyramid, worth most at the top; a roof with a way in at each end; a diamond with solid corners — and the ball is a little faster each time round.
The paddle sends the ball off at an angle that depends on where it lands: the middle returns it straight, the ends send it wide.
Capsules
Breaking a brick has a one-in-seven chance of dropping a capsule. Catch it on the paddle:
| wide | a paddle half again as long, for 18 seconds |
| slow | the ball drops to 65% speed, for 14 seconds |
| multi | every ball in play splits into three |
| life | an extra one |
| narrow | bad: a stubby paddle for 10 seconds — same pill, different colour, so it can be dodged |
Wide and narrow replace each other rather than stacking.
Tuning
The column beside the field is live: [ ] paddle speed, , . glide, - = ball speed,
; ' pointer ease. What you set stays for the game.
Sound
A voice for every event — the paddle, each kind of brick, the walls, a capsule caught, a ball lost — and a piece of music a level.
Under the hood
TECHNICAL.md: the world and the client, steering, levels as pictures, what the engine does for a real-time game, the layout of the code, tracing.
License
MIT