How a run goes: chapters of short encounters — archers (steady volleys), cavalry (the charge speeds up each spell), and a boss (its incantations follow a rhythm pattern, off-beat glyphs included). Clear a chapter and the incantations grow: short two-word spells → longer derived words → three-word invocations → numbers → symbols. Spells are phrases in one invented tongue (the gloss under the word says what you're casting), and each encounter keeps to one school of words, so they repeat and become learnable.
- Riffs (Glyphs setting, the default): glyphs come in key patterns played in quick 8th/16th bursts with a breath between. Every spell is a sigil: its strokes share one shape, and the shape is the rune a clean spell earns — pillar (one key repeated) earth, wave (two fingers trading) water, sweep (a roll across neighbouring fingers) air, burst (mirrored pairs hand to hand, opening from the index fingers) fire. The thread through its glyphs glows in the rune's color. From chapter 2 a sigil ends in a word, its inscription. Each encounter repeats a handful of strokes, so learn them as one movement. The chapters open the keyboard row by row, starting with the home row. "words" brings back the runic-tongue spells.
- Penalty: switch to strict mid-run — one wrong key kills the whole incantation. Is this motivating or rage-quit for a learner?
- Pacing: are encounters short enough early on, and does each chapter feel like a step up? "start at" jumps straight to a later chapter.
- Runes are how you fight: typing no longer attacks. Every clean spell (no glyph missed) earns a rune of its element (the lane most of its glyphs ride: fire, water, earth, air); in lenient mode a spell with exactly one miss still seals a cracked rune (hollow pip: its bolt hits ×0.5; cracked charges are spent first); defeating an enemy earns a mend rune (bosses 2). Press Space — time stops (music and timers too) and the letters hide, but only for a few seconds (6 s in chapter 1, 3.5 s by chapter 6: the bar around the ring; empty, the cast fizzles). The faster you finish a name, the harder it hits: ×1.5 instantly down to ×0.5 at the buzzer (bolts and mend) — the panel opens into the spellbook; type a name to cast: jorvax fire, quvold water, gormuz earth, zephys air (bolts; ×2 against the enemy's weakness, shown on its health bar; the bar's pale ghost is what your held bolts would deal, the gold notch the counter, LETHAL when they'd kill), bifakt mend (+30 HP), warcen ward (always ready). A wrong letter fizzles (charge kept) — fizzle twice in a row and it backfires for 12 damage and seals the spellbook for 2 s (a successful cast resets it); Space again cancels; the ring closes itself when a glyph reaches the line.
- Boss curses: at 2/3 and 1/3 of its HP a boss curses its next two spells (three when Revived), named on its nameplate — Landslide (Stone Warden: glyphs hang, then drop hard), Lightning (Storm Hierophant: glyphs show only in the beat's flash), Rising Tide (Tide Lich: water hides the last third of the lanes), Tally (Counting Wraith: 3×k = press k three times), Tyranny (Glyph Tyrant: glyphs turn into Shift symbols), Mirror (Shadow Archon: glyphs fall in the other hand's lanes — press the letter shown). Attirus, at the end of the Boss Rush, casts all six in turn, rises once from death, and drinks what his charged attack takes.
- Charged attacks: every enemy charges a big attack — the ring over its head fills; in the last bar it counts down the beats. Cast warcen then: the ward holds for 5 seconds and counters the charged attack back at the enemy (12 damage) — it answers the charge only (against a boss, each successive charge gives a shorter ward, so warding alone stops being a plan: attack too): missed glyphs still let the enemy hit you, ward or not. A counter is a riposte: it opens your empowered window at once. Kill an enemy in fewer spells than par (the spells a ward-only fight would take) and each spell saved scores SWIFT 1,200 × your combo multiplier. The countdown is loud on purpose: a rising doom pulse each beat, the hit line turns red, the enemy's screen edge flashes.
- Empowered: you charge too — the ring over the caster fills over 20 beats, like the enemy's. Full, it rings a bright chime and opens 5 seconds (cyan aura, cyan screen edge) in which every bolt rune hits ×2. A countered charge opens it at once.
- Flawless spells (every glyph PERFECT) trigger the incantation's school power at once, no cast needed: storm Gale (glyphs and the charge pushed back a bar, your ring a bar fuller), stone Bulwark (next counter ×2), shadow Veil (next bolt counts as the enemy's weakness), tide Stillwater (next mend heals ×2), flame Kindle (next bolt ×2). A cracked rune's spell never wakes a boon.
- Lanes: can you read the finger from color+position before you type it? The element + finger labels are under the hit line.
- When to press: the letter crossing the white line — the tile filling its outlined slot. The two thin lines around the hit line are the PERFECT window (±55 ms); the tile touching the line at all is the GOOD window (±140 ms). Every judgment shows its error in ms, and the bar at the top of the battle stage plots your last 20 presses.
- Calibration: if the click doesn't land when the letter crosses the line, slide audio. If your presses sit consistently early/late on the error bar, press "set input from last 20 hits" (or slide input). Both are saved in this browser.
New here?
HOW TO PLAY on the title screen plays a narrated demo (Enter or a click for the next lesson, Esc leaves). Click the canvas to start. Wrong/missed keys flash the correct key and finger — that's the tutor. The synthwave soundtrack (a theme per enemy, and one unique to each boss) is locked to the beat and runs at the speed of the letters; music and sampled effects need an http server — file:// plays the synthesized fallbacks. The
high scores live on the server (Cloudflare D1; locally
npm run dev, http://127.0.0.1:8777/), and this browser is remembered: your name, your best, your runs. At game over, type your name and press Enter (or just click to retry: the remembered name records it). Audition every effect on the
sound board.