Pocítacové hry - Herní engine

Post on 19-May-2022

4 views 0 download

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