Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Počítačové hry a animace Cvičení 3. Notová osnova ● Content pipeline ● Úvod do logiky ● Trigger engine ● Skriptování ● Pathfinding a A*

Podobné prezentace


Prezentace na téma: "Počítačové hry a animace Cvičení 3. Notová osnova ● Content pipeline ● Úvod do logiky ● Trigger engine ● Skriptování ● Pathfinding a A*"— Transkript prezentace:

1 Počítačové hry a animace Cvičení 3

2 Notová osnova ● Content pipeline ● Úvod do logiky ● Trigger engine ● Skriptování ● Pathfinding a A*

3 (3) Content Pipeline Kompilace do assetu pomocí –Content importerů Konverze do XNA nativních DOM pro content processor –Content procesorů Zkompiluje do managed code objectu k přímému použití v XNA

4 (4) Content Pipeline II Importéry pro 3D modely –Autodesk.FBX –DirectX.X Export FBX –Maya – Nutno zapnout v pluginech –Max – Přímo Export X –http://www.kwxport.org/ pro Maxhttp://www.kwxport.org/

5 (5) Custom Content Importer Můžeme si napsat vlastní –Namespace Microsoft.Xna.Framework.Content.Pipeline Content Pipeline Extension Library Přetížit fci Import MeshBuilder –Pomocná třída pro načtení a uložení jednoho meshe Custom Model Importer sample na create.msdn.com http://create.msdn.com/en- US/education/catalog/sample/custom_model_importer http://create.msdn.com/en- US/education/catalog/sample/custom_model_importer

6 Co je herní logika ● Kolektivní název pro spoustu věcí ● Obecně, systém který rozhoduje co herní objekty dělají ● Mnoho možných způsobů implementace

7 Logické vazby ● Když se něco stane, hra nějak zareaguje ● Když hráč stiskne páku X, otevřou se dveře Y ● Když nepřítel A uvidí hráče, začne dělat B ● Když uplyne nějaká doba, stane se X ● Vazby chceme: ● Konfigurovatelné ● Rozumně flexibilní ● Co možná výpočetně nenáročné

8 Trigger engine ● Explicitní implementace systému logických vazeb ● Je definována sada triggerů, které lze emitovat ● Objekty se registrují jako posluchačí triggerů ● Emitovaný trigger se předá posluchačům ke zpracování

9 Co může být trigger? ● Konkrétní input od hráče ● Interakce s herním objektem ● Změna ve vyznačené lokaci ● Akce způsobující zvuk ● Uplynutí určité doby (časový trigger) ● Kolize mezi určitými objekty ● Jiná změna herního stavu

10 Anatomie trigger enginu ● Každý typ triggeru reprezentován třídou/strukturou ● Pro každý typ seznam zaregistrovaných posluchačů ● Posluchači se registrují a odregistrují ● Emitovaný trigger je distribuován mezi všechny posluchače ● Vložit trigger může kdokoliv zvenčí

11 Posluchači a synchronizace ● Dědí interface podle typu a exponují funkci na zpracování ● Každý drží dvě fronty na triggery ● Na začátku update cyklu switch ● Triggery se zpracovávají během update posluchače, ne hned při přijetí

12 Implementační detaily ● Posluchačem může být: ● Přímo herní objekt ● Skriptový objekt ● Je vhodné, aby trigger engine sám implementoval časové triggery

13 Skriptování ● Součástí popisu herní úrovně může být skript ● Lze v jakémkoliv skriptovacím jazyce který umíme interpretovat ● Skript se obecně spouští ve dvou fázích: ● 1. Inicializace – může umisťovat herní objekty, vypisovat brífing a především registrovat posluchače ● 2. Runtime – kusy skriptu zaregistrované jako posluchači v reakci na události

14 Skriptovací engine ● V zásadě pouze interpret daného jazyka ● Je třeba mu umožnit: ● Nahlížet na stav hry a měnit jej ● Zjišťovat a upravovat stavy herních objektů ● Registrovat posluchače a být posluchačem ● Ukončit hru ● Komunikovat s hráčem

15 Skriptovací engine – příklad ● http://jint.codeplex.com ● Pro C# ECMAScript interpret JINT ● Instance třídy JintEngine obsahuje kontext ● Metoda SetParameter definuje proměnnou ● SetFunction definuje delegáta jako ES funkci ● CallFunction explicitně volá ES funkce

