Jak fungují techniky NarutoLARPu
Techniky a jejich infrastruktura jsou veřejně viditelné v repozitáři gitlab.com/narutolarp/database-public. Níže vysvětlím jak tento repozitář funguje.
Jak techniky vidí hráči
Začneme od konce, a to jak a kde jsou techniky zobrazeny. Máme 3 způsoby zobrazení:
- Skilltree - interaktivní zaklikávání schopností. Toto zobrazení hráč vidí ve svém profilu.
- List - výpis schopností rozdělený podle stromu / speciální schopnosti.
- Table - velká tabulka se zkráceným zápisem technik, určená k tisku a vyvěšení ve vesnici.
A máme 3 místa kde je možné techniky vidět:
První (hlavní) místo je samotný web narutolarp.cz, kam putují jen vybrané verze technik
(každá verze zde má své číslo, např 10.6 je verze na které se hrál ročník 2023).
Současná oficiální verze technik je vždy k prokliknutí na stránce Informace
narutolarp.cz/rules.php#rules_3.
Např pro verzi 10.6 tyto odkazy vypadají takto:
- narutolarp.cz/database-public/10.6/skilltree.html
- narutolarp.cz/database-public/10.6/list.html
- narutolarp.cz/database-public/10.6/table.html
Druhé místo je testovací web narutolarp.gitlab.io (na ročníku 2023 byl používaný jako hlavní
protože jsem nestíhal :D). Tam se po schválení náhrává každá změna která se v repozitáři provede,
takže může obsahovat i rozpracované změny. Tento web je určen spíše pro vývoj/testování/feedback,
běžného hráče toto místo zajímat nemusí.
Nemá verze ani historii, zobrazuje vždy nejnovější změny (u verze je napsané datum poslední změny).
- narutolarp.gitlab.io/database-public/skilltree.html
- narutolarp.gitlab.io/database-public/list.html
- narutolarp.gitlab.io/database-public/table.html
Třetí místo je u každého na jeho vlastním počítači. Tedy repozitář si kažný může stáhnout (nebo naklonovat), udělat změny, a rovnou si je prohlédnout. Viz další kapitola Jak s technikami pracovat - protože zkontrolovat si své změny je nezbytnou částí každé větší změny (ale na opravu překlepů nebo balancing čísel to samozřejmě nutné není).
Jak s technikami pracovat
V první řadě je nutné mít účet na gitlab.com. Je to mezi programátory široce používaný nástroj, je zdarma, a jde se přihlásit o pomocí jiných účtů. Při registraci jen pozor na klasické "chci dostávat novinky mailem"
Nejjednoduší způsob jak udělat změnu je přes webové rozhraní gitlabu.
To je vhodné na menší změny, opravy textů, drobné balancování (změny čísel), etc.
Udělal jsem pár screenshotů:
Jak editovat přes webové rozhraní (krok za krokem).
Ale pro větší změny je lepší si repozitíř stáhnout na svůj PC, a pracovat tzv lokálně.
Co je potřeba k lokální práci s technikama:
- git (git-scm.com/downloads nebo gitforwindows.org) pro stažení(naklonování) repozitáře, a pro následné nahrávání změn.
- nějaký editor - samozřejmě stačí jen poznámkový blok, ale pro efektivnější práci je lepší jakýkoli textový editor,
který má podporu pro XML+XSD (aby uměl našeptávat, a podtrhul případné chyby).
Např: V dnešní době hodně známý (VSCode od Microsoftu + plugin na XML) nebo jednodušší, více specializovaný XMLNotepad (taky od Microsoftu). Ale samozřejmě existuje spousta jiných možností (vpodstatě jakýkoliv editor na programování). - jazyk Python (3.11 nebo novější)
- jazyk Elm
- příkazový řádek / terminál - není třeba instalovat, každý už má.
Linux a MacOS mají tzv "Terminál".
Na windows je buďto starší "Příkazový řadek" (zkráceně "cmd"), nebo novější PowerShell. - přečíst si README repozitáře
Definice technik (XML)
Začátkem všeho je definice technik. Tedy jak se techniky zapisují, a jak jsou uložené.
Oprostíme se zcela od pomocných textů, nápověd a formátování, a zaměříme se pouze na to, co
technika skutečně je: tedy kolik dává zranění, kolik stojí chakry, jak se sesílá,
jak se jmenuje, apod.
Techniky jsou uložené ve složce
/public/data
a jsou zapsané v jazyku XML, rozdělené do několika souborů.
Soubor definice.xml
První je soubor definice.xml, který obsahuje definice důležitých pojmů. Zde je pro nás hlavní atribut id který budeme potřebovat při definici technik samotných.
<zásah id="ruka">
<jméno>Rukou</jméno>
<popisek>Zásah bezezbraně. Předloktí musí být oděno
měkčeným chráničem a zásah nesmí býtveden zatnutou
pěstí.</popisek>
</zásah>
<klíčové-slovo id="skrytí">
<jméno>Skrytí</jméno>
<popisek>úroveň skrytí je znázorněna zdviženou rukou s příslušným počtem zvednutých
prstů nebo nasazenou barevnou stuhou (1 = zelená, 2 = žlutá, 3 = červená).
Technika a efekt skrytí končí když skrytá postava obdrží nebo udělí platný zásah,
nebo se dotkne herního předmětu který již nemá u sebe.</popisek>
</klíčové-slovo>
Soubor specialni-schopnosti.xml
Druhý je soubor
specialni-schopnosti.xml,
který definuje všechny speciální schopnosti ve hře, a do kterých vesnic patří.
Opět má každá speciální schopnost svoje id, na které se budeme později odkazovat
(id="opila-pest"
)
<quirk-mechanicky value="2" id="opila-pest" není-ve-hře="true">
<name>Opilá pěst</name>
<playstyle> několik technik, primárně boj beze zbraně </playstyle>
<village ref="valley">
<flavour>Toto je styl taijutsu, který je možný pouze tehdy, když je
uživatel pod vlivem ...</flavour>
</village>
</quirk-mechanicky>

