časť 34
Prilba, ktorá rastie: ikona hry z jedného zdroja a 21 podôb podľa reputácie v Asgarde
Ikona Audamiru je vikingská prilba pred doskou, pol štvorcová a pol šesťuholníková. Jeden nástroj ju kreslí vo všetkých podobách: 21 podôb po piatich bodoch reputácie, šesť titulov, pevná ikona aplikácie a cena asi 32 KB.
Dňa 1. novembra 2026 dostala hra Audamir (do 31. októbra Auda Wars) ikonu: vikingskú prilbu pred hracou doskou, ktorej polovica je štvorcová mriežka a polovica šesťuholníková. Ikonu kreslí nástroj tools/icon-audamir.js z jednej geometrie. Prilba v hlavičke domovskej obrazovky rastie s reputáciou v Asgarde: nová podoba je každých 5 bodov až do 100, spolu 21 podôb. Ikona aplikácie, teda karta prehliadača a inštalácia, ostáva pevná.
Pri písaní sa zistilo, že šesť výkresov z pôvodného návrhu sa nezmenilo ani o bajt, a že pri prilbách v stránke číha pasca s <use>. Tituly na výber a prívlastky za menom ešte nie sú postavené.
Zadanie
Hra mala mať vlastnú ikonu v SVG: vikingskú prilbu na doske, ktorá rastie s reputáciou (bod 3 z dvanástich bodov, docs/HOME-FINAL.md, 31. 10. 2026). Návrh mal šesť podôb, prahy 5, 15, 30, 50 a 80 na súčte úrovní cárstiev (D3), rohy od štvrtej podoby (D4) a pevnú ikonu aplikácie (D5).
Prvého novembra sa schválilo všetkých trinásť odporúčaní (D1 až D13). K prvému bodu pribudla veta, ktorá zmenila plán: „Chcem ikonu každý piaty level, takže ich treba vyrobiť viac, a toto je veľmi dobre urobený skript.“ Skript z makety (docs/mockups/audamir-icon/make.js) tým prestal byť jednorazový.
Jeden nástroj a štyri režimy
Nástroj má 626 riadkov a žiadnu závislosť. Kresba je v ňom raz: doska, prilba a tabuľka LADDER, ktorá o každej podobe hovorí, čo pridáva k predchádzajúcej. Meno hry berie z js/data/meta.js, počet podôb a body z js/data/hero-forms.js. Hráča ani jeho profil nepozná.
Režimy sú štyri: full (dlaždica s doskou), small (pre 16 až 32 px: bez mriežky, hrubý obrys), mono (obrys v jednej farbe, na tlač) a maskable (farba až po okraj, prilba v strednej 80 %). Číslo, ktoré nie je podobou, je chyba: checkForm vyhodí RangeError a príkaz skončí s kódom 1 skôr, než čokoľvek zapíše.
PNG kreslí prehliadač. ImageMagick na tomto stroji ignoruje orezávacie cesty aj CSS premenné, takže nástroj otvorí stránku, ktorá nakreslí plochú kópiu každej ikony do plátna a PNG pošle späť. PNG sú v repozitári, takže zostavenie ani testy prehliadač nepotrebujú.
Ikona aplikácie je pevná: podoba 7
Rozhodnutie D5 určuje ikonu aplikácie ako pevnú: podoba 7 z 21, Šampión (reputácia 30). Pôvodne to bola podoba 4 zo šiestich. Súbory v karte prehliadača, v manifeste a na dotykovej ploche nemajú profil, z ktorého by čítali podobu. Hlavička a obrazovka Tvoj hrdina ukazujú hráčovu podobu; editor voľnej hry ostáva pri Šampiónovi.
Manifest má dva účely ako dva súbory: pôvodný zápis "any maskable" ukazoval na jedno SVG, kým Chrome pýta PNG 192 a 512 px. Pri písaní sa desať súborov z icons/ porovnalo so stavom po kroku H1 podľa SHA-256 a všetky sú rovnaké. Tri SVG majú v <desc> starý text „Form 4 of 6“, lebo ich generátor drží ako konštantu (DESIGN §118.2).
21 podôb a šesť titulov
Reputácia v Asgarde je súčet úrovní cárstiev, v ktorých hráč hral. Nikde sa neukladá; nič neplatí a nič neodomyká. Podoba je floor(body / 5) + 1, najviac 21. Pri písaní sa vyskúšali hranice: 0 až 4 dávajú podobu 1, 5 podobu 2, 32 podobu 7, 99 podobu 20, 100 a 120 podobu 21; záporné číslo, text, NaN a null podobu 1.
Každá podoba je predchádzajúca s jedným detailom navyše a pridáva trochu zlata. Šesť titulov začína pri prvej podobe svojho prahu:
| Titul | Od bodu | Čo pridáva prvá podoba |
|---|---|---|
| Tulák | 0 | železná čiapka na čelovom pásiku |
| Nájazdník | 5 | nánosník a lícnice |
| Bojovník družiny | 15 | rebrá a nity |
| Šampión | 30 | plné rohy: ikona hry |
| Jarl | 50 | rohy so zlatými hrotmi |
| Hrdina Asgardu | 80 | tri iskry |
Od 6. novembra zlaté okovanie nahradili drahokamy a farba stupňa reputácie; to je v článku o reputácii nad 100 (pripravovaný článok č. 57). Obrázok ukazuje stav z 1. novembra, keď bola posledná prilba ešte zlatá.
Titul sa neskladá lepením, ale textom core.hero.titled_name ({title} {name}), takže poradie určuje jazyk: „Šampión Auda“. Titul podoby je v slovenčine, češtine, srbčine a ruštine mužský bez ohľadu na pohlavie hráča (DESIGN §120.5); riešiť sa to dá pri výbere titulov, ktorý ešte nestojí. Každý prah je prvým bodom nejakej podoby, takže jedna podoba nikdy neukazuje dva tituly.
Pod sloganom je čip „Reputácia v Asgarde“ s číslom. Ukazuje len číslo, nie úrovne cárstiev (odpoveď z 1. 11. 2026, bod 2); úrovne sú na paneloch cárstiev. Jadro hry nepozná mená cárstiev, meno pridá reputationFace() v app.js podľa manifestu.
Prečo strop 100
Úroveň n sa začína pri 25 × n² XP, napríklad level 30 pri 22 500 XP. Pri 300 XP za hodinu víťaznej hry (model z R3-REALM-ECONOMY §1.9) vychádza súčet R na R²/12 hodiny v jednom cárstve a R²/24 v dvoch rovnako hraných. Prahy 5, 15, 30, 50 a 80 sú z návrhu (D3); posledná podoba pri 100 bodoch je z rovnakého vzorca. Je to model, nie meranie ľudí. Podľa dokumentu Kolónia proti silnej AI platí asi 590 XP za hodinu, takže reputácia hráča Rokgardu rastie rýchlejšie.
Hlavička, bajty a pasca <use>
Hlavička nesie list 21 prileb (<svg class="ad-sprites">) a ikona je doska plus <use href="#adf7">. Zmena podoby sú dva atribúty, data-form a href, ktoré zapíše Hub.paintReputation. Vďaka tomu index.html narástol o 31 946 B (asi 32 KB; po gzip 1,1 KB). Keby mala každá podoba celú ikonu s doskou, bolo by to 169 KB.
Pasca: <use> nakreslí klon prvku a selektor .ad-icon .s1 musí nájsť svojho predka v klone. Preto má každá prilba v liste a doska triedu ad-icon sama (DESIGN §118.3). Bez tejto opravy vyšiel list čierny.
Čo z toho plynie
- Nástroj, ktorý kreslí, je lacnejší než jeho výstupy: zmena vkusu je jedna úprava v
LADDERa dva príkazy (--page,--sheet). - „Rovnaké bajt po bajte“ treba dokázať odtlačkami starej kresby, nie dojmom: 24 z 24 odtlačkov sedí.
Čo sa nepodarilo overiť
- Tituly na výber a prívlastky za menom (H8) nie sú postavené; v kóde nie je pole pre prívlastok hrdinu.
- Vkus väčšiny podôb nie je schválený. Šesť podôb pochádza z návrhu, zvyšných pätnásť nakreslil krok H2. DESIGN §118.2 hovorí, že ak vkus nesedí, je to jeden commit.
- Čitateľnosť sa nemerala na ľuďoch. Či sa susedné podoby dajú pri 24 px rozoznať, nikto neposudzoval.
- Ikona v karte prehliadača, inštalácia na telefóne, dotyková ikona na iOS a offline service worker zatiaľ neboli overené.
Zdroje
docs/HOME-FINAL.md (bod 3, D1 až D13 a odpovede z 1. 11. 2026), docs/DESIGN.md §117 až §120, docs/R3-REALM-ECONOMY.md §1.9. Kód je v repozitári hry (tools/icon-audamir.js, js/data/hero-forms.js, verzia 0.81.2, overené 1. 11. 2026).
Súvisiace články: Z Hero Dice na Avatar (pripravovaný článok č. 38), Presun, ktorý nesmie nič zmeniť, Z jednej hry viac hier, Ako sa hra volá.