---
name: rytiri-project
description: "Battle Knights — Battle Cats klon s rytíři v Rustu (macroquad), nativní Linux program v angličtině; stav, build a testování"
metadata:
  node_type: memory
  type: project
  originSessionId: a900cb07-478d-432b-a21e-c252a74ff26f
  modified: 2026-10-08T16:33:53.095Z
---

**Battle Knights** (od 2026-10-08), projekt `~/battle-knights`. Na rozdíl od [[games-projects]] je to **nativní program v Rustu (macroquad 0.4)**, ne HTML. Celá hra **anglicky**, komentáře v kódu česky. Uživatel má **Linux Mint**.

Rozhodnuto uživatelem: jako Battle Cats (z boku, jedna linka, zlato/peněženka/cooldowny); grafika ve stylu Battle Cats; 8 rytířů (Squire, Shieldbearer, Spearman, Archer, Cavalry, **Medic** léčí, Paladin, Giant Knight); nepřátelé jen vlci, medvědi, vikingové; mapa s postupným odemykáním lokací (10 lokací, boss Jarl Ironbeard). Zatím NE: fantasy (až „za dlouho“), speciální schopnosti, evoluce, katapult, dotykové ovládání.

Stav 2026-10-08: první kompletní verze hotová (titul, mapa, kasárny s vylepšováním za XP, bitva, uložení do `~/.battle-knights/save.txt`). Moduly: data, battle (čistá logika), view (bitva UI), art (kreslení postav), bg, menus, ui, sfx (generované zvuky), save, sim. Uživatel ji zatím nevyzkoušel na svém PC (ani test-okno nebylo potvrzeno).

**Build bez rootu:** `~/battle-knights/build.sh` (cargo-zigbuild, target glibc 2.31, stub `~/.local/stubs/libasound.so`, wrappery `~/.cargo/bin/{cc,c++,ar}` → zig, Zig 0.17 v ~/.local/zig) → kopíruje do `~/rytiri-dist/`, stahuje se z `http://192.168.5.32:8000/rytiri-dist/battle-knights`.

**Vizuální testy:** `~/.local/xvfb/run.sh <program>` = Xvfb + Mesa rozbalené v ~/.local/xvfb (patchnutý Xvfb kvůli xkbcomp, symlink /tmp/xb). Env proměnné hry: BK_SCREEN=title|map|barracks|gallery|battle:N, BK_AUTO, BK_FOLLOW, BK_SPEED, BK_CLEARED, BK_XP, BK_PHASE, BK_SHOT_DIR/EVERY/MAX, BK_NOSAVE, BK_NOAUDIO; ALSA_CONFIG_PATH na null zařízení (scratchpad asound.conf: `pcm.!default { type null }`). `battle-knights --sim N` = vyvážení botem. Snímky pak číst přes Read.

Pozor: česká klávesnice — miniquad čte keysym index 0, proto čísla řeší i přes `get_char_pressed` (+ěščřžýá). Na konci `std::process::exit(0)` kvůli pádu při úklidu GL.