Soubory strom-*.xml
A nakonec je zde jeden soubor pro každý strom.
V těchto souborech jsou definovány samotné techniky.
Například soubor
strom-Taijutsu.xml,
který definuje strom Taijutsu, neboli Boj beze zbraně. Každý strom má taky své id,
ale navíc ma definice všech technik, a to jak speciálních, tak veřejných.
Níže vidíme srovnání definice a zobrazení u jedné konkrétní techniky.
Všimněme si následujících míst:
-
<zásah ref="ruka" />
se odkazuje na<zásah id="ruka">
který jsme viděli v souboru definice.xml- Zobrazí se jako text "Když dostaneš útok typu: Rukou, ..."
(kde "Rukou" je hodnota<jméno>Rukou</jméno>
ze souboru definice.xml) - Pokud bychom chtěli "Roukou" přejmenovat na "Beze zbraně",
stačí v souboru definice.xml napsat
<jméno>Beze zbraně</jméno>
a id nechat stejné.
Poté se u všech technik zobrazí "Když dostaneš útok typu: Beze zbraně, ..."
→ Tedy změna na jednom místě se propsala do všech technik.
(Ale v technice by stále bylo<zásah ref="ruka" />
protože id jsme nezměnili)
- Zobrazí se jako text "Když dostaneš útok typu: Rukou, ..."
-
<speciální-schopnost ref="opila-pest" />
se zobrazí jako šedý text "Speciální schopnost: Opilá pěst", opět na základě souboru specialni-schopnosti.xml- Opět by v souboru specialni-schopnosti.xml stačilo přejmenovat
<name>Opilá pěst</name>
na<name>Opilcova pěst</name>
a změna by se projevila ve všech technikách, které pod tuto speciální schopnost patří.
(Ale v technice by stále bylo<speciální-schopnost ref="opila-pest" />
protože id jsme nezměnili)
- Opět by v souboru specialni-schopnosti.xml stačilo přejmenovat
- Obecně tedy: ref se odkazuje na id, a id může být jiné než jméno které vidí hráč
- Ale text "Když dostaneš útok typu" není z žádného xml souboru. K jeho změně by se musel upravit soubor /skilltree/src/JutsuEffect.elm (více v kapitole Zobrazení technik)
<technika id="technika-potaceni">
<jméno>Potácení</jméno>
<úroveň>5</úroveň>
<typ-efektu ref="posílení" />
<cena ref="život">1</cena>
<speciální-schopnost ref="opila-pest" />
<flavour />
<pasivní>
<atribut ref="max-život">1</atribut>
</pasivní>
<obranná>
<zásah ref="ruka" />
<zásah ref="zbraň-nablízko" />
<zásah ref="zbraň-nadálku" />
<zásah ref="koule" />
<heslo ref="úhyb" />
</obranná>
</technika>

XML Schema (XSD)
Každý XML soubor má své schéma, tedy soubor který určuje co v něm může být a co ne. Schémata jsou ve složce /public/data/schemas. Při změně schématu je typicky potřeba změnit i dotčené XML soubor/y, a změnit i zobrazovací logiku, aby byla schopná přijmat nové schéma (složka /skilltree).
Zobrazení technik (Elm)
To jak se techniky zobrazují je definováné ve složce /skilltree.
Plány do budoucna
Kompletně strukturuovat techniky (textové části přenést do struktury).
Provádět analýzu nad technikami.
Zlepšit tento článek.
Motivace pro zvolené technologie
- Díky gitu máme kompletní historii všech změn, a to jak technik, tak infrastruktury kolem nich.
- Gitlab Pipelines nám umožní automatizovat některé procesy, čímž jednak šetří čas, ale hlavně nejsou náchylné na lidskou chybu (která se při otevírání registrace ve 2 ráno může stát velmi snadno).
- XML nám umožní oddělit definici techniky od její prezentace. Je pak snadné dělat plošné změny toho jak se techniky zobrazují, aniž by se muselo manuálně přepisovat 200 technik.
- XSD schémata kontrolují jak jsou techniky nadefinovány. V první řadě je to pomocník při psaní technik - chrání před překlepy, a napovídá jak techniku zapsat. V druhé řadě je to kontrolor, který omezuje aby nebylo možné napsat techniku, která nezapadá do zbytku systému.
- Zobrazování technik je řešeno zcela v prohlížeči, což usnadňuje vývoj, a umožňuje techniky snadno testovat na narutolarp.gitlab.io/database-public. Zobrazení je psané v jazyku Elm, který je skvělý na zapisování složité funkcionality která se často mění.
- Menší pomocné skripty jsou psané v jazyku Python, který jde snadno nainstalovat na každém OS (a leckdo ho už má nainstalovaný). Plus ho většina lidí zná, a malé skripty se v něm píší rychle.