Pocítacové hry - Herní engine
Transcript of Pocítacové hry - Herní engine
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Počítačové hryHerní engine
1 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Obsah přednášky
I Co je „EngineÿI Herní smyčkaI Struktura enginuI Hotové enginy
2 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Literatura a odkazy
I http://gpwiki.org/index.php/Game Engines
I http://en.wikipedia.org/wiki/Game engine
I http://www.devmaster.net/engines/
I Dalmau. Core Techniques and Algorithms in Game Programming. 2003
I Zerbst, Duvel. 3D Game Engine Programming. 2004
I Harbour. Game Programming All in One (2nd Edition). 2004
I Eberly. 3D Game Engine Architecture: Engineering Real-Time Applications with
Wild Magic. 2004
3 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
”It is a mistake to think you can solve any major problemsjust with potatoes.”
-Douglas Adams
4 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Co je engine?
I Je jádro interaktivní aplikaceI Má za úkol odstínit programátora-uživatele od systémových záležitostí
I poskytuje základní metodyI inicializaceI nahrání datI . . .I ukončení
I Ulehčuje vývoj hryI možnost znovuvyužití velkých kusů kódu
I v ideálním případě „pouzeÿ změna datI přechod na jinou platformu
5 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Co všechno engine nabízí?
I Záleží na kvalitě enginuI grafika 2D, 3DI fyzika a kolizeI zvukI vstupy/výstupyI skriptováníI animaceI umělá inteligenceI síťové záležitostiI správa pamětiI reprezentace světa (scene graph)I správa souborůI GUI
6 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aplikace v reálném čase
I Hry jsou časově závislé aplikaceI modul pro simulaci virtuálního světa
I AII fyzikaI . . .
I prezentační modulI vstupní modul
I pro zjednodušení jen 3 - update světa a prezentace, vstupI Každý z modulů je časově omezen
I co si s tím počít?
I Všechny moduly běží současněI jak to ale zařídit?
7 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aplikace v reálném čase
I Hry jsou časově závislé aplikaceI modul pro simulaci virtuálního světa
I AII fyzikaI . . .
I prezentační modulI vstupní modul
I pro zjednodušení jen 3 - update světa a prezentace, vstupI Každý z modulů je časově omezen
I co si s tím počít?I Všechny moduly běží současně
I jak to ale zařídit?
7 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus první – jednoduchá smyčka
I Jednoduchá smyčkaI update, pak prezentaceI oba moduly mají stejnou váhu
while(!end){Input()Update ()Presentation ()
}
I VýhodyI jednoduchost
I ProblémyI závislost na výkonu systému
I na rychlém stroji nehratelnéI na pomalém taky
Update
Vstupy
Prezentace
8 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus první – jednoduchá smyčka
I Jednoduchá smyčkaI update, pak prezentaceI oba moduly mají stejnou váhu
while(!end){Input()Update ()Presentation ()
}
I VýhodyI jednoduchost
I ProblémyI závislost na výkonu systému
I na rychlém stroji nehratelnéI na pomalém taky
Update
Vstupy
Prezentace
8 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus první – jednoduchá smyčka
I Jednoduchá smyčkaI update, pak prezentaceI oba moduly mají stejnou váhu
while(!end){Input()Update ()Presentation ()
}
I VýhodyI jednoduchost
I ProblémyI závislost na výkonu systému
I na rychlém stroji nehratelnéI na pomalém taky
Update
Vstupy
Prezentace
8 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus druhý – konstantní rychlost hry a závislé FPS
I Konstantní rychlost hryI update, pak prezentaceI pokud zbývá čas, čeká se
while(!end){Input()Update ()Presentation ()nextTime += 1000/ FPSsleepTime = nextTime - currTime;Sleep(sleepTime );
}
I VýhodyI jednoduchost
I ProblémyI na rychlém stroji čekáI na pomalém stroji nestíhá
Update
Vstupy
Prezentace
Sync
9 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus druhý – konstantní rychlost hry a závislé FPS
I Konstantní rychlost hryI update, pak prezentaceI pokud zbývá čas, čeká se
while(!end){Input()Update ()Presentation ()nextTime += 1000/ FPSsleepTime = nextTime - currTime;Sleep(sleepTime );
}
I VýhodyI jednoduchost
I ProblémyI na rychlém stroji čekáI na pomalém stroji nestíhá
Update
Vstupy
Prezentace
Sync
9 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus druhý – konstantní rychlost hry a závislé FPS
I Konstantní rychlost hryI update, pak prezentaceI pokud zbývá čas, čeká se
while(!end){Input()Update ()Presentation ()nextTime += 1000/ FPSsleepTime = nextTime - currTime;Sleep(sleepTime );
}
I VýhodyI jednoduchost
I ProblémyI na rychlém stroji čekáI na pomalém stroji nestíhá
Update
Vstupy
Prezentace
Sync
9 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus třetí – proměnné FPS a závislá rychlost hry
I Maximální rychlost diktovaná kreslenímI počítá se čas od posledního snímku
while(!end){prevTime=currTimecurrTime=GetTime ()Input()Update(currTime -prevTime)Presentation ()
}
I VýhodyI plynulejší v závislosti na rychlosti
I ProblémyI spousta
Update
Vstupy
Prezentace
10 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus třetí – proměnné FPS a závislá rychlost hry
I Maximální rychlost diktovaná kreslenímI počítá se čas od posledního snímku
while(!end){prevTime=currTimecurrTime=GetTime ()Input()Update(currTime -prevTime)Presentation ()
}
I VýhodyI plynulejší v závislosti na rychlosti
I ProblémyI spousta
Update
Vstupy
Prezentace
10 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus třetí – proměnné FPS a závislá rychlost hry
I Maximální rychlost diktovaná kreslenímI počítá se čas od posledního snímku
while(!end){prevTime=currTimecurrTime=GetTime ()Input()Update(currTime -prevTime)Presentation ()
}
I VýhodyI plynulejší v závislosti na rychlosti
I ProblémyI spousta
Update
Vstupy
Prezentace
10 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus čtvrtý - konstantní rychlost a maximální FPS
I Oddělení updatů a prezentaceI update držet konstantní, prezentace
kdykoliv je to možné
while(!end){loops = 0while(GetTime()>nextTime &&loops <MAX_SKIP) {Input()Update ()loops++nextTime += 1000/ TPS
}Presentation ()
}
I VýhodyI stabilní rychlost
I ProblémyI na rychlém stroji se zbytečně kreslí
stejné snímky
Update
Vstupy
Prezentace
11 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus čtvrtý - konstantní rychlost a maximální FPS
I Oddělení updatů a prezentaceI update držet konstantní, prezentace
kdykoliv je to možné
while(!end){loops = 0while(GetTime()>nextTime &&loops <MAX_SKIP) {Input()Update ()loops++nextTime += 1000/ TPS
}Presentation ()
}
I VýhodyI stabilní rychlost
I ProblémyI na rychlém stroji se zbytečně kreslí
stejné snímky
Update
Vstupy
Prezentace
11 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus čtvrtý - konstantní rychlost a maximální FPS
I Oddělení updatů a prezentaceI update držet konstantní, prezentace
kdykoliv je to možné
while(!end){loops = 0while(GetTime()>nextTime &&loops <MAX_SKIP) {Input()Update ()loops++nextTime += 1000/ TPS
}Presentation ()
}
I VýhodyI stabilní rychlost
I ProblémyI na rychlém stroji se zbytečně kreslí
stejné snímky
Update
Vstupy
Prezentace
11 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus pátý – konstantní rychlost a variabilní FPS
I Využití inter/extrapolace pro větší plynulost animacewhile(!end){loops = 0while(GetTime()>nextTime &&loops <MAX_SKIP) {Input()Update ()loops++nextTime += 1000/ TPS
}interpolation = (GetTime () + 1000/ TPS - nextTime )*TPS /1000Presentation(interpolation)
}
I VýhodyI plynulost pohybu podle rychlosti počítačeI konstantní rychlost hry
I NevýhodyI nutnost interpolátoru
12 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus pátý – konstantní rychlost a variabilní FPS
I Využití inter/extrapolace pro větší plynulost animacewhile(!end){loops = 0while(GetTime()>nextTime &&loops <MAX_SKIP) {Input()Update ()loops++nextTime += 1000/ TPS
}interpolation = (GetTime () + 1000/ TPS - nextTime )*TPS /1000Presentation(interpolation)
}
I VýhodyI plynulost pohybu podle rychlosti počítačeI konstantní rychlost hry
I NevýhodyI nutnost interpolátoru
12 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pokus pátý – konstantní rychlost a variabilní FPS
I Využití inter/extrapolace pro větší plynulost animacewhile(!end){loops = 0while(GetTime()>nextTime &&loops <MAX_SKIP) {Input()Update ()loops++nextTime += 1000/ TPS
}interpolation = (GetTime () + 1000/ TPS - nextTime )*TPS /1000Presentation(interpolation)
}
I VýhodyI plynulost pohybu podle rychlosti počítačeI konstantní rychlost hry
I NevýhodyI nutnost interpolátoru
12 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Paralelní smyčka
I Řešení podobné jako v předchozímpřípadě
I zvlášť updateI zvlášť prezentace
II NevýhodyI zajištění synchronizaceI problémy na 1 procesoru
I VýhodyI více času
Prezentace
Update
Vstupy
13 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Struktura enginu
Update
Prezentace
A.I.
Detekce kolizí
Fyzikální egine
Síť
Vstupní subsystémVstup
Audio engineHudba
Zvuky
Script engine
Scene manager
Animační engine
RendererSouborový
manager
Správce paměti
Čas
GUI
Stavovýmanager
14 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Herní logika
I Je zodpovědná za update světaI Musí se starat o
I statický světI hráčeI pasivní prvkyI aktivní prvky
15 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Statický svět
I Objekty, které jsou součástí světa, ale nemají definováno chováníI terén, zdi, . . .
I U rozsáhlých světů nelze rozumně udržovat všeI výběr aktivní části světa (graf scény, dělení prostoru)I dynamické nahrávání světa (správa paměti, souborový systém)
16 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Hráč
I Musí uchovávat a updatovat stav hráče
I Vstup od uživateleI klávesnice, myš, joystick, . . .I abstraktní kontroler
I hra se nestará o čtení z konkrétních zařízeníI lze libovolně namapovat
I Update stavuI spuštění animace pro pohybI úprava poziceI . . .
17 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Hráč
I Musí uchovávat a updatovat stav hráčeI Vstup od uživatele
I klávesnice, myš, joystick, . . .I abstraktní kontroler
I hra se nestará o čtení z konkrétních zařízeníI lze libovolně namapovat
I Update stavuI spuštění animace pro pohybI úprava poziceI . . .
17 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Hráč
I Musí uchovávat a updatovat stav hráčeI Vstup od uživatele
I klávesnice, myš, joystick, . . .I abstraktní kontroler
I hra se nestará o čtení z konkrétních zařízeníI lze libovolně namapovat
I Update stavuI spuštění animace pro pohybI úprava poziceI . . .
17 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Hráč
I Musí uchovávat a updatovat stav hráčeI Vstup od uživatele
I klávesnice, myš, joystick, . . .I abstraktní kontroler
I hra se nestará o čtení z konkrétních zařízeníI lze libovolně namapovat
I Otestování omezeníI geometrická omezení (detekce kolizí)I logická omezení (skriptování)
I Update stavuI spuštění animace pro pohybI úprava poziceI . . .
17 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pasivní prvky
I Objekty s nadefinovaným chováním, bez vlastní inteligenceI dveře, krabice, poletující ptáci. . .
I Nutné udržovat konzistentní stav
I seřazení podle relevantnosti (graf scény, dělení prostoru)I vyhodnocení modelu chování (dynamika, skriptování)I update stavu
18 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pasivní prvky
I Objekty s nadefinovaným chováním, bez vlastní inteligenceI dveře, krabice, poletující ptáci. . .
I Nutné udržovat konzistentní stavI seřazení podle relevantnosti (graf scény, dělení prostoru)
I vyhodnocení modelu chování (dynamika, skriptování)I update stavu
18 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pasivní prvky
I Objekty s nadefinovaným chováním, bez vlastní inteligenceI dveře, krabice, poletující ptáci. . .
I Nutné udržovat konzistentní stavI seřazení podle relevantnosti (graf scény, dělení prostoru)I vyhodnocení modelu chování (dynamika, skriptování)
I update stavu
18 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Pasivní prvky
I Objekty s nadefinovaným chováním, bez vlastní inteligenceI dveře, krabice, poletující ptáci. . .
I Nutné udržovat konzistentní stavI seřazení podle relevantnosti (graf scény, dělení prostoru)I vyhodnocení modelu chování (dynamika, skriptování)I update stavu
18 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aktivní prvky
I Objekty s vlastní inteligencíI nepřátelé (nebo spoluhráči)
I Nutné udržovat konzistentní stav
I seřazení podle relevantnosti (graf scény, dělení prostoru)I otestování stavu a vytyčení cílů (skriptování)I otestování omezení (detekce kolizí)I rozhodnutí (umělá inteligence)I update stavu
19 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aktivní prvky
I Objekty s vlastní inteligencíI nepřátelé (nebo spoluhráči)
I Nutné udržovat konzistentní stavI seřazení podle relevantnosti (graf scény, dělení prostoru)
I otestování stavu a vytyčení cílů (skriptování)I otestování omezení (detekce kolizí)I rozhodnutí (umělá inteligence)I update stavu
19 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aktivní prvky
I Objekty s vlastní inteligencíI nepřátelé (nebo spoluhráči)
I Nutné udržovat konzistentní stavI seřazení podle relevantnosti (graf scény, dělení prostoru)I otestování stavu a vytyčení cílů (skriptování)
I otestování omezení (detekce kolizí)I rozhodnutí (umělá inteligence)I update stavu
19 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aktivní prvky
I Objekty s vlastní inteligencíI nepřátelé (nebo spoluhráči)
I Nutné udržovat konzistentní stavI seřazení podle relevantnosti (graf scény, dělení prostoru)I otestování stavu a vytyčení cílů (skriptování)I otestování omezení (detekce kolizí)
I rozhodnutí (umělá inteligence)I update stavu
19 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aktivní prvky
I Objekty s vlastní inteligencíI nepřátelé (nebo spoluhráči)
I Nutné udržovat konzistentní stavI seřazení podle relevantnosti (graf scény, dělení prostoru)I otestování stavu a vytyčení cílů (skriptování)I otestování omezení (detekce kolizí)I rozhodnutí (umělá inteligence)
I update stavu
19 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aktivní prvky
I Objekty s vlastní inteligencíI nepřátelé (nebo spoluhráči)
I Nutné udržovat konzistentní stavI seřazení podle relevantnosti (graf scény, dělení prostoru)I otestování stavu a vytyčení cílů (skriptování)I otestování omezení (detekce kolizí)I rozhodnutí (umělá inteligence)I update stavu
19 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Struktura herní logiky
// static worldPreselectActiveZone ()
// player updateReadControls ()ComputeRestrictions ()UpdatePlayerState ()
// passive objectsSortAccordingRelevance ()ExecuteConstrolMechanism ()UpdatePassiveObjectsState ()
// active objectsSortAccordingRelevance ()SenseInternalStateAndGoals ()ComputeRestrictions ()MakeDecision ()UpdateActiveObjectsState ()
20 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Prezentace scény
I Tvoří podstatnou část hryI stará se o to, aby byl hráč vtažen do hry
I Musí zajistit prezentaciI statického světa a jednoduchých pasivních objektůI složitých pasivních objektů a aktivních objektůI hráče
I Prezentace může probíhat pomocí více kanálůI vizuálníI audioI taktilníI . . .
21 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Statický svět
I Stará se o vykreslení statického světa a objektů s jednoduchouanimací
I výběr relevantní části světaI ořezáváníI odstranění odvrácených částíI zakrytí
I výběr vhodného rozlišení (LOD)I příprava geometrieI vykreslení
22 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Statický svět
I Stará se o vykreslení statického světa a objektů s jednoduchouanimací
I výběr relevantní části světaI ořezáváníI odstranění odvrácených částíI zakrytí
I výběr vhodného rozlišení (LOD)I příprava geometrieI vykreslení
22 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Statický svět
I Stará se o vykreslení statického světa a objektů s jednoduchouanimací
I výběr relevantní části světaI ořezáváníI odstranění odvrácených částíI zakrytí
I výběr vhodného rozlišení (LOD)
I příprava geometrieI vykreslení
22 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Statický svět
I Stará se o vykreslení statického světa a objektů s jednoduchouanimací
I výběr relevantní části světaI ořezáváníI odstranění odvrácených částíI zakrytí
I výběr vhodného rozlišení (LOD)I příprava geometrie
I vykreslení
22 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Statický svět
I Stará se o vykreslení statického světa a objektů s jednoduchouanimací
I výběr relevantní části světaI ořezáváníI odstranění odvrácených částíI zakrytí
I výběr vhodného rozlišení (LOD)I příprava geometrieI vykreslení
22 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aktivní objekty
I Stará se o vykreslení objektů s komplexní animacíI objektyI postavy (NPC)
I Musí zajistit
I výběr relevantních objektůI výběr vhodného rozlišeníI animováníI příprava geometrieI vykreslení
23 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aktivní objekty
I Stará se o vykreslení objektů s komplexní animacíI objektyI postavy (NPC)
I Musí zajistitI výběr relevantních objektů
I výběr vhodného rozlišeníI animováníI příprava geometrieI vykreslení
23 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aktivní objekty
I Stará se o vykreslení objektů s komplexní animacíI objektyI postavy (NPC)
I Musí zajistitI výběr relevantních objektůI výběr vhodného rozlišeníI animování
I příprava geometrieI vykreslení
23 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aktivní objekty
I Stará se o vykreslení objektů s komplexní animacíI objektyI postavy (NPC)
I Musí zajistitI výběr relevantních objektůI výběr vhodného rozlišeníI animováníI příprava geometrie
I vykreslení
23 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Aktivní objekty
I Stará se o vykreslení objektů s komplexní animacíI objektyI postavy (NPC)
I Musí zajistitI výběr relevantních objektůI výběr vhodného rozlišeníI animováníI příprava geometrieI vykreslení
23 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Hráč
I Speciální případ NPCI většinou není nutné testovat zda je či není viditelný
I Malé zjednodušení
I (výběr vhodného rozlišení)I animováníI příprava geometrieI vykreslení
24 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Hráč
I Speciální případ NPCI většinou není nutné testovat zda je či není viditelný
I Malé zjednodušeníI (výběr vhodného rozlišení)I animování
I příprava geometrieI vykreslení
24 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Hráč
I Speciální případ NPCI většinou není nutné testovat zda je či není viditelný
I Malé zjednodušeníI (výběr vhodného rozlišení)I animováníI příprava geometrie
I vykreslení
24 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Hráč
I Speciální případ NPCI většinou není nutné testovat zda je či není viditelný
I Malé zjednodušeníI (výběr vhodného rozlišení)I animováníI příprava geometrieI vykreslení
24 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Struktura prezentace
// static worldSelectVisibleSubset ()SelectResolution ()PackGeometry ()RenderWorld ()
// active objectsSelectVisibleSubset ()Animate ()PackGeometry ()RenderNPC ()
// playerAnimate ()PackGeometry ()RenderPlayer ()
25 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Záludnosti síťové hry
I Předchozí model se musí upravitI pro jiného hráče jste NPC
I Při updatu hráče jeI odeslání změn na server
I Při updatu aktivních objektůI zavedení speciální třídy UII síťové zprávy mapuje na objekty
26 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Hotové enginy
I Vyrábění vlastního enginu od základu je příliš nákladnéI inspirace jinými enginyI úpravy existujících enginůI hotová řešení
I Výběr enginu záleží na mnoha aspektechI licence a cenaI typ hryI požadované modulyI stabilitaI hw nárokyI požadovaný jazykI podpora
27 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Vlastnosti – Grafika
I Modely osvětleníI TexturyI Speciální efektyI TerényI AnimaceI LODI Částicové systémy
28 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Vlastnosti – Zvuk
I 3d zvukI Text to speechI VoIPI Streamování
29 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Vlastnosti – AI
I AI behaviourI BotiI FormaceI Fuzzy logikaI Line of SightI Zpracování přirozeného jazykaI Hledání cestyI Stavový automatI Skriptování
30 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Vlastnosti – Fyzika
I Detekce kolizíI Režimy pohybuI Fyzikální vlastnostiI Simulace dopravních prostředkůI Simulace tekutinI Rag dolls
31 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Vlastnosti – Síťařina
I Počet hráčůI Úroveň implementaceI ProtokolI VýkonI ArchitekturaI Seznam serverů
32 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Vlastnosti – Platforma a HW požadavky
I PlatformaI CPUI Paměťová náročnostI ZvukI GrafikaI Síťové připojení
33 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Vlastnosti – Náročnost
I Počet polygonůI Počet objektůI Velikost texturI Počet spuštěných skriptůI Počet síťových klientů
34 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Vlastnosti – Dokumentace a podpora
I Úroveň dokončeníI Úroveň dokumentaceI Online helpI Ukázkové kódyI TutoriályI KnihyI FóraI Podpora
35 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Vlastnosti – Ladění
I DebuggerI ProfilerI Ladění za běhuI Simulátor síťového prostředí
36 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Vlastnosti – Ostatní
I Nahrávání a přehrávání hryI Instant replayI Nahrávání a ukládání stavu hryI Přehrávání videaI Cut scenesI . . .
37 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Přehled enginů
I http://www.devmaster.net/enginesI Volné enginy
I OGREI IrrlichtI Crystal SpaceI Quake 3I . . .
I Nízkonákladové enginyI Torque Game EngineI TV3DI . . .
I Profi enginyI Doom3I HavokI . . .
38 / 39
Úvod Co je „Engineÿ Herní smyčka Struktura enginu Hotové enginy Konec
Konec
39 / 39