Learn Italian by casting spells. Match Italian–German word pairs on a circle of runes to cast fireballs at an endless horde of skeletons.
The loop: a run starts straight in combat with a fixed build. Skeletons
arrive in waves, each stronger than the last, until you inevitably die. Then
you study a short vocabulary quiz to earn gold, spend it on permanent Attack
and Vitality upgrades, and begin a stronger run. Build and gold persist
between runs and are saved to the browser's localStorage, so progress
carries across reloads and sessions (a hard reset with R wipes it).
Play: https://luguza.github.io/Incanto/
index.html— thin shell that links the CSS and loads the JS modules (no build step)src/*.js— the game, split by concern (ordered classic scripts sharing one scope; load order is the<script>list inindex.html). SeeCLAUDE.mdfor the module map.styles/*.css— styles split by screen (base,combat,quiz,meta)tools/smoke-test.mjs— headless boot/render/interaction check (node tools/smoke-test.mjs)assets/dungeon_tiles.png— sprite sheet for the battle sceneassets/tiles_list.txt— frame coordinates for the sheetassets/arcane_wheel.png— baked high-fidelity art for the rune circle, generated bytools/gen_wheel.pyfrom the same geometry the live SVG usesassets/rune_font.otf— decorative runic face, kept only as a low-priority fallback; display text prefers a readable classical serif for legibilityassets/apple-touch-icon.png,assets/icon-192.png,assets/icon-512.pngandmanifest.webmanifest— the home-screen app icon (a glowing rune) and PWA metadata, so "Add to Home Screen" installs Incanto as an app; the icons are a high-fidelity arcane rune circle generated bytools/gen_icon.pysw.js+src/offline.js— the service worker that makes the installed game fully playable with no network after one visit. Code and markup are served network-first so a new deploy always wins;assets/is served from the cache and refreshed behind you. The reasoning is written out at the top ofsw.js
Every gameplay number lives in the CONFIG object in src/config.js.
- Dungeon scene art: 16x16 DungeonTileset II by 0x72, licensed CC0.
- Display font: Norse by Joël Carrouché, free for personal and commercial use with web/app embedding permitted — see license.