16 Skriptovací engine – závěr ● Logiku lze řešit jak v herním kódu, tak ve skriptech ● Je třeba zvážit tradeoff ● Vyberte si svůj oblíbený skriptovací jazyk a interpret a vesele skriptujte! ● http://boo.codehaus.org/ http://boo.codehaus.org/ ● LuaInterface

17 Triggery/Skripty - implementace Triggery Delegát public delegate void MyEventHandler(object sender, object args); Interface public interface ITriggered { void Fire(object sender, object args); } Skripty Reflection PropertyInfo pi = obj.GetType().GetField(„mVar“); pi.SetValue(obj,val,null); Stejné jako obj.mVar = val; Design patterns Když po nich toužíte, tak si přečtěte Gang of Four...

18 Code: Triggery Delegáti - delegate retval Name( params, … ); –public delegate void MyDelegate(); –MyDelegate del = new MyDelegate( MyFunction ); –del(); ArrayList – dynamické pole Add(); foreach(element E in ArrayList) { } Trigger má mít –Delegáty pro kontrolní fce –Delegáta pro vykonávací funkci –Funkci pro kontrolu v každém updatu Zkontroluje kontrolní fce Pokud všechny true, tak pustí vykonávací fci

19 Pathfinding ● „Herní AI je pathfinding“ ● V některých hrách nejviditelnější část AI ● Za splnění určitých předpokladů teoreticky vyřešený problém

20 Definice problému ● Vím, kde jsem ● Vím, kam se chci dostat ● Vím, kam bezprostředně můžu ● Vím, kolik co stojí ● Chci najít nejlevnější cestu z A do B

21 Definice problému ● Pozice a její změna mohou mít různé významy ● Lze zohlednit mnohem víc informací ● Možné aplikace později

22 Algoritmus A* ● Řeší problém pathfindingu ● Pomáhá si heuristikou ● Heuristika = odhad jak daleko je cíl z daného stavu ● Pokud existuje výsledek, vždy nalezne ten optimální pokud je heuristika přípustná – tj. Může odhad podhodnotit, ale nikdy ne nadhodnotit ● Přesnější odhad → kratší runtime

23 Aktualitka http://www.ai-class.com/ "Introduction to Artificial Intelligence" October 10th to December 18th 2011

24 A* Engine ● Herní komponenta (ke stažení), která polymorfně řeší pathfinding ● Děděním z AStarJob a AStarNode lze v jednom enginu najednou zpracovávat různé typy úloh ● Každé kolo provede nanejvýš zadaný počet výpočetních kroků

25 A* engine ● AStarJob: ● Musí umět vrátit prioritu (cykly se jobům rozdělují v poměru priorit) ● Musí umět vrátit startovní stav ● Voliteně inicializace, finalizace ● Má stav – uninitialized, working (počítá), finished (cesta nalezena), failed (cesta nenalezena) ● Na konci je v goal cílový uzel, přes předky dojdeme nejkratší cestou k počátku

26 A* engine ● AStarNode ● Reprezentuje stav ve stavovém prostoru ● Neměl by se duplikovat ● Musí umět: – Vrátit všechny dostupné sousedy – Spočítat si svou heuristiku – Vrátit vzdálenost k danému sousedovi – Ohlásit se, pokud je cílový

27 Příklady úloh ● Stavy jsou body v prostoru ● Přístupné jsou stavy do určité vzdálenosti ● Nejkratší cesta euklidovsky ● Heuristika: vzdálenost rovnou čarou k cíli ● Implementováno jako příklad

28 Příklady úloh ● Váhovaná pravidelná mřížka ● Cena průchodu závisí na typu pole a vlastnostech cestujícího ● Heuristika: přímá vzdálenost best-case rychlostí

29 Příklady úloh ● Navigace ve spojitém interiéru ● Navigation mesh ● Rozdělení prostoru, pohyb mezi startem a cílem nebo těsně kolem překážek ● Použito v UE3 ● Heuristika: vzdálenost přímou čarou

30 Příklady úloh ● Lze kromě pozice uvážit i orientaci či rychlost ● Cenou je čas ● Heuristika: ???


Stáhnout ppt "Počítačové hry a animace Cvičení 3. Notová osnova ● Content pipeline ● Úvod do logiky ● Trigger engine ● Skriptování ● Pathfinding a A*"

Podobné prezentace


Reklamy Google