Compare commits

..

No commits in common. "5e7519e21911cfbaa43d52ba0cf082dbeadac813" and "f1e52cf319e05fa911cee4c719d03cb99eecfe9c" have entirely different histories.

2 changed files with 45 additions and 52 deletions

77
ch1.tex
View File

@ -15,14 +15,14 @@ Pro nikoho snad není překvapivé, že~pro~vznik díla je~potřeba nějaká my
Design dokument, jenž~tvoří nedílnou součást této práce, byl~vytvořen s~ohledem na~vývoj hry jedním autorem. Z~tohoto důvodu jsou v~něm jednotlivé nápady popsány poměrně stručně až~abstraktně, neboť~sloužil primárně jako~osobní vodítko. V~případě týmového vývoje by~však bylo vhodné dokument rozšířit o~podrobnější popis nápadů a~jejich zamýšlené realizace. Design dokument, jenž~tvoří nedílnou součást této práce, byl~vytvořen s~ohledem na~vývoj hry jedním autorem. Z~tohoto důvodu jsou v~něm jednotlivé nápady popsány poměrně stručně až~abstraktně, neboť~sloužil primárně jako~osobní vodítko. V~případě týmového vývoje by~však bylo vhodné dokument rozšířit o~podrobnější popis nápadů a~jejich zamýšlené realizace.
\section{Téma, motivy, příběh, cíl} \section{Téma, motivy, příběh, cíl}
Hra by~měla poskytovat nějakou \emph{myšlenku} relevantní pro~hráče, aby~ten měl zájem si~ji~zahrát. Počáteční myšlenku většinou vytváří a~následně rozvíjí game designer. Ta~následovně může~být zachována i~na~konci vývoje, nebo být zásadně změněná samotnou hrou, jejími mechanikami a~kreativním provedením. Krásný případ je~známá desková hra ,,Landlord's Game'' od~Lizzie Magie později známá jako~,,Monopoly''. Paní Magiová chtěla vytvořit hru, která~by~hráčům představila hrůzy kapitalismu a monopolů tak, že by poskytla hráčům zkušenosti, kde~jeden jedinec neustále a~nevyhnutelně bohatne zatímco zbytek stejně~tak neustále a~nevyhnutelně chudne. Bohužel hráči moc tuhle myšlenku nepochitili. Místo vystrašení z~kapitalismu, naopak rádi zažívali hazard a~možnost ekonomicky zruinovat soupeře. Hra by~měla poskytovat nějakou \emph{myšlenku} relevantní pro~hráče, aby~měl zájem si~ji~zahrát. Počáteční myšlenku většinou vytváří a~následně rozvíjí game designer. Ta~následovně může~být zachována i~na~konci vývoje, nebo být zásadně změněná samotnou hrou, jejími mechanikami a~kreativním provedením. Krásný případ je~známá desková hra ,,Landlord's Game'' od~Lizzie Magie později známá jako~,,Monopoly''. Paní Magiová chtěla vytvořit hru, která~by~hráčům představila hrůzy kapitalismu a monopolů tak, že by poskytla hráčům zkušenosti, kde~jeden jedinec neustále a~nevyhnutelně bohatne zatímco zbytek stejně~tak neustále a~nevyhnutelně chudne. Bohužel hráči moc tuhle myšlenku nepochitili. Místo vystrašení z~kapitalismu, naopak rádi zažívali hazard a~možnost ekonomicky zruinovat soupeře.
Způsobů, jak~předat myšlenku hráči, je~nespočetně mnoho. Pro účely této práce proto probereme možnosti předáni myšlenky v~příběhových hrách. Ty~by~měly~mít nějaké ústřední téma, které~se~následně obohacuje příběhy okolo. Je~velmi důležité, aby~okolní příběhy měly \emph{motivy}, aby~následně i~hráč měl motiv je~prožít. Dokonce hráč nemusí znát motivy až~do~konce hry, stačí aby~byla cítit smysluplná návaznost a~pocit možné odměny. Proto je~za~umění považováno i~velkolepé předstírání existence motivů, které~donutí hráče \emph{strávit ve~hře co~největší množství času}. Způsobů, jak~předat myšlenku hráči, je~nespočetně mnoho. Pro účely této práce proto probereme možnosti předáni myšlenky v~příběhových hrách. Ty~by~měly~mít nějaké ústřední téma, které~se~následně obohacuje příběhy okolo. Je~velmi důležité, aby~okolní příběhy měly \emph{motivy}, aby~následně i~hráč měl motiv je~prožít. Dokonce hráč nemusí znát motivy až~do~konce hry, stačí aby~byla cítit smysluplná návaznost a~pocit možné odměny. Proto je~za~umění považováno i~velkolepé předstírání existence motivů, které~donutí hráče \emph{strávit ve~hře co~největší množství času}.
Samotná tvorba příběhů je~poněkud podobná tvorbě knižní nebo~kinematografické. Jen~je~zapotřebí oživovat a~propojovat nejen postavy a~svět, ale~i~herní mechaniky s~ohledem na~jejich zábavnost, složitost a~technická omezení. Samotná tvorba příběhů je~poněkud podobná tvorbě knižní nebo~kinematografické. Jen~je~zapotřebí oživovat a~propojovat nejen postavy a~svět, ale~i~herní mechaniky s~ohledem na~jejich zábavnost, složitost a~technická omezení.
\newpage \newpage
\paragraph{Údržba pozornosti} Cíle a jejich distribuce pomáhají hře udržet~si hráče. Pokud například za~sebou následuje několik "nudných" pasáží, nebo~je~hra příliš repetativní, hráč může ztratit zájem. \Cref{fig:pacing} znázorňuje ukázkový příklad pěkné distribuce klíčových momentů. Co~přesně jsou~klíčové momenty, je~na~vývojáři. Mohou to~být důležité momenty v~příběhu, vylepšení postavy hráče, představení nové důležité mechaniky atd. Důležité je~nechat hráče v~každém okamžiku pocítit jeho úspěchy na~začátku tohoto momentu nebo~jeho~konci. Je~to~dost~abstraktní, ale~přesto fungující způsob jak~udržet pozornost hráče a~poskytnout mu zábavu. \paragraph{Cíle a jejich distribuce}pomáhají hře udržet~si hráče. Pokud například za~sebou následuje několik "nudných" pasáží, nebo~je~hra příliš repetativní, hráč může ztratit zájem. \Cref{fig:pacing} znázorňuje ukázkový příklad pěkné distribuce klíčových momentů. Co~přesně jsou~klíčové momenty, je~na~vývojáři. Mohou to~být důležité momenty v~příběhu, vylepšení postavy hráče, představení nové důležité mechaniky atd. Důležité je~nechat hráče v~každém okamžiku pocítit jeho úspěchy na~začátku tohoto momentu nebo~jeho~konci. Je~to~dost~abstraktní, ale~přesto fungující způsob jak~udržet pozornost hráče a~poskytnout mu zábavu.
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[width=.6\linewidth]{img/pacing.pdf} \includegraphics[width=.6\linewidth]{img/pacing.pdf}
@ -38,19 +38,18 @@ Důležité~je také rozmyslet si~vhodné umělecké a~technické aspekty hry. N
\newpage \newpage
Při výběru žánru je~důležité vzít v~úvahu preferované herní mechaniky a~jejich složitost. Například hra zaměřená na~rychlou a~dynamickou akci bude pravděpodobně obsahovat prvky střílečky nebo bojové hry, zatímco narativně založená hra může využívat prvky adventury či~RPG. Při výběru žánru je~důležité vzít v~úvahu preferované herní mechaniky a~jejich složitost. Například hra zaměřená na~rychlou a~dynamickou akci bude pravděpodobně obsahovat prvky střílečky nebo bojové hry, zatímco narativně založená hra může využívat prvky adventury či~RPG.
\paragraph{Herní mechaniky} Mechaniky jsou základní interaktivní prvky, které hráč využívá k~postupu ve~hře. Spravný návrh mechanik zajistí, že~hra bude plynulá, intuitivní a~zábavná. \paragraph{Herní mechaniky} Herní mechaniky jsou základní interaktivní prvky, které hráč využívá k~postupu ve~hře. Spravný návrh mechanik zajistí, že~hra bude plynulá, intuitivní a~zábavná.
Při jejich návrhu je~třeba zvážit: jak~mechaniky podporují zvolený žánr, jak~se~budou vyvíjet v průběhu hry a~jak~se~kombinují s~ostatními prvky hry. Například v~hororové hře bude dobře fungovat správa omezených zdrojů pro~zvětšení napětí, zatímco ve~strategické hře budou klíčové rozhodovací prvky a~řízení ekonomiky. Při jejich návrhu je~třeba zvážit: jak~mechaniky podporují zvolený žánr, jak~se~budou vyvíjet v průběhu hry a~jak~se~kombinují s~ostatními prvky hry. Například v~hororové hře bude dobře fungovat správa omezených zdrojů pro~zvětšení napětí, zatímco ve~strategické hře budou klíčové rozhodovací prvky a~řízení ekonomiky.
\paragraph{Platforma} Platforma ovlivňuje technické aspekty vývoje i~celkový dosah hry mezi hráči. Každá platforma má~své specifické a~občas i~náročné požadavky. Za~to~ale~odmění hráče vhodnějším ovládáním nebo~unikátním vizuálním zážitkem. \paragraph{Platforma} Platforma ovlivňuje technické aspekty vývoje i~celkový dosah hry mezi hráči. Každá platforma má~své specifické a~občas i~náročné požadavky. Za~to~ale~odmění hráče vhodnějším ovládáním nebo~unikátním vizuálním zážitkem.
Při~výběru platformy je~nutné zvážit technická omezení a~očekávání hráčů na~dané platformě. Například mobilní hry často využívají dotykové ovládání a~krátké herní smyčky, zatímco hry pro~PC a~konzole mohou nabídnout komplexnější mechaniky a~delší herní dobu. Při~výběru platformy je~nutné zvážit: technická omezení a~očekávání hráčů na~dané platformě. Například mobilní hry často využívají dotykové ovládání a~krátké herní smyčky, zatímco hry pro~PC a~konzole mohou nabídnout komplexnější mechaniky a~delší herní dobu.
\paragraph{Kopírování} Kopírování cizích a~vlastních nápadů je~nedílnou součástí úspěšného vývoje. Hodně se~vyplatí mít přehled ve~vybraném žánru a~mechanikách. Není nic špatného učit~se na~chybách a~úspěších jiných her. Důležité ale~je si~pamatovat, že~neexistuje deterministický vzorec, jak~vytvořit dokonalou kombinaci příběhů, žánrů a~mechanik tak, aby~hra získala oblibu hráčů. \paragraph{Kopírování} Kopírování cizích a~vlastních nápadů je~nedílnou součástí úspěšného vývoje. Hodně se~vyplatí mít přehled ve~vybraném žánru a~mechanikách. Není nic špatného učit~se na~chybách a~úspěších jiných her. Důležité ale~je si~pamatovat, že~neexistuje deterministický vzorec, jak~vytvořit dokonalou kombinaci příběhů, žánrů a~mechanik tak, aby~hra získala oblibu hráčů.
\paragraph{Minihry} Skvělou metodou, jak~rozptýlit hráče od~monotonie herního cyklu jsou~minihry. Přitom je~lze aplikovat kdykoliv. Minihry většinou buď poskytují odměnu, anebo slouží k~relaxaci mezi náročnějšími segmenty hry. Důležité~je, aby~jejich design byl v~souladu s~celkovým stylem hry a~nepůsobil rušivě. Například rytmická minihra ve~fantasy RPG může být zajímavým doplňkem, ale~v~realistické hororové hře by~působila nepatřičně. \paragraph{Minihry} Skvělou metodou, jak~rozptýlit hráče od~monotonie herního cyklu jsou~minihry. Přitom je~lze aplikovat kdykoliv. Minihry většinou buď poskytují odměnu, anebo slouží k~relaxaci mezi náročnějšími segmenty hry. Důležité~je, aby~jejich design byl v~souladu s~celkovým stylem hry a~nepůsobil rušivě. Například rytmická minihra ve~fantasy RPG může být zajímavým doplňkem, ale~v~realistické hororové hře by~působila nepatřičně.
\newpage
\section{Engine} \section{Engine}
Jakmile je~rozhodnuto, jak~bude hra vypadat, je~zapotřebí zvolit vhodné prostředí pro~její vývoj. Vývojář sice může vytvořit vlastní herní engine, avšak v~dnešní době to~zpravidla znamená jen~zbytečné komplikace. Proto jsou na~trhu dnes již~běžně dostupná hotová řešení, která~pokrývají většinu potřeb. Jakmile je~rozhodnuto, jak~bude hra vypadat, je~zapotřebí zvolit vhodné prostředí pro~její vývoj. Vývojář sice může vytvořit vlastní herní engine, avšak v~dnešní době to~zpravidla znamená jen~zbytečné komplikace. Proto jsou na~trhu dnes již~běžně dostupná hotová řešení, která~pokrývají většinu potřeb.
@ -66,8 +65,6 @@ Má ale~své problémy, které pozorný vývojář procití už~v~polovině výv
V~roce 2019, kdy~vzníkalá předchozí práce, v~Unity byl také problém s~paralelizací hlavního cyklu samotného enginu a~rendrovacích úloh. Byl používán triviální model herní smyčky, který~spouštěl logiku sekvenčně v~hlavním vlákně. Stejně~tak bylo triviální i~spouštění renderovacích úloh bez~dynamického clusteringu a~paralelizace. V celku Unity tehdy ještě nebyl tak~robustní a~nenabízel tolik vývojářských možností resp. oprav. V~den vydání této navazující práce, je~pravděpododně nejlepší volbou pro~jednotlivce ale~i~malé týmy. Proto pro~tuto práci bychom dnes zvolili Unity, kdybychom už~neměli předchozí prototyp postavěný na~Unreal Engine. V~roce 2019, kdy~vzníkalá předchozí práce, v~Unity byl také problém s~paralelizací hlavního cyklu samotného enginu a~rendrovacích úloh. Byl používán triviální model herní smyčky, který~spouštěl logiku sekvenčně v~hlavním vlákně. Stejně~tak bylo triviální i~spouštění renderovacích úloh bez~dynamického clusteringu a~paralelizace. V celku Unity tehdy ještě nebyl tak~robustní a~nenabízel tolik vývojářských možností resp. oprav. V~den vydání této navazující práce, je~pravděpododně nejlepší volbou pro~jednotlivce ale~i~malé týmy. Proto pro~tuto práci bychom dnes zvolili Unity, kdybychom už~neměli předchozí prototyp postavěný na~Unreal Engine.
Unity je~engine otevřený všem žánrům a~mnoha platformam jako~mobilní, VR a~další. Často je~použiván v~menších projektech a~menších týmech například při~vývoji indie her, ale~taky i~při~vývoji velkých her.
\paragraph{Godot\protect\footnote{https://godotengine.org/}} Godot je~velmi diskutovaná novinka, která~se~celkem dobře šíří trhem. Hlavní výhoda je~jeho drobnost a~že~je~úplně zdarma za~všech okolností. Godot je~totiž open source produkt vyvíjený komunitou a~dokonce jeho vývoj je~podpořen některými herními studii či~jinými firmy. \paragraph{Godot\protect\footnote{https://godotengine.org/}} Godot je~velmi diskutovaná novinka, která~se~celkem dobře šíří trhem. Hlavní výhoda je~jeho drobnost a~že~je~úplně zdarma za~všech okolností. Godot je~totiž open source produkt vyvíjený komunitou a~dokonce jeho vývoj je~podpořen některými herními studii či~jinými firmy.
Má~podobné problémy jako~jiné enginy a~něco navíc nefunguje dobře nebo chybí. Například výchozí implementace fyziky a~kolizí není často dostačující nebo nepředvídatelně a~uživatelsky špatně řeší určité okamžiky. Je~ale~vskutku ohromující, co~vše~může nabídnout. I~když většinu nabízených technologií vývojář potřebuje přepsat vlastní rukou, jelikož často nefungují, jak~je~zapotřebí. Příklady jsou k~nahlédnutí online na~forumech\cite{godotRealityCheck} nebo~taky blozích\cite{godotRealityCheck2}. Má~podobné problémy jako~jiné enginy a~něco navíc nefunguje dobře nebo chybí. Například výchozí implementace fyziky a~kolizí není často dostačující nebo nepředvídatelně a~uživatelsky špatně řeší určité okamžiky. Je~ale~vskutku ohromující, co~vše~může nabídnout. I~když většinu nabízených technologií vývojář potřebuje přepsat vlastní rukou, jelikož často nefungují, jak~je~zapotřebí. Příklady jsou k~nahlédnutí online na~forumech\cite{godotRealityCheck} nebo~taky blozích\cite{godotRealityCheck2}.
@ -76,13 +73,11 @@ V~době vzniku hry přiložené k~práci byl~Godot ještě příliš nový a~nev
\paragraph{Unreal Engine\protect\footnote{https://www.unrealengine.com/}} Unreal Engine verze 4 byl kdysi zvolen enginem pro~hru, z~které potom vznikla tato práce. Jeho primární výhodou oproti konkurenci jsou vysoce standardizované postupy neboli pipelines, které~zlevňují nebo vůbec umožňují tvorby her ve~velkých týmech. Celý engine se~navíc chlubí velkými ,,úspěchy'' v~různých technologiích, zejména rendrovacích -- což~probereme v~další sekci -- a~taky odvětvích jako motion design, kinematografie, design architektury a~další. \paragraph{Unreal Engine\protect\footnote{https://www.unrealengine.com/}} Unreal Engine verze 4 byl kdysi zvolen enginem pro~hru, z~které potom vznikla tato práce. Jeho primární výhodou oproti konkurenci jsou vysoce standardizované postupy neboli pipelines, které~zlevňují nebo vůbec umožňují tvorby her ve~velkých týmech. Celý engine se~navíc chlubí velkými ,,úspěchy'' v~různých technologiích, zejména rendrovacích -- což~probereme v~další sekci -- a~taky odvětvích jako motion design, kinematografie, design architektury a~další.
Nabízené možností jsou vskutku ohromující, když~se~snažíte vybrat budoucí stavební kámen pro vaši~hru. Je~ale~potřeba brát v~úvahu silnou nepřívětivost enginu k~nováčkům, kteří~chtějí udělat něco vlastního mimo již~existující návody. Stejné lze říct o~oficiální dokumentaci, která~je často a~velmi nedostačujicí -- jestli~vůbec existuje. Navíc při~snaze udělat něco kompletního pomocí nabízených pokročilých technologií, v~závěru vývojář musí dané technologie ovládnout na~velmi vysoké úrovni a~často i~modifikovat zdrojový kód enginu. V~některých případech technologie jako Nanite nebo Lumen nejde použit pro~dokonalé a~odladěné výsledky, proto se~prostě zahazují -- probereme v~další sekci. Nabízené možností jsou vskutku ohromující, když~se~snažíte vybrat budoucí stavební kámen pro vaši~hru. Je~ale~potřeba brát v~úvahu silnou nepřívětivost enginu k~nováčkům, kteří~chtějí udělat něco vlastního mimo již~existující návody. Stejné lze říct o~oficiální dokumentaci, která~je často a~velmi nedostačujicí -- jestli vůbec existuje. Navíc při~snaze udělat něco kompletního pomocí nabízených pokročilých technologií, v~závěru vývojář musí dané technologie ovládnout na~velmi vysoké úrovni a~často i~modifikovat zdrojový kód enginu. V~některých případech technologie jako Nanite nebo Lumen nejde použit pro~dokonalé a~odladěné výsledky, proto se~prostě zahazují -- probereme v~další sekci.
Pokud ignorujeme chybějící dokumentaci, je~Unreal Engine stejný engine jako ostatní. Některé technologie má nesrovnatelně lepší a~některé horší. Lze~najít návody a~neoficiální dokumentaci diky velké komunitě. Dokonce vývojář může samotný engine upravovat podle sebe, protože lze zcela zdarma dostat přístup ke~zdrojovým souborům. Velké týmy tuto nezávislost s~radostí využívají. Pokud ignorujeme chybějící dokumentaci, je~Unreal Engine stejný engine jako ostatní. Některé technologie má nesrovnatelně lepší a~některé horší. Lze~najít návody a~neoficiální dokumentaci diky velké komunitě. Dokonce vývojář může samotný engine upravovat podle sebe, protože lze zcela zdarma dostat přístup ke~zdrojovým souborům. Velké týmy tuto nezávislost s~radostí využívají.
Aktuálně UE~se~orientuje na~3D~hry převážně s~grafikou vysoké kvality a~stejně jako Unity podporuje většinu aktuálních platforem. Taky se~skvěle hodí pro~tvorbu filmu, motion design a~realtime simulace. Navíc díky technologiím jako~Nanite a~Lumen začína přebírat trh architektonických rendereru. \paragraph{CryEngine\protect\footnote{https://www.cryengine.com/}} CryEngine je hodně podobný Unreal Enginu za~výjimkou toho, že~se~specialuzuje jen na~vývoj her. Taky~již~není tolik univerzalní, dokumentace je~ještě míň, komunita je~velmi malá a~přívětivost je snad nejhorší možná. Je~to dost úzce specializovaný engine, který potřebuje silné odborníky k~jeho ovládání.
\paragraph{CryEngine\protect\footnote{https://www.cryengine.com/}} CryEngine je hodně podobný Unreal Enginu za~výjimkou toho, že~se~specialuzuje jen na~vývoj her. Taky~již~není tolik univerzalní, dokumentace je~ještě míň, komunita je~velmi malá a~přívětivost je snad nejhorší možná. Je~to~dost úzce specializovaný engine, který potřebuje silné odborníky k~jeho ovládání.
\subsection{Programovácí jazyk} \subsection{Programovácí jazyk}
Unreal Engine umožňuje programovat pomoci vizuálních bloků tzv. Blueprintů nebo textově v~jazyce C++. I~při~použití pouze jedné z~variant lze vyvinout celou hru. Veškerý potenciál se~ale~projevuje při jejich kombinaci. V~C++ se~skvěle programují komplexní a~nízkoúrovňové prvky, zatímco Blueprinty jsou skvělé pro~skriptování úrovní a~objektů pomocí high-level bloků. Samozřejmě samotné vizuální bloky lze~v~C++ vlastnoručně vytvořit. Unreal Engine umožňuje programovat pomoci vizuálních bloků tzv. Blueprintů nebo textově v~jazyce C++. I~při~použití pouze jedné z~variant lze vyvinout celou hru. Veškerý potenciál se~ale~projevuje při jejich kombinaci. V~C++ se~skvěle programují komplexní a~nízkoúrovňové prvky, zatímco Blueprinty jsou skvělé pro~skriptování úrovní a~objektů pomocí high-level bloků. Samozřejmě samotné vizuální bloky lze~v~C++ vlastnoručně vytvořit.
@ -161,63 +156,61 @@ Je~více způsobů práce s~2D~grafikou, avšak udělat čistě 2D~hru bude prob
Pro~zobrazení UI~nebo jiných 2D~prvků ve~3D bylo vždy možné vytvořit klasickou plochu s~texturou/materiálem nebo~renderovat text do~3D~světa. Samotné renderování textu ve~3D je~implementováno pomoci generace 3D~objektu z~vektorového fontu, což~je často výkonnostně přehnané řešení neboť mesh texty jsou již součástí hotového modelu. Ještě lze použít renderování textu z~předgenerované průhledné rastrové textury fontu. Poslední způsob je~dost rychlý na~implementaci a~výkonnostně nejlepší pokud výstup nemusí být nějak extra kvalitní. Nejlepší možností je~generovat text vektorově v~UI a~následně ho promítnout do~3D~světa, což~je umožněno pomoci již~zmíněných UI~tříd. Pro~zobrazení UI~nebo jiných 2D~prvků ve~3D bylo vždy možné vytvořit klasickou plochu s~texturou/materiálem nebo~renderovat text do~3D~světa. Samotné renderování textu ve~3D je~implementováno pomoci generace 3D~objektu z~vektorového fontu, což~je často výkonnostně přehnané řešení neboť mesh texty jsou již součástí hotového modelu. Ještě lze použít renderování textu z~předgenerované průhledné rastrové textury fontu. Poslední způsob je~dost rychlý na~implementaci a~výkonnostně nejlepší pokud výstup nemusí být nějak extra kvalitní. Nejlepší možností je~generovat text vektorově v~UI a~následně ho promítnout do~3D~světa, což~je umožněno pomoci již~zmíněných UI~tříd.
\subsection{Zvuk} \subsection{Zvuk}
Pro práci se~zvuky máme taktéž bohaté možností. Důležité je předem nastavit kompresi a~způsob streamování zvukových dat z~assetů hry. Ještě lepší je rozdělit zvuky do~menších spojitých balíčků assetů. Často totiž chceme zvukovou stopu použít hned v~okamžik nějaké udalostí, a~je~důležité, aby~se~data co~nejrychleji načetla. Samozřejmě taky lze některé zvuky načíst předem a~držet v~paměti procesu. Ale~i~když se~nezdá, zvuky mohou obsadit poměrně velký kus paměti aplikace a~většinou zbytečně, což~také~většina vývojářů ignoruje. Pro práci se zvuky máme taktéž bohaté vymožeností. Důležité je předem nastavit kompresi a způsob streamování zvukových dat z assetů hry. Ještě lepší je rozdělit zvuky do menších spojitých balíčků assetů. Často totiž chceme zvukovou stopu použít hned v okamžik nějaké udalostí, a je důležité aby se data co nejrychleji načetli. Samozřejmě taky lze některé zvuky načíst předem a držet v paměti procesu. Ale i když se nezdá, zvuky mohou obsadit poměrně velký kus paměti aplikace a~většinou zbytečně, což také většina vývojářů ignoruje.
\paragraph{Mixer a Cue} Cue je kontejner pro jeden a~více konkrétních zvuků, který~se~chová jako~jeden samostatný zvuk. V~tomto kontejneru lze~zvuky mixovat nebo~větvit, modifikovat tonalitu, hlasitost, modulaci, dělat přechody a~mnoho dalšího. Navíc veškeré efekty a~jejich intenzitu lze~aplikovat staticky nebo~dynamicky. Dohromady vše~prochází přes~Mixer, který~funguje jako~zjednodušený mixážní pult. Nastavuje a~kombinuje přiřazené zvukové třídy a~může na~nich~aplikovat equalizer. \paragraph{Mixer a Cues} umožňují precizní modifikaci přehravaného zvuku. Cue je kontejner pro jeden a více konkrétních zvuků, který se chová jako jeden samostatný zvuk. V tomto kontejneru lze zvuky mixovat nebo větvit, modifikovat tonalitu, attenuaci, modulaci, dělat přechody a spoustu dalšího. Navíc veškerý efekty a~jejich intenzitu lze aplikovat staticky nebo dynamicky. Dohromady vše prochází přes Mixer, který funguje jako zjednodušený mixážní pult. Nastavuje a~kombinuje přiřazené zvukové třídy a může na nich aplikovat equalizer.
\paragraph{Dynamická hlasitost} Attenuation je struktura parametrů popisující modifikaci zvuku při~rozdílné vzdálenosti posluchače od~zdroje zvuku. Dohromady tak~popisuje, na~jakou vzdálenost lze~zvuk slyšet a~jak~bude znít ztlumení a~zesílení. Parametry podrobně upřesňují, jak~se~zvuk bude šířit, blokovat, odrážet a~splývat v~prostoru. Většinou je~postačující pouze první základní skupina parametrů popisující objem zvukového prostoru a~funkci, která provádí interpolaci hlasitosti. \paragraph{Attenuace} je struktura parametrů popisující modifikaci zvuku při rozdílné vzdálenosti posluchače od zdroje zvuku. Dohromady tak popisuje na jakou vzdálenost lze zvuk slyšet a jak bude znít ztlumení a zesílení. Parametry podrobně upřesňují jak se zvuk bude šířit, blokovat, odrážet a splývat v prostoru. Většinou je~postačující pouze první základní skupina parametrů popisující objem zvukového prostoru a funkci, která provádí interpolaci hlasitosti.
\subsection{Hudba} \subsection{Hudba}
Během existence Unreal Engine 4 neexistoval téměř žádný oficiální nástroj pro~dynamickou ani~statickou kompozici hudebních linek. Proto~vzníkl jednočlenný tým, který~daný nástroj programoval a~dokonce byl dostupný v~alfa verzi ke~stažení. S~příchodem Unreal Engine 5 práce na~nástroji byla pozastavena a~tedy žádný oficiální nástroj stále neexistuje a~není v~plánu. Během existence Unreal Engine 4 neexistoval téměř žádný oficiální nástroj pro dynamickou ani statickou kompozici hudebních linek. Proto někde v zákoutí byl stvořen tým z jednoho člověka, který daný nástroj programoval a dokonce byl dostupný v alfa verzi na githubu. S příchodem Unreal Engine 5 práce nad nástrojem byla pozastavená a tedy žádný oficiální nástroj stále neexistuje a není v plánu.
Hlavní problém s~hudbou je~synchronizace linek. Hudba je~dost náchylná na~jakékoliv zpoždění neboli desynchronizaci linek, protože i~milisekunda rozdílu může přeměnit nádherně zkomponovanou hudbu v~neposlouchatelnou kaši. Proto~jednoduché přehrání linky v~potřebný okamžik nefunguje. Buď~se~zvukový data načtou pomalu nebo herní tik provede spuštění opožděně, protože~je závislý na~renderovácí frekvenci snímků viz.~\Cref{fig:musicLinking}. Hlavní problém s hudbou je synchronizace linek. Hudba hodně netoleruje jakékoliv zpoždění neboli desynchronizaci linek, protože i milisekunda rozdílu může přeměnit nádherně zkomponovanou hudbu v neposlouchatelnou kaši. Proto jednoduché přehrání linky v potřebný okamžik nefunguje. Buď zvukový data se~načtou pomalu nebo herní tik provede spuštění opožděně, protože je závislý na~renderovácí frekvenci snímků viz. \Cref{fig:musicLinking}.
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[width=.6\linewidth]{img/musicLinking.pdf} \includegraphics[width=.6\linewidth]{img/musicLinking.pdf}
\caption{Diagram znázorňující desynchronizaci hudebních linek kvůli závislosti spouštění na~snímkové frekvenci hry.} \caption{Diagram znázorňující desynchronizaci hudebních linek kvůli závislosti spouštění na snímkové frekvenci hry.}
\label{fig:musicLinking} \label{fig:musicLinking}
\end{figure} \end{figure}
\paragraph{FMOD\protect\footnote{https://www.fmod.com/}} FMOD je middleware audio engine pro~hry poskytující velice silné rozhraní pro~práci se~zvuky nebo~jejich manipulaci. Nejčastěji se~k~němu přiklání pro~tvorbu dynamických hudebních doprovodů, což~vyplňuje hudební mezeru v~UE. Je~to~nejpopulárnější řešení, které~se~používá od~indie po~AAA~hry. Taktéž v~populárních enginech má~integrovanou podporu nebo~poskytuje engine v~podobě samostatného procesu, který~potom může komunikovat s~procesem hry. FMOD~také poskytuje editor zvukových stop a~s~nimi spojených eventů, pro~jednoduché ovládání audia přímo ve~hře. \paragraph{FMOD\protect\footnote{https://www.fmod.com/}}je middleware audio engine pro hry poskytující velice silné rozhraní pro práci se zvuky nebo jejich manipulaci. Nejčastěji se k němu přiklání pro tvorbu dynamických hudebních doprovodů, což vyplňuje hudební mezeru v Unreal Engine. Je to nejpopulárnější řešení, které se používá od indie po AAA hry. Taktéž v populárních enginech má integrovanou podporu nebo poskytuje engine v podobě samostatného procesu, který potom může komunikovat s procesem hry. FMOD také poskytuje editor zvukových stop a s nimi spojených eventů, pro~jednoduché ovládání audia přímo ve hře.
\subsection{Načítání obsahu} \subsection{Načítání obsahu}
V~Unreal~Engine načítání obsahu je~realizované v~podobě herních patchů. Umožnuje~to exportovat a~nahrát libovolný asset nebo~kód, což~je~potom znázorněno v~praktické části práce. Nevýhodou takového přístupu je~dlouha iterace a~aplikace patchů v~případě jejích většího množství -- oficiální dokumentace doporučuje nepřesahovat mez~v~100~patchů. V~den psaní práce, UE~neumožňuje bezproblémové načítání nanite objektů. Integrace nového obsahu do hry za běhu obnáší ošetření spousty technických problémů. Nejzávažnější z nich jsou načtení nového obsahu a jeho kompatibilita. Tyto dvě věci ani nejde ošetřit bez značných omezení a proto jsou ponechány na~vývojářech.
\paragraph{Zdlouhavé načítání} Načtení i~těch menších assetů může značně pozastavit hru. Proto~je~potřeba načítání nového obsahu provést hned při~načtení celé hry, nebo~zapracovat nad~vhodným malým streamingem dat, který~nezpůsobí velkou zátěž na~hardware. \paragraph{Načtení}i těch menších assetů může značně pozastavit hru v načítání. Proto je potřeba načítání nového obsahu provést hned při načtení celé hry, nebo zapracovat nad vhodným malým streamingem dat, který nezpůsobí velkou zátěž na hardware.
\paragraph{Kompatibilita} Kompatibilita nového a~starého kódu je~něco, co~může zhavarovat celou aplikaci. Naštěstí UE řeší havarijní stavy a~hra v~případě načtení nekompatibilního nebo~poškozeného obsahu poběží dál, ale~potřebné assety se~již~nenačtou. Nejvíc tento problém se~projevuje s~klasickým kódem v~C++, kde~výsledný strojový kód očekává nějakou proměnnou nebo~funkci v~přesně daném místě paměti. O~něco lepší je~to~se~vším ostatním, protože~vše je propojeno a~voláno relativními nebo~globálními cestami a~názvy. Tak například funkce v~blueprintech jsou~vždy voláné pomoci názvů funkcí v~řetězcové podobě. Stejně~tak proměnné jsou uložené v~runtime generované pomocné třídě. Takové využití víceúrovňové reflexe, umožňuje ošetřit libovolný problém s~kompatibilitou a~zaručit bezpečný běh za~cenu trochu většího zatížení prostředků. Navíc stejnou reflexi v~C++ lze~jednoduše udělat pomoci maker, které~Unreal~Engine poskytuje. Ovšem ošetření kompatibility není~součástí této~práce. \paragraph{Kompatibilita}nového a starého kódu je něco co může zhavarovat celou aplikaci. Naštěstí Unreal Engine řeší havarijní stavy a hra poběží dál, ale potřebné nám assety se již nenačtou. Nejvíc tento problém se projevuje s klasickým kódem v C++, kde výsledný strojový kód očekáva nějakou proměnnou nebo funkci v~přesně daném místě paměti. O něco lepší je to se vším ostatním, protože vše je propojeno a voláno relativními resp. globálními cesty a názvy. Tak například funkce v blueprintech jsou vždy voláné pomoci názvů funkcí v řetězcové podobě. Stejně tak proměnné jsou uložené ve slovníku variantů. Takové využití víceúrovňové reflexe, umožňuje ošetřit libovolný problém s kompatibilitou a zaručit bezpečný běh za cenu trochu většího zatížení prostředků. Navíc stejnou reflexi v~C++ lze jednoduše udělat pomoci maker, které Unreal Engine poskytuje. Ovšem ošetření kompatibility není součástí této práce.
\subsection{Umělá inteligence herních postav} \subsection{Umělá inteligence}
Nehratelné postavy resp.~NPC jsou~součástí většiny her, protože~pomáhají vyprávět příběh nebo~oživit prostředí. NPC~jako~každý herní prvek lze~napevno navrhnout a~naprogramovat všechny potřebné varianty vzhledů a~použití. Ale~z~designových a~časových důvodů ve~většině případu chceme, aby~NPC~byli více univerzální. Chceme aby~se~mohli samostatně orientovat v~prostředí, pohybovat~se a~občas dokonce reagovat na~okolí a~ovlivňovat~ho. Nehratelné postavy resp. NPC jsou součástí většiny her, protože pomáhají vyprávět příběh nebo obohatit/oživit prostředí. NPC jako každý herní prvek lze napevno navrhnout a naprogramovat všechny potřebné varianty vzhledů a použití. Ale~z~designových a časových důvodů ve většině případu chceme, aby NPC byli více univerzální. Chceme aby se mohli samostatně orientovat v prostředí, pohybovat se a občas dokonce reagovat na okolí a ovlivňovat ho.
\paragraph{Behavior tree}resp. strom pravidel je~nejčastěší způsob kódování chování NPC. Takový strom umožňuje efektivní rozhodování a~řízení chování umělé inteligence. Hlavní výhodou oproti jiným přístupům, jako~například konečné automaty nebo~plánování, je~modularita, škálovatelnost, snadná údržba a~současně přehlednost. Samozřejmě má~i~nevýhody, mezi~které zejména patří optimalizace a~náročný návrh složitých víceúrovňových chování. \paragraph{Behavior tree}resp. strom pravidel je nejčastěji způsob kódování chování NPC. Takový strom umožňuje efektivní rozhodování a řízení chování umělé inteligence. Hlavní výhodou oproti jiným přístupům, jako například konečné automaty nebo plánování, je modularita, škálovatelnost, snadná údržba a současně přehlednost. Samozřejmě má i nevýhody mezi které zejména patří optimalizace a náročný návrh složitých víceúrovňových chování.
NPC začíná rozhodování v~kořenu stromu, od~kterého postupuje k~vrcholům s~pravidly. Listy jsou vždy akční vrcholy a,~jak~napovídá~název,~určují akci, kterou~objekt provede. Cestu od~kořene k~listům vytváří řídicí vrcholy, každý~z~nich určuje pořadí a~podmínky přechodu na podřízené vrcholy. Nejčastěji používané jsou: NPC začíná rozhodování v kořenu stromu od kterého postupuje k vrcholům s~pravidly. Listy jsou vždy akční vrcholy a jak napovídá název, úrčují akci, kterou objekt provede. Cestu od kořene k listům vytváří řídicí vrcholy, každý z kterých určuje pořadí a podmínky přechodu na podřízené vrcholy. Nejčastěji používané jsou:
\begin{itemize} \begin{itemize}
\item sekvenční resp. Sequence, který~cyklicky spouští své~podřízené vrcholy postupně, dokud některý nevrátí přerušení, \item sekvenční resp. Sequence, který cyklicky spouští své podřízené vrcholy postupně, dokud některý nevrátí přerušení,
\item selektor resp. Selector, vybírá první podřízené vrchol, který~v~zadaném pořadí má~pozitivně zhodnocené pravidlo, \item selektor resp. Selector, vybírá první podřízený vrchol, který v zadaném pořadí má pozitivně zhodnocené pravidlo,
\item paralelní resp. Parallel, který~spouští podřízený vrcholy současně, \item paralelní resp. Parallel, který spouští podřízený vrcholy současně,
\item a~podmínkové vrcholy, které~rozhodují, zda~pokračovat v~dané větvi, nebo~se~vrátit ke~kořenu. \item a podmínkové vrcholy, které rozhodují, zda pokračovat v dané větvi nebo se vrátit ke kořenu.
\end{itemize} \end{itemize}
Pomocí těchto pravidel lze~popsat mnoho různých chování postav neboli objektů. UE~navíc poskytuje užitečné systémy pro~pokročilé chování "inteligentních" objektů, jako~například systémy koordinace pohybu. Například navigační síť (navmesh), která~odpovídá objektům místo a~způsob obcházení překážek. K~tomu~jsou k~dispozici i~pokročilejší implementace reakcí chytrých objektů na~zvuký, obraz a~jiné objekty.
\section{Umělá inteligence pro tvorbu obsahu} \section{Umělá inteligence pro tvorbu obsahu}
Již~dnes se~objevují hry, které~integrují danou technologii. NPC~tak~umí poměrně realisticky a~nekonečně držet konverzaci s~hráčem v~textové a~dokonce i~hlasové podobě s~definovaným typem osobností. Možnosti generování textur a~spritů jsou~na~pohled snad nekonečné. Vývojáři mohou poměrně rychle vygenerovat jednoduchý kód nebo~velké konfigurační soubory a~struktury. Navíc již~existuje a~zdokonaluje se~generování 3D~objektů, videí a~hudby. V~teorii stejná umělá inteligence je~schopná generovat popis a~rozmistění obejktů v~herním světě nebo~vyprávět příběh. Celé toto téma je technicky a odborně velice zkrácené s ohledem na rozsah bakalářky. Taky tak jednotlivé modely a práce s nimi nejsou součástí této práce. Táto práce zakládá pouze potřebný koncept pro integraci umělé inteligence.
V~současné době díky výkonostním pokrokům se~rozšířují hranice použitelností umělé intelegence a~to~zejména velkých jazykových modelů (Large Language Models). LLM~ukazují skvělé výsledky v~generování obsahu různého charakteru v~poměru lidského času a~ceny. V současné době díky výkonostním pokrokům se rozšířují hranice použitelností uměle intelegence a to zejména velké jazykové modely. LLM ukazují skvělé výsledky v generování obsahu různého charakteru v poměru lidského času a ceny.
Celé toto téma je~technicky a~odborně velice zkrácené s~ohledem na~rozsah bakalářské práce. Jednotlivé modely a~práce s~nimi nejsou součástí této~práce. Tato~práce zakládá pouze potřebný koncept pro~integraci umělé inteligence. Již dnes se objevují hry, které integrují danou technologii. NPC tak umí poměrně realisticky a nekonečně držet konverzaci s hráčem v textové a dokonce i~hlasové podobě. Textury a sprity jsou na pohled snad nekonečné, a k tvorbě nevyžadují umělecký cit nebo znalostí. Vývojáři mohou poměrně rychle vygenerovat jednoduchý kód nebo velké konfigurační soubory a struktury.
\paragraph{Udržení kontextu} Udržení kontextu je~největší problém této technologie. Nejvíce se~to~projevuje při~generování videí, kde~je~zřetelné jak~model má~potíže udržet konkrétní obsah nebo~myšlenku jednotlivých scén a~následně i~vzhled vizuálních objektů. LLM~s~každou další iteraci má poměrně vysokou šanci změnit směr ,,myšlenky''. A~to~proto, že~LLM nemyslí, LLM~je pouze násobení velkého množství matic pravděpodobnostní tzv.~váhové transformery. Tak~například LLM nevytváří logicky souvislý text ale~pouze predikuje další pravděpodobnostně nejvhodnější sekvence textu na~základě trénovacích dat. \paragraph{Udržení kontextu}je největší problém této technologie. Nejvíc se to projevuje při generování videí, kde je zřetelný jak model má potíže udržet konstantní/konkrétní obsah nebo myšlenku jednotlivých scén a následně i vzhled vizuálních objektů. LLM z každou další iteraci má poměrně vysokou šanci změnit směr ,,myšlenky''. A to proto, že LLM nemyslí, LLM je pouze konvoluce velkého množství pravděpodobnostní. Tak například LLM nevytváří logicky souvislý text ale pouze predikuje další pravděpodobnostně nejvhodnější sekvence textu na~základě trenovaných dat.
Proto zásadní chybou je~použití LLM k~úplné tvorbě nového obsahu. A~správné je~používat LLM pouze jako~nástroj buď pro~tvorbu počáteční verze obsahu nebo~vedlejší obohacení již~existujícího díla. Právě s~touto myšlenkou byl~doprovázen vznik této~práce, díky~níž bude možné otestovat, jak~dobře LLM bude obohacovat již~hotovou počítačovou hru. Proto zásadní chybou je použití LLM k úplné tvorbě nového obsahu. A správně je používat LLM pouze jako nástroj buď pro tvorbu počáteční verze obsahu nebo vedlejší obohacení již existujícího díla. Právě s touto myšlenkou byl doprovázen vznik této práce, díky níž bude možné otestovat jak dobře LLM bude obohacovat již hotovou počítačovou hru.
\paragraph{Halucinace} Další významnou slabinou LLM jsou halucinace. Jedná~se o~situace, kdy~model generuje nesprávné, zavádějící nebo~zcela smyšlené informace. V~kontextu počítačových her tak~může docházet například k~halucinacím při~generování herních dialogů, příběhu nebo~vizuálních prvků, kde~model vymýšlí neexistující herní mechaniky, postavy či~události, které~nepatří do~hry. Kořen tohoto problému je~stejný jak~v~udržení kontextu, kde~navíc se~to~prohlubuje slabým natrenováním modelu. \paragraph{Halucinace}jsou další významnou slabinou LLM. Jedná se o situace, kdy model generuje nesprávné, zavádějící nebo zcela smyšlené informace. V kontextu počítačových her tak může docházet například k halucinacím při generování herních dialogů, questů nebo vizuálních prvků, kde model vymýšlí neexistující herní mechaniky, postavy či události, které nepatří do hry. Kořen tohoto problému je~stejný jak v udržení kontextu, kde navíc se to prohlubuje slabým natrenováním modelu.
Řešení halucinací nejsou dokonalá, ale~mohou výrazně zlepšit stav problémů. K~dispozici je~větší množství metod a~některé dokonce proprietární. V~teorii se~ale~většinou jedná o~metody: \paragraph{Řešení nejsou dokonalá,}ale mohou výrazně polepšit stav problémů. K dispozici je větší množství metod a některé dokonce proprietární. V teorii se~ale~většinou jedná o metody:
\begin{itemize} \begin{itemize}
\item retrieval-augmented generation (RAG), která~kombinuje model s~databází obsahující ověřené informace, \item retrieval-augmented generation (RAG), která kombinuje model s databází obsahující ověřené informace,
\item jemné doladění modelu resp.~fine-tuning, které~spočívá v~dotrenování modelu na~specifických datech (na~datech naši~hry), \item jemné doladění modelu resp. fine-tuning, které spočívá v dotrenování modelu na specifických datech (na datech naši hry),
\item a~omezení generativní volnosti pomocí pravidel a~pevně definovaných scénářů, které~se~zároveň kryjí s~kontrolními mechanismy a~pomocí validace výstupů. \item a omezení generativní volnosti pomocí pravidel a pevně definovaných scénářů, které se zároveň kryjí s kontrolními mechanismy a validaci výstupů.
\end{itemize} \end{itemize}

View File

@ -1,19 +1,19 @@
\chapwithtoc{Úvod} \chapwithtoc{Úvod}
Běžně příběhové hry jsou navrhnuté předem a~zůstávají neměnné. Existují ale~i~výjimky, například hry žánru rogue-like, kde~ale~stále generování obsahu je~založeno na~použití speciálně vytvořeného a~odladěného algoritmu. Tento algoritmus různé složitosti stále používá pouze prostředky předem navržené a~odladěné vývojáři. To~vše má podstatný důvod, jelikož vývojáři mají za~úkol vytvořit tzv.~dobrý herní zážitek a~zaručit, že~hra bude umělecky správně interpretovaná hráčem. Bohužel, nezávísle na~kvalitě výsledné hry -- počet opakovaného zahrání hry v~nejlepším případě klesá nebo~v~tom horším je~pouze jeden. Běžně příběhové hry jsou navrhnuté předem a zůstávají neměnné. Existují ale i výjimky, například hry žánru rogue-like, kde ale stále generování obsahu je založeno na použití speciálně vytvořeného a odladěného algoritmu. Tento algoritmus různé složitosti stále používá pouze prostředky předem navržené a odladěné vývojáři. To vše má podstatný důvod, jelikož vývojáři mají za úkol vytvořit tzv. dobrý herní zážitek a zaručit, že hra bude umělecky správně interpretovaná hráčem. Bohužel nezávísle na kvalitě výsledné hry počet opakovaného zahrání hry v nejlepším případě klesá nebo v tom horším je pouze jeden.
Celý problém v~branži příběhových her je~řešen tzv.~mody neboli modifikacemi hry a~to~různých druhů, jako například grafické, kódové a~další. Samotní vývojáři poskytují potřebné prostředky pro~podporu nebo~tvorbu modů. Dokonce i~technicky zdatní hráči dokážou oblíbené hry úpravit, aby~ony jakousi podporu měly. V~každém případě modifikace značně zvětšují počet přehrání her, kde~klasickým příkladem je~hra The Elder Scrolls: Skyrim od~studia Bethesda. Celý problém v branži příběhových her je řešen tzv. mody neboli modifikacemi hry a to různých druhů, jako například grafické, kódové a další. Samotní vývojáři poskytují potřebné prostředky pro podporu nebo tvorbu modů. Dokonce i technicky zdatní hráči dokážou oblíbené hry úpravit, aby ony jakousi podporu měly. V každém případě modifikace značně zvětšují počet přehrání her, kde~klasickým příkladem je hra The Elder Scrolls: Skyrim od studia Bethesda.
Přestože celé řešení zdánlivě funguje, spoléhá~se na~ochotu samotných hráčů módy vytvářet. Jestliže hra nebude mít dostatek hráčů, potom~taktéž nebude mít dostatek nového fanouškovského obsahu a~výsledně počet přehrání neroste. Nedavným příkladem je~hra Starfield od~již zmíněného studia Bethesda. Navíc k~mnoha technickým omezením samotných módů, musí~mít hráči nejen ochotu, ale~i~být technicky a~umělecky zdatní, aby~něco vytvořili. Minimálně musí vynaložit úsilí k~manuálnímu vyhledání, stažení a~instalaci modů. Přestože celé řešení zdánlivě funguje, spoléhá se na ochotu samotných hráčů módy vytvářet. Jestliže hra nebude mít dostatek hráčů, potom taktéž nebude mít dostatek nového fanouškovského obsahu a výsledně počet přehrání neroste. Nedavným příkladem je hra Starfield od již zmíněného studia Bethesda. Navíc k~mnoha technickým omezením samotných módů, musí mít hráči nejen ochotu, ale~i~být technicky a umělecky zdatní, aby něco vytvořili. Minimálně musí vynaložit úsilí k manuálnímu vyhledání, stažení a instalaci modů.
Tato práce se~zaměřuje na~tvorbu hry a~návrh systému který~umožní výše popsaný lidský faktor a~nedostatky eliminovat. Přináší tak příběh rozdělený na~pět žánrově odlišných úrovní a~zavádí high-level API pro~Unreal~Engine na~stahování a~načítání obsahu do~hry přímo za~běhu. Specifický příběh snižuje ludonarativní disonanci\footnote{Souvislost resp.~logické propojení herního světa, příběhu a~gameplaye.} při vzníku nového obsahu ve~hře a~přítomnost více žánrů umožňuje otestovat, jestli toto řešení v~každém z~nich dostatečně funguje. Zároveň tato práce přenechává samotné generování obsahu pomoci AI modelů a~testování výsledků až~jako další rozšíření. Čili primárně se~zaměřuje na~kostru samotné hry, aby~spotom byl prostor, kam nový obsah začlenit. Tato práce se zaměřuje na tvorbu hry a sytemu, který umožní výše popsaný lidský faktor a nedostatky eliminovat. Přináší tak příběh rozdělený na pět žánrově odlišných úrovní a zavádí high-level API pro Unreal Engine na stahování a načítání obsahu do hry přímo za běhu. Specifický příběh snižuje ludonarativní disonanci\footnote{Souvislost resp. logické propojení herního světa, příběhu a gameplaye.} při vzníku nového obsahu ve hře a přítomnost více žánrů umožňuje otestovat, jestli toto řešení v každém z nich dostatečně funguje. Zároveň tato práce přenechává samotné generování obsahu pomoci AI modelů, práci s~API a~testování výsledků až~jako další rozšíření. Čili primárně se zaměřuje na kostru samotné hry, aby~spotom byl prostor, kam nový obsah začlenit.
\pagebreak \pagebreak
Hlavními tématy, na~které se~práce zaměřuje, jsou: Hlavními tématy, na které se práce zaměřuje, jsou:
\begin{itemize} \begin{itemize}
\item Práce s~Unreal~Engine, jeho reálná omezení, obcházení/vyrovnání se~s~těmito omezení a~tipy. \item Práce s Unreal Engine, jeho reálná omezení, obcházení/vyrovnání se~s~těmito omezení a tipy.
\item Postupy tvorby různých druhů grafiky pro~3D hry zejména v~UE. \item Postupy tvorby různých druhů grafiky pro 3D hry zejména na Unreal Engine.
\item Postupy tvorby zvuků a~hudby pro~hry. \item Postupy tvorby zvuků a hudby pro hry.
\item Ukázkové příklady tvorby herních systémů a~mechanik pro~Unreal~Engine. \item Ukázkové příklady tvorby herních systému a mechanik pro Unreal Engine.
\item Tvorba generativního obsahu a~jeho načítaní na~Unreal Engine. \item Tvorba generativního obsahu a jeho načítaní na Unreal Engine.
\end{itemize} \end{itemize}