1 / 30

Po čítačové hry a animace

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ů

ira
Download Presentation

Po čítačové hry a animace

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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 Importersample na create.msdn.comhttp://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/ • 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: ???

More Related