graphics
All checks were successful
CI / Build thesis PDFs (pull_request) Successful in 1m5s
CI / Verify PDF/A (pull_request) Successful in 46s

This commit is contained in:
Oleg Petruny 2025-05-14 19:41:27 +02:00
parent 47d36d2263
commit f1e52cf319

58
ch1.tex
View File

@ -95,65 +95,65 @@ Největší nevýhodou je~překvapivě nepřehlednost kódu, která~nejčastěji
V~C++ a~navíc s~otevřeným kódem celého enginu, má~vývojář plnou kontrolu nad~během programu nebo~jeho debugováním. Problém je~ale~použití assetů z~editoru nebo~reference objektů v~herním světě. Jsou~možnosti jak~to~obejít, například statické načtení assetu z~registru pomoci konstantní plné cesty k~assetu nebo~přeiterovat všechny objekty ve~světě. Editor samořejmě není schopen takové reference udržovat v~případě přemístění assetu a~časté iterování přes všechny objekty je~citelná zátěž. Proto ve~většínu případu je~potřeba zpřístupnít celou třídu do~Blueprintu a~v~editoru rovněž vytvořit Blueprint podtřídu, která~bude pouze přiřazovat potřebné reference.
\subsection{Grafika}
V rukou máme taktéž širokou nabídku technologií a nástrojů pro tvorbu grafiky nebo začlenění do hry obsahu vytvořeného v jiném softwaru. Je ale potřeba dát~si~záležet na veškerých nastavení enginu. Těch nastavení je velké množství a~rozhodně se budou iterovat během celého vývoje hry. Základní nastavení totiž jsou příliš univerzalní a nekompletní. Přestože i v základu hra snimi vypadá na dostatečné úrovní, při hraní bude stálý pocit nedokončenosti produktu nebo kopírování cizího díla. Většina vývojářů si totiž nedají zaležet, jak jejich hra vypadá kvůli lenosti nebo technické náročnosti tohoto kroku. Proto se většina her cítí jak si podobní a nepříjemný pro hráče.
V~rukou máme taktéž širokou nabídku technologií a~nástrojů pro~tvorbu grafiky nebo~začlenění do~hry obsahu vytvořeného v~jiném softwaru. Je~ale~potřeba dát~si~záležet na~veškerých nastavení enginu. Těch~nastavení je~velké množství a~rozhodně se~budou iterovat během celého vývoje hry. Výchozí nastavení totiž jsou~příliš univerzalní a~nekompletní. Přestože i~v~základu s~nimi hra vypadá na~dostatečné úrovní, při~hraní bude stálý pocit nedokončenosti produktu nebo~kopírování cizího díla. Většina vývojářů si~totiž nedá zaležet, jak~jejich hra vypadá kvůli úspoře času nebo~technické náročnosti tohoto kroku. Proto se~mnoho her (postavených na~Unreal Engine) vizuálně a~"pocitově" podobá, což~je~mnoha hráčům nepříjemné.
\subsection*{- Materiály}
Materiál je odborné označení souboru dat a funkcí, které reprezentují výsledný vzhled objektu/efektu/světla/postprocesu. Je to de-facto vysokourovňový shader, který i přestože je dost omezený, dokáže generovat skvělý a kreativní výstup. Případně lze zdrojový kód materiálů rozšířit na potřebné funkcionality a v případě hodně velké nouze napsat i vlastní render pipeline, jak to často dělají velký studia nebo nezavislé github projekty.
Materiál je~odborné označení souboru dat a~funkcí, které reprezentují výsledný vzhled objektu, efektu, světla nebo~post-processu vyrenderovaného snímku. Je~to~de-facto vysokourovňový shader, který,~i~přestože je~dost omezený, dokáže generovat skvělý a~kreativní výstup. Případně~lze zdrojový kód materiálu poskytnutého enginem rozšířit o~potřebné funkcionality a~v~případě potřeby napsat i~vlastní render pipeline, jak~to~často dělají nekterá studia.
\paragraph{Substrate\protect\footnote{https://dev.epicgames.com/documentation/en-us/unreal-engine/overview-of-substrate-materials-in-unreal-engine}}je nově vyvíjený systém materiálů, který se primárně chlubí jednoduchostí vrstvení textur/materiálů a celkového návrhu. Vrstvení textur/materiálů je opravdu pohodlné a podobá se klasickému vrstvení v grafických editorech. Umožňuje to tvorbu hodně komplexních a nádherných povrchů za relativně málo úsilí.
\paragraph{Substrate\protect\footnote{https://dev.epicgames.com/documentation/en-us/unreal-engine/overview-of-substrate-materials-in-unreal-engine}}Substrate je~nově vyvíjený systém materiálů, který~se~primárně chlubí jednoduchostí vrstvení textur/materiálů a~celkového návrhu. Vrstvení textur a~materiálů je~jistě pohodlné a~podobá se~klasickému vrstvení v~grafických editorech. Umožňuje~to tvorbu komplexních a~nádherných povrchů za~relativně málo úsilí.
Problémem však je zjednodušenost systému s zaměřením na pohodlnost generického grafického umělce. Vytváří to ještě víc omezení pro grafické a technické možností a téměř úplnou nepoužitelnost technických triků.
Problémem však je zjednodušenost systému se~zaměřením na~pohodlí generického grafického umělce. Vytváří to~ještě víc omezení pro~grafické a~technické možností a~téměř úplnou nepoužitelnost technických triků.
\paragraph{HLSL shadery}lze v Unreal Engine napsat a aplikovat. Je to ale hodně nezdokumentovaný aspekt a zahrnuje spoustu práce okolo, narozdil od toho jak to je v~Unity před verzi 6.
\paragraph{HLSL shadery} V~Unreal Engine lze napsat a~aplikovat HLSL shadery. Je~to~ale~malo dokumentovaný aspekt a~zahrnuje spoustu práce okolo, narozdil od~toho jak~lehce to~lze zprovoznit v~Unity.
\subsection*{- Osvětlení}
Unreal Engine vyniká právě bohatým výběrem možností provedení osvětlení. Lze~zde~najít různé druhy přímých a nepřímých zdrojů světel a mlhy, technik odrazů a stínů. Všechno lze velmi podrobně nastavit buď pro účely výkonu nebo grafické estetiky.
Unreal Engine vyniká bohatým výběrem možností provedení osvětlení. Lze~zde najít různé druhy přímých a~nepřímých zdrojů světel, technik odrazů a~stínů. Nebo taktéž velké množství objemných prostorů pro~ovlivňování světla jako~mlhy nebo~rozptyl a~paprsky. Všechno lze~relativně podrobně nastavit buď~pro~účely výkonu nebo~grafické estetiky.
\newpage
\paragraph{Lumen\protect\footnote{https://dev.epicgames.com/documentation/en-us/unreal-engine/lumen-global-illumination-and-reflections-in-unreal-engine}}je zdánlivě revoluce v realtime herním osvětlení. Jedná se o~speciální režim osvětlení a odrazů, který umožňuje za běhu počítat dynamické osvětlení bez~potřeby vytváření lightmap nebo dotěrného nastavení ploch odrazů. Vytváří velice kvalitní osvětlení za opravdu malo úsili.
\paragraph{Lumen\protect\footnote{https://dev.epicgames.com/documentation/en-us/unreal-engine/lumen-global-illumination-and-reflections-in-unreal-engine}} Lumen je~zdánlivě revoluce v~realtime herním osvětlení. Jedná~se o~speciální režim osvětlení a~odrazů, který~umožňuje za~běhu počítat dynamické osvětlení bez~potřeby vytváření lightmap nebo~pracného nastavení ploch odrazů. Vytváří velice kvalitní osvětlení při~vynaložení minimálního úsili.
Nevýhodu, kterou ale již neprezentují, není tolik trochu větší zátěž na hardware, ale šum vyrendrovaného osvětlení a odrazů. Lumen totíž v reálném čase generuje buffer s odrazy a osvětlení ve velice malém rozlišení a to navíc vynecháva náhodně zhruba polovinu pixelů. Potom výsledný buffer se rescaluje na~potřebné rozlišení a aplikuje. Celé se to spoléha na zhlazovací metodu TAA, která~akumuluje výsledky předchozích snímku a interpoluje jich do aktuálního, což~šum zdanlivě dobře potlačuje ikdyž ne kompletně. Ve výsledku tak potom TAA vytváří ghosting efekt nejen na hranach objektů ale i osvetlení s odrazy, který~dost~bije do oka v dynamických scénach.
Nevýhodu, kterou ale~již~autoři UE neprezentují, není jen výrazně větší zátěž na~hardware, ale~i~šum vyrendrovaného osvětlení a~odrazů. Lumen totíž v~reálném čase generuje buffer s~odrazy a~osvětlením ve~velice malém rozlišení a~navíc vynechává náhodně zhruba polovinu pixelů. Potom se~výsledný buffer rescaluje na~potřebné rozlišení a~aplikuje. Celý tento systém se~spoléhá na~zhlazovací metodu Temporal Anti-Aliasing, která~akumuluje výsledky předchozích snímku a~interpoluje je~do~aktuálního. Tak~potom v~klidných scénach šum je~zdanlivě dobře potlačen i~když~ne~kompletně. Ale~v~dynamických scénach neboli rychlejším pohybu kamery, TAA vytváří ghosting efekt nejen na~hranach objektů ale~i~osvetlení s~odrazy, který~často hráčům je~nepřijemný.
\subsection*{- 3D}
Podporován je import 3D modelů z různých formátů. Navíc k tomu UE poskytuje dostatečné množství optimalizačních technik jako např.:
Podporován je import 3D modelů z~různých formátů. Navíc k~tomu UE poskytuje dostatečné množství optimalizačních technik jako~např.:
\begin{itemize}
\item Render occlusion culling vykreslující objekty pouze pokud se~nachází v~zorném poli kamery, nebo
\item Level Of Details (LOD) vykreslující různě detailizované verze objektu v~závislosti na~jeho vzdalenosti od~hráče, protože~proč~vykreslovat detaily, které~z~dálky nejsou vidět.
\end{itemize}
\paragraph{Render occlusion culling}vykreslující objekty pouze pokud se nachází v zorném poli kamery, nebo
\paragraph{Nanite\protect\footnote{https://dev.epicgames.com/documentation/en-us/unreal-engine/nanite-virtualized-geometry-in-unreal-engine}} Nanite je~další specialita Unreal~Engine~5, která umožňuje vykreslování a~instancování objektů s~miliony až~miliardami trojúhelníků v~reálném čase. Umožňuje tak~použití v~enginu extremně detailních objektů, získaných pomoci skenování objektů v~realitě tzv.~fotogrammetrie.
\paragraph{Level Of Details (LOD)}vykreslující různě detailizované verze objektu v závislosti na jeho vzdalenosti od hráče, protože proč vykreslovat detaily, které z dálky nejsou vidět.
Technika je~založená na~clustarizaci objektů při~importu a~následně dynamickém streamování pouze viditelných trojúhelníků. Bohužel neumožňuje kompletní vynechání LOD~systému, jak~to~inzeruje tvůrce enginu. Nanite sice může ušetřit spoustu času modeláři, ale~reálný zisk ve~výkonu je~pouze ve~velmi náročných scénach obsahující statické objekty. Proto~LOD stále zůstává nejefektivnější technikou zkrácení vykreslovacího času objektu.
\paragraph{Nanite\protect\footnote{https://dev.epicgames.com/documentation/en-us/unreal-engine/nanite-virtualized-geometry-in-unreal-engine}}je ještě jedná specialita Unreal Engine 5, která umožňuje vykreslování a instancování objektů s miliony až miliardy trojúhelníků v reálném čase. Umožňuje tak použití v enginu super detalizovaných objektů, získaných pomoci skenování objektů v realitě.
Technika je založená na předčasné clustarizaci a následně dynamickém streamování pouze viditelných trojúhelníků. Bohužel neumožňuje kompletního vynechání LOD systému, jak to reklamuje tvůrce enginu. Nanite sice může ušetřit spoustu času modeláři, ale reálný zisk ve výkonu je pouze ve velmi náročných scénach obsahující statické objekty. Proto LOD stale zustava nejefektivnější technikou zlevnění vykreslovacího času objektu.
\paragraph{Instancování/Foliáž}umožňuje zmenšení paměti potřebnou pro reprezentaci skupiny stejných objektů a výsledně i zlevnění renderovacího času. Je postavená na jednoduché myšlence, že instance objektů drží v paměti pouze transformaci a zbytek dat je referencován z jedíneho pravého objektu. Často se táto technika používa pro naplnění světa různými drobnými objekty (instancování) nebo tvorbu vegetace (foliáž).
\paragraph{Instancování} Instancování umožňuje zmenšení paměti potřebné pro~reprezentaci skupiny stejných objektů a~výsledně i~zkrácení renderovacího času. Je~postavená na~jednoduché myšlence, že~instance objektů drží v~paměti pouze transformaci, a~zbytek dat je~referencován z~jedíneho pravého objektu. Často se~tato technika používá pro~naplnění světa různými drobnými objekty (instancování) nebo~tvorbu vegetace (foliáž).
\subsection*{- Animace}
Veškeré potřeby pro animaci libovolného druhu jsou taktéž pokryté. Akorát UE neposkytuje žádné high-level ovládání přehráváných sekvencí a proto užitelské ovládání je potřeba dodělat navíc manuálně.
Veškeré potřeby pro~animaci libovolného druhu jsou~taktéž pokryté.
\paragraph{Skeleton}animace je založená doslovně na animování kostry přivázané k 3D modelu. Skupiny trojúhelníků jsou namapovaný na určité kosti, tak že při pohybu kosti je stejným směrem interpolovaná pozice trojúhelníků. Daný druh 3D animace může vytvářet velkou zátěž na procesor zejména při velkém počtu instancí, jelikož ten musí propočítávat pohyb každé kostí vůči hernímu světu a až potom odesílat renderovací požadavek na grafiku. Přesto daná technika tvoří převážnou část všech animací ve hrach díky jednoduchosti tvorby a práci s ní.
\paragraph{Skeleton} Skeleton animace je~založená doslovně na~animování kostry přivázané k~3D modelu. Skupiny trojúhelníků jsou~namapované na~určité kosti, tak~že~při~pohybu kosti je~stejným směrem interpolovaná pozice trojúhelníků. Daný druh 3D~animace může vytvářet velkou zátěž na~procesor zejména při~velkém počtu instancí, jelikož~ten~musí propočítávat pohyb každé kostí vůči hernímu světu a~až~potom odesílat renderovací požadavek na~grafiku. Přesto daná technika tvoří převážnou část všech animací ve~hrách díky jednoduchosti tvorby a~práci s~ní.
\paragraph{Shader}animace je exotická technika s myšlenkou přeskočit krok s výpočtem na procesoru. Animace se zakóduje do textury a následně je aplikovaná ve vertex shaderu jako offset vrcholů. Výsledně lze například velmi levně animovat velké hejno ptáků, který nemusí mít kolizi ve světě.
\paragraph{Shader} Shader animace je~exotická technika s~myšlenkou přeskočit krok s~výpočtem na~procesoru. Animace se~zakóduje do~textury a~následně je~aplikovaná ve~vertex shaderu jako~offset vrcholů. Výsledně lze~například velmi levně animovat velké hejno ptáků, které~nemusí mít kolizi ve~světě.
\subsection*{- Renderer}
Z rendererů lze vybrat mezi Forward a Deferred rendererem. Jsou to systémy které se starají o zpracování grafiky a vykreslování scény. Zajišťují převod 3D objektů a jejich vlastností na obraz, který se zobrazí na monitoru. Renderer pracuje s~osvětlením, stíny, materiály a postprocesovými efekty pro dosažení realistické nebo stylizované grafiky.
Z~rendererů lze~vybrat mezi~Forward a~Deferred rendererem. Jsou~to~systémy, které~se~starají o~zpracování grafiky a~vykreslování scény. Zajišťují převod 3D~objektů a~jejich vlastností na~obraz, který~se~zobrazí na~monitoru. Renderer pracuje s~osvětlením, stíny a~materiály pro~dosažení realistické nebo~stylizované grafiky. V~Unreal Engine ovlivňuje také dostupné prostředky pro~post-processing.
\paragraph{Forward rendering}je metoda renderingu, kde se každý objekt renderuje jednotlivě se všemi aplikovanými světelnými efekty. Je vhodný pro scény s malým množstvím světel a vyžaduje menší paměťovou náročnost. Dnes se převážně používá v mobilních a VR aplikacích, kde je důležitá rychlost výkonu.
\paragraph{Forward rendering} Forward rendering je~metoda renderingu, kde~objekty se~renderují pro~každý zdroj světla zvlášť a~výsledné osvětlení je~součtem těchto průchodů. Je~vhodný pro~scény s~malým množstvím světel a~vyžaduje menší paměťovou náročnost. Dnes se~převážně používá v~mobilních a~VR aplikacích, kde~je~důležitá nízka latence.
\paragraph{Deferred rendering}odkládá aplikaci světelných efektů a v první fázi ukládá informace o geometrii scény do bufferu (G-buffer). Světla se aplikují až v druhé fázi, což umožňuje efektivnější práci s větším množstvím dynamických světelných zdrojů. Tato metoda se používá především v moderních AAA hrách, kde~je~vyžadována vysoká vizuální kvalita. Je to výchozí renderer v Unreal Engine, který~navíc umožňuje použití technologií Nanite a Lumen.
\paragraph{Deferred rendering} Deferred rendering odkládá aplikaci světelných efektů a~v~první fázi ukládá informace o~geometrii scény do~bufferu (G-buffer). Světla se~aplikují až~v~druhé fázi, což~umožňuje efektivnější práci s~větším množstvím dynamických světelných zdrojů. Tato~metoda se~používá především v~moderních AAA~hrách, kde~je~vyžadována vysoká vizuální kvalita. Je~to~výchozí renderer v~Unreal~Engine, který~navíc umožňuje použití technologií Nanite a~Lumen.
Nevýhodou je nemožnost použití kvalitních zhlazovacích metod jako MSAA. MSAA funguje tak, že ukládá průměr více vzorků na pixel během rasterizace, což~dobře funguje u forward renderingu, kde se barva a hloubka určují okamžitě. V~deferred renderingu se však barvy a osvětlení aplikují až v pozdější fázi, kdy~se~světelné výpočty provádějí na pixelech na základě uložených dat v~G-bufferu. Problém je, že MSAA by muselo být aplikováno na všechny jednotlivé buffery (normály, hloubku, albedo atd.), což je extrémně výpočetně náročné a~neefektivní. Proto se místo MSAA často používají jiné metody zhlazování, jako FXAA nebo TAA. Ty jsou podstatně méně kvalitní a TAA dokonce vytváří rozmazávání hran objektů v dynamických scénach resp. ghosting efekt.
Nevýhodou je~nemožnost použití kvalitních zhlazovacích metod jako~MSAA. MSAA funguje~tak, že~ukládá průměr více vzorků na~pixel během rasterizace, což~dobře funguje u~forward renderingu, kde~se~barva a~hloubka určují okamžitě. V~deferred renderingu se~však barvy a~osvětlení aplikují až~v~pozdější fázi, kdy~se~světelné výpočty provádějí na~pixelech na~základě uložených dat v~G-bufferu. Problém~je, že~MSAA by~muselo být aplikováno na~všechny jednotlivé buffery (normály, hloubku, albedo atd.), což~je~extrémně výpočetně náročné a~neefektivní. Proto se~místo MSAA často používají jiné metody zhlazování, jako~FXAA, SMAA nebo~TAA. Ty~jsou podstatně méně kvalitní a~TAA dokonce způsobuje rozmazávání hran objektů v~dynamických scénach resp. ghosting efekt.
Zároveň takova metoda není schopná poskytnout některé grafické techniky. Například transparentní materiály (např. skla) nebo~subsurface scattering (rozptyl světla při~průchodu objektem nebo dopadu na~něj) se~musí renderovat na~konci ještě jedním průchodem tzv.~forward passem.
\subsection*{- Postprocessing}
Postprocessing je technika dodatečného zpracování vyrenderovaného obrazu. Většinou se jedná o triviální manipulaci barev, ale lze tady dělat i spoustu dizajnových a technickych triků. Např. různé glitch efekty, screen space světelné efekty, efekty tepelného/nočního vidění atd..
Postprocessing je~technika dodatečného zpracování vyrenderovaného obrazu. Většinou se~jedná o~triviální manipulaci barev, ale~lze~tady dělat i~spoustu dizajnových a~technickych triků. Např.~různé glitch efekty, efekty tepelného/nočního vidění~atd. získané pomocí procedurální nebo~statické modulace obrazu. V~deffered rendereru navíc lze~používat screen space techniky, které~používají vyrenderovaný snímek k~rychlé tvorbě odrazů (SSR - Screen Space Reflections) nebo~zastínění (SSAO - Screen Space Ambient Occlusion).
\subsection*{- 2D}
Je více způsobů práce s 2D grafikou, avšak udělat čistě 2D hru bude problematické. V oficiální nabídce je rozhraní Paper 2D\footnote{https://dev.epicgames.com/documentation/en-us/unreal-engine/paper-2d-overview-in-unreal-engine}, který vývoj 2D hry sice zjednodušuje, ale přesto má pouze základní prvky 2D enginu. Místy chybí hodně optimalizace, protože soubory v editoru jsou neracionálně velký a ve větších projektech engine začíná být hodně náročný na hardware. Proto pro 2D hry Unreal Engine se moc nehodí a je doporučené rozhlédnout se po konkurenčních enginech.
Je~více způsobů práce s~2D~grafikou, avšak udělat čistě 2D~hru bude problematické. V~oficiální nabídce je~rozhraní Paper~2D\footnote{https://dev.epicgames.com/documentation/en-us/unreal-engine/paper-2d-overview-in-unreal-engine}, které~vývoj 2D~hry sice zjednodušuje, ale~přesto má pouze základní prvky 2D~enginu. Místy chybí optimalizace, protože soubory v~editoru jsou neracionálně velké a~ve~větších projektech engine začíná být hodně náročný na~hardware. Proto se~pro~2D~hry Unreal~Engine moc nehodí a~je doporučené rozhlédnout~se po~konkurenčních enginech.
\paragraph{UI}lze programovat v C++ pomoci Slate třídy nebo přímo pomoci Blueprintů v editoru. Programování se Slate je hodně nízkoúrovňový nýbř stejný jako slepé programování okenní windows aplikace pomocí windows.h knihovny. Mnohem pohodlnější je práce v editoru, kde rovnou lze vidět vizuální výsledek.
\paragraph{UI} UI~lze programovat v~C++ pomoci třídy Slate nebo~přímo pomoci Blueprintů v~editoru. Programování se~Slate je~hodně nízkoúrovňové tedy stejné jako~slepé programování okenní windows aplikace pomocí Win32~API. Mnohem pohodlnější je práce v~editoru, kde~rovnou lze vidět výsledek. Celkově tvorba UI v~Unreal Engine je~jedna z~jeho nejsilnějších stránek mezi konkurenty, i~když se~o~ní~moc nemluví.
Celkově tvorba UI v Unreal Engine je jedná z jeho nejsilnějších stránek i mezi konkurenty, i když se o ní moc nemluví.
\paragraph{Pro 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 Meshe 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ší, avšak je~nemožné dosáhnout hodně kvalitního výstupu. Nejlepší možností je generovat text vektorově v UI a následně ho projektovat 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}
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.