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 2 místa kde je možné techniky vidět online. (Ale samozřejmě je také možné techniky vidět na svém PC, viz další kapitola Jak s technikami pracovat)
První místo je testovací web narutolarp.gitlab.io (na ročníku 23 byl používaný jako produkční protože jsem nestíhal :D). Tam se automaticky 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í.
- narutolarp.gitlab.io/database-public/skilltree.html
- narutolarp.gitlab.io/database-public/list.html
- narutolarp.gitlab.io/database-public/table.html
Druhé 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
Jak s technikami pracovat
V první řadě je nutné mít účet na gitlab.com.
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í 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ř: (VSCode + plugin na XML) nebo XMLNotepad. Ale samozřejmě existuje spousta jiných možností. - jazyk Python (3.11 nebo novější)
- jazyk Elm
- nějaký shell (příkazový řádek / terminál) - Linux a MacOS už mají v základu, na Windows třeba Git Bash (který je součástí installace gitu pro Windows, viz první bod), nebo pro odvážnější WSL.
- 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 XML 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.
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"
)
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)
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.