The wiki page is under active construction, expect bugs.

This is an old revision of the document!


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:

  1. ProcessInput – zpracování uživatelského vstupu.
  2. UpdateGame – aktualizace herní logiky, animací, fyziky, AI a dalších komponent.
  3. 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.

Navigation

Playground

QR Code
QR Code statnice:bakalar:b4b39hry (generated for current page)