This is an old revision of the document!
Table of Contents
Komponenty herního enginu, herní smyčka. Detekce kolizí a základy herní fyziky. Reprezentace a výpočet animací. Základní optimalizační metody pro herní engine.
B4B39HRY Webové stránky předmětu
- Komponenty herního enginu, herní smyčka – přehled komponent herního enginu a jejich funkce. Herní smyčka a její varianty, fixní a proměnlivý simulační krok (využití a způsob realizace), souvislost reálného a herního času. Vazba komponent herního enginu na herní smyčku. Zpracování dlouhých procedur. Synchronizace fyzikální simulace a zobrazování.
- Detekce kolizí a základy herní fyziky – motivace, princip, využití. Typy kolizních objektů, algoritmy pro detekci kolizí jednoduchých objektů (koule, AABB, OBB), teorém separačních rovin (SAT), princip algoritmu GJK. Fáze detekce kolizí, filtrování kolizí, akcelerace pomocí mřížky a hierarchie obalových těles. Kolizní dotazy a jejich varianty, reprezentace kolize. Smyčka fyzikální simulace. Analytické řešení pohybové rovnice, řešení numerickou integrací, Eulerova metoda, příklady. Typy vazeb mezi objekty a jejich využití. Výpočet reakce na kolize a fyzikální materiály.
- Reprezentace a výpočet animací – typy animací a jejich využití. Podrobný popis skeletální animace, reprezentace kostry. Animační klipy – vytváření, reprezentace, výpočet animované kostry. Míchání animačních klipů – způsob výpočtu a příklady. Skinning – způsob výpočtu pozic vrcholů metodou linear blend skinning. Animační křivky – princip, využití, Hermitova kubika, Catmull-Rom spline.
- Základní optimalizační metody pro herní engine – dopředné a odložené vykreslování, princip, srovnání. Optimalizace scény pomocí LOD, typy LOD a způsob jejich přepínání. Předpočítání osvětlení pomocí osvětlovacích map a sond odrazu – princip, způsob použití, omezení. Redukování podle viditelnosti: redukování pohledovým jehlanem, redukování podle zastínění (online a offline), potenciálně viditelné množiny (PVS) – výpočet a použití.
1. Komponenty herního enginu a herní smyčka
1. Přehled komponent herního enginu a jejich funkce
Herní engine je software, který poskytuje základní framework a struktury pro tvorbu her. Komponenty enginu zahrnují:
- AI – řídí chování NPC, pathfinding, rozhodování (decision-making).
- Fyzika – zpracovává kolize, gravitaci, rychlost objektů a další fyzikální síly.
- Rendering – zajišťuje vizuální stránku hry, vykreslování 3D a 2D scén, osvětlení a speciální efekty.
- Zvuk – spravuje hudbu, zvukové efekty a prostorový zvuk.
- UI/Input – zpracovává uživatelský vstup (myš, klávesnice, ovladače, touchpad).
- Scripting – umožňuje úpravu herní logiky pomocí skriptovacích jazyků (např. Lua, Python).
- Síť – zajišťuje multiplayerové funkce, synchronizaci klient-server, správu serverů a anti-cheat opatření.
2. Herní smyčka
Herní smyčka představuje jádro herní logiky, které kontinuálně běží během celé hry (udává tzv. FPS – snímky za sekundu). Základní části smyčky:
- ProcessInput – zpracování uživatelského vstupu.
- UpdateGame – aktualizace herní logiky, animací, fyziky, AI a dalších komponent.
- Render – vykreslení aktualizované scény.
Varianty herní smyčky
Herní smyčka může fungovat s fixním nebo proměnlivým simulačním krokem:
- Fixní simulační krok – doba každého kroku smyčky je konstantní, což zajišťuje stabilitu simulace, ale může způsobit zpoždění odezvy. V případě zpoždění se provede několik aktualizací před jedním vykreslením.
- Proměnlivý simulační krok – smyčka běží co nejrychleji. Výhodou je rychlá odezva, ale nevýhodou může být tzv. screen tearing a variabilní FPS. Vyžaduje vztahování fyziky k reálnému času pomocí zvláštního kroku (např. FixedUpdate).
3. Souvislost reálného a herního času
Časy používané ve hře:
- Reálný čas (wall-clock time) – odpovídá skutečnému času.
- Herní čas – interní logický čas hry, který může být ovlivněn (zrychlení, zpomalení, zastavení).
- CPU/GPU čas – doba potřebná pro vykonání jedné iterace smyčky.
Synchronizace herního času s reálným časem zajistí konzistentní herní zážitek bez ohledu na výkon zařízení.
4. Vazba komponent herního enginu na herní smyčku
Jednotlivé komponenty enginu jsou propojeny s částmi smyčky:
- ProcessInput komunikuje s komponentou vstupu.
- UpdateGame propojuje fyziku, AI, zvuk, skripty a síť (aktualizace objektů a chování).
- Render komunikuje s renderingovou částí enginu.
- Případný LateUpdate (např. v Unity) využíván pro specifické úlohy jako aktualizace kamery nebo následné úpravy fyziky.
5. Zpracování dlouhých procedur
Dlouhé operace, jako například načítání velkých scén, lze řešit několika způsoby:
- Threading – paralelní vykonávání operací.
- Rozdělení na menší části – postupné vykonání delších úloh.
- Loading screen – vizuální indikátor načítání hry.
- Coroutines (např. Unity) – umožňuje čekání na další snímek nebo definovaný časový interval.
6. Synchronizace fyzikální simulace a zobrazování
Problém nesynchronizace mezi simulací a zobrazením (viditelné trhání pohybujících se objektů) se řeší:
- Interpolací – dopočítávání stavu mezi dvěma posledními známými stavy.
- Extrapolací – předpověď stavu na základě posledního známého stavu a rychlosti objektu.
Alternativně lze použít vyšší frekvenci fyzikální simulace (např. dvojnásobnou proti FPS), aby nedocházelo k viditelným nesouladům.