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

Po čítačové hry a animace

  • Upload
    ira

  • View
    45

  • Download
    0

Embed Size (px)

DESCRIPTION

Po čítačové hry a animace. Cvi čení 3. Notová osnova. Content pipeline Úvod do logiky Trigger engine Skriptování Pathfinding a A*. Content Pipeline. Kompilace do assetu pomocí Content importerů Konverze do XNA nativních DOM pro content processor Content procesorů - PowerPoint PPT Presentation

Citation preview

Page 1: Po čítačové hry a animace

Počítačové hry a animaceCvičení 3

Page 2: Po čítačové hry a animace

Notová osnova

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

Page 3: Po čítačové hry a animace

(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

Page 4: Po čítačové hry a animace

(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 Max

Page 5: Po čítačové hry a animace

(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

Page 6: Po čítačové hry a animace

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

Page 7: Po čítačové hry a animace

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é

Page 8: Po čítačové hry a animace

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í

Page 9: Po čítačové hry a animace

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

Page 10: Po čítačové hry a animace

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čí

Page 11: Po čítačové hry a animace

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í

Page 12: Po čítačové hry a animace

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

Page 13: Po čítačové hry a animace

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

Page 14: Po čítačové hry a animace

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

Page 15: Po čítačové hry a animace

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

Page 16: Po čítačové hry a animace

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/● LuaInterface

Page 17: Po čítačové hry a animace

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 ...

Page 18: Po čítačové hry a animace

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í fcePokud všechny true, tak pustí vykonávací fci

Page 19: Po čítačové hry a animace

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

Page 20: Po čítačové hry a animace

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

Page 21: Po čítačové hry a animace

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

Page 22: Po čítačové hry a animace

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

Page 23: Po čítačové hry a animace

Aktualitka

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

Page 24: Po čítačové hry a animace

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ů

Page 25: Po čítačové hry a animace

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

Page 26: Po čítačové hry a animace

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ý

Page 27: Po čítačové hry a animace

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

Page 28: Po čítačové hry a animace

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í

Page 29: Po čítačové hry a animace

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

Page 30: Po čítačové hry a animace

Příklady úloh

● Lze kromě pozice uvážit i orientaci či rychlost● Cenou je čas● Heuristika: ???