Skip to content

Latest commit

 

History

292 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Incanto — Rune Circle Combat Prototype

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 in index.html). See CLAUDE.md for 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 scene
  • assets/tiles_list.txt — frame coordinates for the sheet
  • assets/arcane_wheel.png — baked high-fidelity art for the rune circle, generated by tools/gen_wheel.py from the same geometry the live SVG uses
  • assets/rune_font.otf — decorative runic face, kept only as a low-priority fallback; display text prefers a readable classical serif for legibility
  • assets/apple-touch-icon.png, assets/icon-192.png, assets/icon-512.png and manifest.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 by tools/gen_icon.py
  • sw.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 of sw.js

Every gameplay number lives in the CONFIG object in src/config.js.

Credits

  • 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.

About

Learn Italian by casting spells. A roguelite where your vocabulary is your arsenal: do vocabulary and grammar exercises to upgrade your hero, send them to battle an army of ever stronger enemies, trace runes by matching word pairs and climb from A1 to B1+ by defeating bosses.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages