Hlavní stránka Fóra Forum pro soutěžící SOČ Obhajoby – Praha 42-kraj Praha-obor 18 Odpověď na téma: 42-kraj Praha-obor 18

#21541
Jindřich Novák & Marek Makovec
Host

Vážená poroto

(1) S názorem, že hra v podstatě ztratila kouzlo D&D 5e musíme smutně souhlasit. My oba jako autoři jsme sami vášnivý hráči já osobně zaujímám i roli Dungeon Mastera (pána jeskyně). Musím však konstatovat, že nepovažuji za možné v rámci videohry zachovat krásu předlohového materiálu. Sám Jeremy Crawford, autor páté edice, říká, že podstata D&D je nekonečná neomezenost, kde jedinou limitací je naše samotná fantazie, čehož videohra, která je již z definice předem naskriptovaná a kde veškeré osudy jsou předem vybrány a pečlivě naplánovány, nemůže nikdy dosáhnout. Rád bych ale na obranu našeho projektu podotkl, že D&D-inspirované videohry vydané od samotných Wizards of the Coast (vlastníci D&D od třetí edice, kterou jim prodal Gary Gygaxovo SRD) existují a nová dokonce bude vydána tento rok. Zde příklady takových existujících oficiálních her: Neverwinter, Baldur’s Gate, Baldur’s Gate 2, Baldur’s Gate 3, Planescape: Torment, Neverwinter Nights, Mysteries of Westgate, Daggerdale a další.

(2) Největším přínosem pro nás bylo pochopení důležitosti všech jednotlivých fází vývoje. Plánování, návrh, samotná struktura vývoje a pak i testování, tedy pochopení důležitosti stabilního workflow. Dále jsme se naučili provazovat jednotlivé struktury, které vytvořil někdo jiný, tj. vytváření pochopitelných interfaců nebo abstraktních struktur, které pak mohou být implementovány, nebo důležitost důkladné dokumentace pro složité třídy a metody. Celkově spolupráce v týmu bylo velké poznání, jelikož zahrnovalo např. předávání samotného projektu (přes GIT), předávání myšlenek a vzájemné testování.
Dále bylo velmi přínosné uvědomit si jak všechno navazuje, vývoj zvuků, modelů, animací nebo materiálů pro objekty. V podstatě jsme si oba vyzkoušeli skoro všechny pozice v malé firmě pro vývoj her, od designera přes modeláře po programátora, což je v budoucnu velmi dobře aplikovatelné v reálných firmách.

Co se algoritmů a triků týče naučili jsme se také velkou škálu věcí. Zpočátku jsme vymýšleli zbytečně složité metody a skripty, které již v Unity existovaly nebo se daly udělat mnohem jednodušeji. Od zvovuvynalézání kola jsme se dostali v druhé části vývoje, kde jsme vymysleli nové postupy a optimalizace, například centrální ovládání uživatelského pomocí jedné třídy, místo nechutně složitého systému public referencí a natvrdo uložených komponent. Místo toho získáváme reference pomocí singletonu, který nám vrátí referenci na objekt, pokud ve scéně existuje. Dalším trikem je třeba pokročilejší práce se shadery a jejich dynamická úprava pomocí skriptů(např. Relativně nově přidaný fog of war, který je proveden pomocí materiálu, kterému je nastavena alpha na 0 v místech, kde se pohybuje hráč).

Mohli jsme si pořádně osahat i vytváření a animování modelů, což nám umožnilo převádět cokoliv z naší fantazie do hry a rozpohybovat to. Splněný sen umělce a programátora.

(3) Co se týče rozšiřitelnosti hry jako takové, díky infrastruktuře uživatelského rozhraní a obecnému řešení téměř veškeré problematiky se kterou jsme se setkali přes prefaby a silnou závislostí na principech dědičnosti a polymorfismu, bych řekl, že hra dosahuje velmi vysoké míry rozšiřitelnosti již nyní.
Jazyk je zcela jinou otázkou. Abychom byly schopni podporovat více než jeden jazyk, museli bychom ve hře přestat využívat jednoduché proměnné typu string pro string text atribut Text objektů a nahradit je prvky jakési objektové struktury, která by v principu byla rozšířením nějaké existující třídy dědící Collections. Tato struktura by načetla své prvky ze XML nebo JSON souboru dle nastavení hry při startu. Toto prioritizování by bylo možné přes nativní Unity metodu Awake(), kterou bychom umístili do scény Main Menu a nastavili naši strukturu jako statický objekt přístupný z celé hry. Tím pádem by byly všechny texty získávány dynamicky a bylo by tak možno jakýkoliv text jednoduchým přepnutím jazyka v nastavení.