From b2508d5b0e57d1f98b379e6b221cbfc803c6d02a Mon Sep 17 00:00:00 2001 From: Oleg Petruny Date: Tue, 22 Apr 2025 17:44:11 +0200 Subject: [PATCH] half review fix --- ch1.tex | 64 +++++++++++++++++++++++++++++----------------------- intro.tex | 17 +++++++------- metadata.tex | 2 +- refs.bib | 20 ++++++++++++---- 4 files changed, 60 insertions(+), 43 deletions(-) diff --git a/ch1.tex b/ch1.tex index ed4bc2e..a7ac12e 100644 --- a/ch1.tex +++ b/ch1.tex @@ -1,69 +1,77 @@ -\chapter{Zásady tvorby} +\chapter{Zásady tvorby počítačových her} \label{chap:refs} -Vývoj her je obor, který je často mylně interpretován širokou veřejností. Existuje všeobecná představa o tom, jak by hry měly vypadat, jaké prvky musí či nesmí obsahovat, kdo a jak je má vyvíjet a jaká by měla být jejich cenová politika. Ve~skutečnosti však průměrného uživatele zajímá především míra \emph{zábavy} a herní zážitek, který za investovaný čas a finanční prostředky získá. +Vývoj her je~obor, který~je~často mylně interpretován širokou veřejností. Existuje všeobecná představa o~tom, jak~by~hry měly vypadat, jaké prvky musí či~nesmí obsahovat, kdo~a~jak~je~má~vyvíjet a~jaká by~měla být jejich cenová politika. Ve~skutečnosti však průměrného uživatele zajímá především míra \emph{zábavy} a~herní zážitek, který za~investovaný čas a~finanční prostředky získá. -Z pohledu hráče nejsou faktory jako pracovní podmínky vývojářů nebo kontroverzní herní mechaniky primárními rozhodovacími kritérii. Klíčovým aspektem je~optimalizace uživatelského zážitku a zajištění dostatečné interaktivity, plynulosti a engagementu, které přímo ovlivňují retenci a herní ekonomiku. +Z~pohledu hráče nejsou faktory jako~pracovní podmínky vývojářů nebo~kontroverzní herní mechaniky primárními rozhodovacími kritérii. Klíčovým aspektem je~optimalizace uživatelského zážitku a~zajištění dostatečné interaktivity, plynulosti a~vtažení do~děje, které přímo ovlivňují retenci a~herní ekonomiku. -Jelikož je zábava vysoce subjektivním konceptem, neexistuje univerzální model hry, který by vyhovoval všem uživatelům. Herní design proto využívá analytických metod, jako jsou uživatelské testování, behaviorální analýza a iterativní vývoj, aby maximalizoval pozitivní odezvu v cílové skupině hráčů. +Jelikož je~zábava vysoce subjektivním konceptem, neexistuje univerzální model hry, který~by~vyhovoval všem uživatelům. Herní design proto~využívá analytických metod, jako~jsou uživatelské testování, behaviorální analýza a~iterativní vývoj, aby~maximalizoval pozitivní odezvu v~cílové skupině hráčů. \section{Průběh vývoje} -Pro nikoho snad není překvapivé, že pro vznik díla je potřeba nějaká myšlenka, která mu předchází. V tomto hry jsou stejný jako každé odvětví. Je potřeba, aby~myšlenka byla funkční/potřebná, a v našem případě zábavná. Bohužel hry už~z~většinou odvětví nesdílí aspekt, při kterém funkčnost myšlenky lze ověřit již~na~začátku produkce. A je to ještě horší, protože to můžeme většinou zjistit pouze u konce. Spousta her proto potom jsou zamítnuté, neviditelné nebo dokonce předělány hned před koncem. O jednom takovém případu -- který skončil šťastně -- doporučuji si přečíst v knize \textit{Blood, Sweat, and Pixels} \cite{schreier2017blood} o hře Uncharted 4. Autor převypráví rozhovory s vývojáři her různých žánrů a velikostí, které znázorňují unikátní a zároveň společné překážky/problémy v oboru vývoje videoher. +Pro nikoho snad není překvapivé, že~pro~vznik díla je~potřeba nějaká myšlenka, která mu~předchází. V~tomto jsou~hry stejný jako~jiné kreativní odvětví. Je~potřeba, aby~myšlenka byla funkční, a~v~našem případě zábavná. Bohužel hry už~s~většinou odvětví nesdílí aspekt, při~kterém funkčnost myšlenky lze~ověřit již~na~začátku produkce. A~je~to ještě horší, protože~to~můžeme většinou zjistit pouze u~konce. Nezanedbatelná část her proto potom je~zamítnutá, neviditelná nebo dokonce předěláná hned před koncem. O~jednom takovém případu -- který skončil šťastně -- doporučuji si~přečíst v~knize \textit{Blood, Sweat, and Pixels} \cite{schreier2017blood} o~hře Uncharted 4. Autor převypráví rozhovory s~vývojáři her různých žánrů a~velikostí, které~znázorňují unikátní a~zároveň společné překážky v~oboru vývoje videoher. -\subsection{Design dokument} Nedílnou součástí vývoje hry je iterace nápadů a celkový popis prostředí a způsobů produkce. To vše v sobě zahrnuje Design dokument. Ten může mít docela různou podobu, jelikož jeho hlavním cílem je uchovat potřebné nápady na rychlém a~přehledném místě. Souhrn těchto nápadů, jejích propracovanost a to jak dobře fungují spolu, potom tvoří celou hru i výslednou zábavu. Proto dobré písemné zpracování pomůže předat myšlenky designéra a jejich aktuální verzi celému týmu vývojářů. +\subsection{Design dokument} Nedílnou součástí vývoje hry je~iterace nápadů a~celkový popis prostředí a~způsobů produkce. To~vše~v~sobě zahrnuje Design dokument. Ten~může mít různé podoby, jelikož jeho hlavním cílem je~uchovat potřebné nápady na snadno dostupném a~přehledném místě. Souhrn těchto nápadů, jejích propracovanost a~to, jak~dobře spolu fungují, potom tvoří celou hru i~výslednou zábavu. Proto~dobré písemné zpracování pomůže předat myšlenky designéra a~jejich aktuální verzi celému týmu vývojářů. -V dizajn dokumentu hry, která je nedílnou součástí této práce, jsou popsany nápady dost kratce až abstraktně. To bylo způsobeno tím, že nad hrou pracoval pouze jeden člověk. V reálném týmu by takový dokument byl ukázkovým příkladem těch špatných i přesto, že obsahuje všechny potřebné náležitostí. +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} -Hra by měla poskytovat nějakou \emph{myšlenku} relativní pro hráče, aby ten si hru zahral. Počáteční myšlenku vždy vytváří a rozvíjí vývojář. Ta následovně může být ponechána i na konci vývoje, nebo být co nejvíc změněná samotnou hrou, její mechanikami a kreativním provedením. Krásný případ je známa desková hra ,,Landlord's Game'' od Lizzie Magie později známá jako ,,Monopoly''. Paní Magiová chtěla vytvořit hru s myšlenkou představit hrůzy kapitalismu a monopolí, poskytnutím hráčům zkušenosti, kde jeden jedinec neustale a nevyhnutelně bohatne zatímco zbytek stejně tak neustale a nevyhnutelně chudne. Bohužel hráči moc tuhle myšlenku nepochitili. Místo vystrašení z kapitalismu, ti naopak rádi zažíval hazard a možnost ekonomicky zkrachovat 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 poskytování myšlenky v příběhových hrach. Ty by měli mít v kostře nějaké hlavní téma, které se následovně obohacuje příběhy okolo. Je~velmi důležité, aby okolní příběhy měli \emph{motivy}, aby následovně i hráč měl motiv je prožít. Dokonce hráč nemusí vědět motivy až ke konci hry, stačí aby byla cítit smysluplná návaznost a pocit možné odměny. Proto za umění je považováno i~velkolepé předstírání existence motivů, které donutí hráče \emph{stravit 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ábavu, 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 -\paragraph{Cíle a jejich distribuce}pomáhají udržet hráče. \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 procí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} \centering \includegraphics[width=.6\linewidth]{img/pacing.pdf} -\caption{Ukázkový graf představující distribuci klíčových momentů a cesty k ním. Převzato z článku \protect\textit{Gameplay Fundamentals Revisited: Harnessed Pacing \& Intensity} \protect\cite{pacingIntensity}.} +\caption{Ukázkový graf představující distribuci klíčových momentů a~cesty k~ním. Převzato z~článku \protect\textit{Gameplay Fundamentals Revisited: Harnessed Pacing \& Intensity} \protect\cite{pacingIntensity}.} \label{fig:pacing} \end{figure} \section{Žánr, mechaniky, reference, platforma} -Důležité je také rozmyslet si vhodné umělecké a technické aspekty hry. Některé herní žánry musí hra obsahovat a některé budou překážet zážitku. Podobné je to i~s~mechanikami. Například nebude moc zábavné hrát hlavní mechaniku farmářství, pokud cílový žánr hry je horor. Správná volba žánru a mechanik je tedy klíčová pro vytvoření konzistentního a poutavého herního zážitku. +Důležité~je také rozmyslet si~vhodné umělecké a~technické aspekty hry. Například nebude moc zábavné hrát hlavní mechaniku farmářství, pokud hlavní žánr hry je~horor. Správná volba žánru a~mechanik je~tedy klíčová pro~vytvoření konzistentního a~poutavého herního zážitku. -\paragraph{Žánr}hry určuje její základní atmosféru, pravidla a často i cílovou skupinu hráčů. Většinou se dnes setkáváme s hybridními žánry. Které dokážou poskytnout hráči více obsahu a tím pádem i možné zábavy. +\paragraph{Žánr} Žánr hry určuje její základní atmosféru, pravidla a~často i~cílovou skupinu hráčů. Většinou se~dnes setkáváme s~hybridními žánry, které dokážou poskytnout hráči více obsahu a~tím pádem i~více možné zábavy. \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}jsou základní interaktivní prvky, které hráč využívá k~postupu ve hře. Dobrý design 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}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í}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 vyhrála všechny ceny. +\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}jsou skvělou metodou, jak rozptýlit hráče od monotonie herního cyklu. 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ě. \section{Engine} -Když už je rozhodnuto jak bude vypadat hra, je zapotřebí vybrat vhodné prostředí pro její tvorbu. Vývojář může vytvořit vlastní engine, ale dnes to většinou přináší pouze zbytečné komplikace. Proto se na trhu často objevují 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. -Tato práce je zamyšlená jako 3D příběhová hra s více žánry a s možností dynamického načítaní nového obsahu za běhu. Pro tyto účely se nabízí 4 hlavní enginy na trhu, ze kterých se v minulosti vybral Unreal Engine. Taky proto celá tato sekce s rozborem technologií enginů bude popisovat technologie dostupné právě v Unreal Engine. +Základní funkce herních enginů obvykle zahrnují editor scény, přehrávače a~čtečky různých multimediálních či~digitálních formátů, simulaci fyziky, zpracování uživatelského vstupu a~zajištění kompatibility výstupu mezi různými operačními systémy a~hardwarem. Nad~rámec~toho většina enginů poskytuje i~vlastní univerzální implementaci herních objektů a~mechanik. Například primitivní chůze herní postavy, či~implementace renderingu obrazu a~grafických prvků jako~osvětlení, stíny, odrazy a~případně další. Tedy většinou se~jedná o~technologie, které~se~využívají poměrně často, ale~jejich implementace bývá časově náročná až~nevýhodná. -\paragraph{Unity\protect\footnote{https://unity.com/}}je nejspíš stale nejpopulárnější volbou v roce vzniku této práce. Lze na~něm vytvořit hru libovolného žánru a rozsahu. Má rozhodně největší komunitu a rozsahle návody, jednodušší programovací jazyk C\# a skriptování herních objektů. Zároveň již obsahuje zmíněnou v požadavku možnost načtení obsahu. +Vytvářet hru pomoci enginu může mít~i~své nevýhody. Některé technologie, zejména grafické, mohou~být vynucené, čili pevně svázané s~daným enginem, čímž~vynucují určité způsoby použití a~tím~pádem omezují kreativní svobodu. Kromě~toho většina enginů není distribuována zcela zdarma. Vývojáři buď musí předem uhradit licenční poplatky za~middleware, nebo~jsou vázáni na~procentuální odvody z~výdělků, což~je~dnes častější model. -Má ale své problémy, které ohleduplný vývojář procití už v polovině vývoje. Tvorba dobré grafiky často vyžaduje psaní vlastních HLSL shaderů, což moc nekoreluje s jednoduchostí C\#. Navíc grafika často vyžaduje psaní vlastních optimalizačních algoritmů nebo manuální adaptaci cizích pluginů. Následovně i samotný C\# vytváří komplikace s rychlostí běhu programu, obsahem zabrané paměti a garbage collectoru. Všechny tyto problémy lze částečně opravit a vylepšit, jen je potřeba hromada těžších znalostí navíc. Lze o tom přečíst online \cite{unityComparing}. +Tato práce je~zamýšlena jako~vývoj 3D příběhové hry s~více žánry a~s~možností dynamického načítání nového obsahu za~běhu. Pro~tyto účely se~nabízí čtyři hlavní enginy na~trhu, přičemž výběr v předchozí práci padl na~Unreal Engine a proto táto navazujiící práce v tom pokračuje. Z~tohoto důvodu veškerý následující sekce, věnované technologickému rozboru či implementaci, se~zaměří výhradně na~možnosti, které~Unreal Engine nabízí. -V roce 2019 kdy hra přiložena k této práci vzníkalá, byl také problém s paralelizací hlavního cyklu samotného enginu a rendrovacích úloh. V celku Unity tehdy ještě nebyl tak robustní a nenabízel tolik vývojářských možností/oprav. V den vydání této práce, je rozhodně nejlepší volbou nejen pro jednotlivce a malé týmy. +\paragraph{Unity\protect\footnote{https://unity.com/}} Unity~je nejspíš stále nejpopulárnější volbou v~roce vzniku této práce. Lze na~něm vytvořit hru libovolného žánru a~rozsahu. Má~rozhodně největší komunitu a~rozsáhle návody, jednodušší programovací jazyk C\# a~skriptování herních objektů. Zároveň již~obsahuje možnost načítání obsahu za~běhu, zmíněnou v požadavcích. -\paragraph{Godot\protect\footnote{https://godotengine.org/}}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í. Má podobné problémy jako Unity a někdy ještě horší. 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í. V dobu vzniku hry přiložené k práci, Godot byl ještě příliš nový a nevypadál nijak perspektivně. V den vydání této práce, je solidní konkurent v některých herních žánrech. +Má ale~své problémy, které pozorný vývojář procití už~v~polovině vývoje jestli ne~dřív. Tvorba dobré grafiky často vyžaduje psaní vlastních HLSL shaderů, což~moc nekoreluje s~jednoduchostí C\#. Navíc grafika často vyžaduje psaní vlastních optimalizačních algoritmů nebo~manuální adaptaci cizích pluginů. Následovně i~samotný C\# vytváří komplikace s~rychlostí běhu programu, obsahem zabrané paměti a~přítomností garbage collectoru. Všechny tyto problémy lze~částečně opravit a~vylepšit, jen~je~potřeba mnoho pokročilých znalostí navíc. Detaily a~zkušenosti vývojářů lze~nalézt online, například~zde\cite{unityComparing}. -\paragraph{Unreal Engine\protect\footnote{https://www.unrealengine.com/}}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 vychlubuje 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ší. +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. + +\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}. + +V~době vzniku hry přiložené k~práci byl~Godot ještě příliš nový a~nevypadal nijak perspektivně. V~den vydání této práce, je~solidní konkurent ve~2D~herních žánrech jako~platformery, logické hry či~mobilní hry. + +\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 vychlubuje 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ší. 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, pokud ti 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é úrovně a často i modifikovat zdrojový kód. 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í. diff --git a/intro.tex b/intro.tex index 301de21..d5e3529 100644 --- a/intro.tex +++ b/intro.tex @@ -1,20 +1,19 @@ - \chapwithtoc{Úvod} -Běžně příběhové hry jsou navrhnuté předem a zůstávají neměnné. Existují i hry výjimky například žánru rogue-like, kde ale stále generování obsahu je založeno na použití speciálně vytvořeném a odladěnem algoritmu. Tento algoritmus různé složitosti stále používa pouze prostředky předem založené a odladěné vývojáři. To vše má podstatný důvod, jelikož vývojáři mají za úkol tzv. postavit správný 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 přehrá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. módy 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 technické zdatné hráče dokážou oblíbené hry úpravit, aby ony jakousi podporu měli. V jakémkoliv 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 dostatečnou fanouškovskou bázi, potom taktéž nebude mít dostatek nového fanouškovského obsahu a výsledně počet přehrání neroste. Klasickým příkladem je hra Starfield od již zmíněného studia Bethesda. Navíc ke spoustě technických omezení samotných módů, hráči musí mít nejen ochotu, ale i být technický a umělecky zdatní, aby něco vytvořili. Minimálně musí přidat ú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 sytemu, který umožní výše popsaný lidský faktor a nedostatky eliminovat. Přináší tak příběh rozdělený na 5 žá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 při vzníku nového obsahu ve hře a více žánru umožňuje otestovat toto řešení, jestli v každém z nich dostatečně funguje. Zároveň táto práce přenechává samotné generování obsahu pomoci AI modelů, práci s API a testování výsledků až pro další práci. Čili primárně se zaměřuje na kostru samotné hry, aby potom 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 -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} -\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ého druhu grafiky pro 3D hry zejména na Unreal Engine. -\item Postupy tvorby audia pro hry. +\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 na Unreal Engine. +\item Postupy tvorby zvuků a hudby pro hry. \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. \end{itemize} diff --git a/metadata.tex b/metadata.tex index be6d7ab..4951201 100644 --- a/metadata.tex +++ b/metadata.tex @@ -52,7 +52,7 @@ \def\StudyBranch{IPP6 (0613RA1400060010)} \def\Dedication{% -Rozhodně děkuji svému vedoucímu Mgr. Martinu Mirbauerovi, za jeho čas, ochotu, trpělivost a cenné rady. K tomu i spoustě dalších lidí zapsaných v titulkach hry, s pomoci, testováním a podporou. Bez všech těchto lidí by táto práce nemohla vzniknout nebo by nenabyla takového rozsahu či kvality. +Rozhodně děkuji svému vedoucímu Mgr. Martinu Mirbauerovi za jeho čas, ochotu, trpělivost a cenné rady. Velký dík patří také mnoha dalším lidem uvedeným v titulcích hry za jejich pomoc, testování a podporu. Bez všech těchto lidí by tato práce buď vůbec nevznikla, nebo by nedosáhla takového rozsahu a kvality. } \def\AbstractEN{% diff --git a/refs.bib b/refs.bib index beaca25..edffd3c 100644 --- a/refs.bib +++ b/refs.bib @@ -9,22 +9,32 @@ } @misc{pacingIntensity, - title = {Gameplay Fundamentals Revisited: Harnessed Pacing \& Intensity}, + title = {Gameplay Fundamentals Revisited: Harnessed Pacing \& Intensity [online]}, author = {Mike Lopez}, year = 2018, - note = {\url{https://www.gamedeveloper.com/design/gameplay-fundamentals-revisited-harnessed-pacing-intensity} [Accessed: (03.2025)]} + note = {[cit. 2025-04-01]. Dostupné z: \url{https://www.gamedeveloper.com/design/gameplay-fundamentals-revisited-harnessed-pacing-intensity}} } @misc{unityComparing, title = {Objectively comparing Unity and Unreal Engine}, author = {Sirawat Pitaksarit}, year = 2019, - note = {\url{https://gametorrahod.com/objectively-comparing-unity-and-unreal-engine/} [Accessed: (03.2025)]} + note = {[cit. 2025-04-01]. Dostupné z: \url{https://gametorrahod.com/objectively-comparing-unity-and-unreal-engine/}} } +@misc{godotRealityCheck, + title = {What are the worst parts/issues of Godot in your experience?}, + author = {Reddit/Godot}, + year = 2024, + note = {[cit. 2025-04-01]. Dostupné z: \url{https://www.reddit.com/r/godot/comments/1ewrkey/what_are_the_worst_partsissues_of_godot_in_your/}} +} - - +@misc{godotRealityCheck2, + title = {Godot’s 3D Workflow Issues, Inconsistencies, and Confusion}, + author = {Alfred Reinold Baudisch}, + year = 2023, + note = {[cit. 2025-04-01]. Dostupné z: \url{https://alfredbaudisch.com/blog/gamedev/godot-engine/godots-3d-confusing-workflow-inconsistencies-conflicting-behaviours-and-annoyances/}} +} @book{knuth1979tex,