Game Engine

59
Game Engine Framework Daniele Bellavista Università di Bologna, Seconda Facoltà di Ingegneria Informatica Magistrale 10 dicembre 2011 Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 1 / 39

description

An overview of Game Egines.

Transcript of Game Engine

Page 1: Game Engine

Game Engine Framework

Daniele Bellavista

Università di Bologna, Seconda Facoltà di Ingegneria Informatica Magistrale

10 dicembre 2011

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 1 / 39

Page 2: Game Engine

Outline1 Introduzione al Game Engine

Componenti principali2 Scene Manager

Scene GraphGeometric StateRender State

3 Physic EngineCorpi RigidiCorpi MolliPhysic Engine Esterni

4 Parallelization SupportParallel Pattern

5 Artificial IntelligencePseudosenseBehaviourPath Finding

6 Lista di GameEngine7 ReferenceDaniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 2 / 39

Page 3: Game Engine

Game Engine: Introduzione I

Astrazione dalla tecnologiaInteragendo con le API della graphic pipeline, è possibile costruirequalunque applicazione grafica. Tuttavia le funzioni disponibili, le libreriee le classi dipendono dalle API utilizzate.

Il Game Engine è un middlelayer che separa la “game logic” dallatecnologia, l’implementazione e la piattaforma su cui si poggia la “graphiclogic”.

Separazione delle competenzePer progetti molto grandi, il team di lavoro tende a diversificarsi (AIdeveloper, physic developer, grafici, compositori, sceneggiatori, . . . ).

Il Game Engine fornisce API in grando di suddividere la resposabilitàdelle entità del sistema.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 3 / 39

Page 4: Game Engine

Game Engine: Introduzione II

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 4 / 39

Page 5: Game Engine

Game Engine: Introduzione III

ObiettiviUn videogioco è un sistema real-time, da eseguire su normali pc.

Occorre trovare il giusto compromesso fra estetica e giocabilità.

Un Game Engine innovativo deve fornire supporti ed effetti di qualitàgarantendo una fluidità accettabile per lo stato attuale dell’hardware.

Ad esempio idTech 5 mette a disposizione una tecnica di Radiosity per lapre-generazione delle light map o per il render delle cinematics, eShadow Map per le (poche) componenti dinamiche.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 5 / 39

Page 6: Game Engine

IdTech4 (Doom 3): Gameplay con Volume Shadow

Figura:http://upload.wikimedia.org/wikipedia/en/0/07/Doom3shadows.jpgDaniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 6 / 39

Page 7: Game Engine

IdTech5 (Rage): Gameplay con Shadow Map e Light Map

Figura: http://www.capsulecomputers.com.au/wp-content/uploads/rage-screenshot-021.jpg

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 7 / 39

Page 8: Game Engine

IdTech5 (Rage): Cinematic con Radiosity

Figura: Rage cinematic screenshot

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 8 / 39

Page 9: Game Engine

Game Engine: Componenti principali I

Componenti principali di un Game EngineScene Manager: gestione gerarchica dei modelli, memorizzando informazioni

geometriche, di renderer e di animazione.

Physic Engine: gestione di collisioni e reazioni, gravità, dinamica corpi rigidi emolli, moto di fluidi, sistemi particellari.

Parallelization Support: gestione dell’esecuzione concorrente per sfruttareappieno le architetture multi-core.

Artificial Intelligence: supporto per avvicinare alla realtà le reazionicomportamentali delle entità pensanti.

Game Middlelayer: astrazione rispetto allo Scene Manager, fornisce strutturedati con semantica indipendente dalle problematiche di grafica.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 9 / 39

Page 10: Game Engine

Game Engine: Componenti principali II

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 10 / 39

Page 11: Game Engine

Scene Manager

Scene ManagerIl cuore del Game Engine. Memorizza tutte le informazioni necessarie perrendere i modelli del gioco. È un componente con un basso livello diastrazione, poiché contiene concetti geometrici e grafici; per questo motivo unbuon Game Engine dovrebbe fornire un ulteriore layer sopra lo SceneManager (tipicamente il Game Middlelayer).

Organizzazione ed OttimizzazioneMotivazioni principali:

Trasformazioni gerarchiche (il personaggio sale a cavallo, il cavallo simuove e il personaggio lo deve seguire).

Ottimizzazione del clipping (il personaggio uccide un mostro e si volta: ilcadavere rimane alle sue spalle, non visibile).

Model sharing (in una stanza stesso candelabro, diversa posizione).

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 11 / 39

Page 12: Game Engine

Scene Manager - Scene Graph I

Scene NodeElementi del gioco sono dei “nodi” discena.

Ad ogni nodo è associato unGeometric State e un Render State.

Il Geometric State memorizzainformazioni geometriche (tipologiageometrica, trasformazioni, boundingbox, . . . ).

Il Render State memorizzainformazioni necessarie alla fase direndering (alpha, materiali, texture,. . . )

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 12 / 39

Page 13: Game Engine

Scene Manager - Scene Graph II

Scene GraphRappresentazione della scena comeun albero.

Gli stati del padre sono condivisi con ifigli.

Due o più nodi possono condividerelo stesso modello.

La radice dell’albero è il nodo root,che non è reso su schermo.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 13 / 39

Page 14: Game Engine

Scene Manager - Geometric State I

Geometric StateOgni nodo dello Scene Graph ha un proprio Geometric State, contenenteinformazioni quali:

Struttura Geometrica (point, polyline, mesh, particelle).

Vertex e Index Buffer.

Trasformazioni.

Bounding Box.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 14 / 39

Page 15: Game Engine

Scene Manager - Geometric State II

Geometric State - TrasformazioniTrasformazioni gerarchiche: ogni nodo a parte il root subisce 3trasformazioni.

1 Trasformazione del padre2 Trasformazione dell’arco (in che posizione del padre si trova il figlio).3 Trasformazione locale

Ad esempio, nello scene manager precedente si ha che la spada subisce3 trasformazioni: Wknight ·Aknight−sword ·Lsword ; dove Wknight è la matrice ditrasformazione totale del cavaliere (posizionamento al centro del sistemadi riferimento cavaliere), Aknight−sword è il posizionamento della spada inuna certa posizione del cavaliere (ad esempio sulla schiena) e Lsword è latrasformazione locale della spada (ad esempio il rimbalzo causato dalmovimento del cavallo).

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 15 / 39

Page 16: Game Engine

Scene Manager - Geometric State III

Geometric State - Bounding BoxLo scopo dei bounding box è quello di migliorarele performance globali semplificando il viewfrustum culling e il collision detection.

Si utilizzano dei bounding semplici e convessicome sfere, cilindri e poliedri.

Bounding Box - Collision DetectionDeterminazione rapida delle intersezioni, sia fraoggetti che con il mouse (3D picking).

Intersezione con il mouse calcolata castando unray che parte dalle coordinate in screen space delmouse e attraversa il view frustum.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 16 / 39

Page 17: Game Engine

Scene Manager - Geometric State IV

Bounding Box - Pre-CullingOttimizzazione del View Frustum Culling,testando se il bounding box di un oggetto èall’interno del view frustum.

Molto più conveniente rispetto al testing di tutti itriangoli.

Si utilizza un algorimo veloce, non perfetto, ingrado di eliminare velocemente gran parte deglioggetti che non sono all’interno del view frustum,risparmiando il calcolo alla GPU.

Se un bounding box è all’esterno di almeno unpiano del frustum, allora non lo si rende.

2D Frustum View

1,2,3 Not Culled

4 Culled

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 17 / 39

Page 18: Game Engine

Scene Manager - Render State

Render StateContiene tutte le informazioni associate al modello geometriconecessarie per il rendering.

Alcuni esempi di render state:

Alpha: abilitazione o disabilitazione canale alpha nelle textureSencil Buffer: abilitazione ed uso per vari scopi dello Stencil Buffer

Wireframe: modalità Wireframe.Texture: parametri necessari per l’utilizzo di texture.

Materials: parametri del materiale dell’oggetto.Culling: metodologia di culling (es: NONE, BACK_FACE, ALL).

Light: tipologia e parametri di luce.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 18 / 39

Page 19: Game Engine

Physic Engine I

Physic EngineUn simulatore di fisica realistico deve simulare molti aspetti, dalla gravitàal moto dei fluidi, dal collision detection alla dinamica di corpi molli.

I videogiochi sono sistemi real-time, che richiedono al minimo 30 frame alsecondo (circa 30 ms di computazione per frame).

Il physic engine di un videogioco deve fornire strumenti veloci, ottimizzatie approssimati in modo non da sembrare realistica, ma da dare unapercezione di correttezza.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 19 / 39

Page 20: Game Engine

Physic Engine II

Features di un Physic Engine per sistemi Real-TimeCollision detection: tramite bounding box sferici o convex-hull.

Sistemi Particellari: illustrati nel talk di Luca Mella.

Dinamica Corpi Rigidi: reimplementazione matriciale delle equazioni del motonewtoniane.

Dinamica Corpi Molli: mass-spring model, nurbs surface e sistemi particellari.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 20 / 39

Page 21: Game Engine

Physic Engine - Corpi Rigidi I

Dinamica Corpi RigidiLa fisica più semplice da implementare (disponibile in tutte le GPU moderne),basata sulle equazioni del moto newtoniane.

XqPL

=

m−1Pωq/2

m: mass

q(t): Quaternione rappresentante lamatrice di rotazione.

ω(t): Quaternione rappresentante lavelocità angolare.

F: forza applicata al corpo.

τ : momento angolare della forza.

L(t): velocità di cambiamento delmomento angolare.

P(t): quantità di moto del corpo.

X(t): variazione dello spostamentodel corpo.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 21 / 39

Page 22: Game Engine

Physic Engine - Corpi Rigidi II

Figura: http://www.youtube.com/watch?v=zwqedhWO_5Q

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 22 / 39

Page 23: Game Engine

Physic Engine - Corpi Molli

Dinamica Corpi MolliSi utilizza un modello chiamato Mass-Spring System.

Oggetti rappresentati come array 1/2/3D, dove gli elementi sono masseparticellari, collegate fra loro da molle governate dalla legge di Hooke.

Figura: http://www.youtube.com/watch?v=qOvb3WLAX0E

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 23 / 39

Page 24: Game Engine

Physic Engine come componente esterno

Physic Engine EsterniUna alternativa allo sviluppo di un proprio Physic Engine, è quello diutilizzare un Physic Engine esterno, da integrare con il proprio GameEngine.

Un esempio è l’Havok Game Dynamics SDK, che ha fatto il suo debuttocon Max Payne 2: The Fall of Max Payne.

Esistono ovviamente Physic Engine open source, come Open DynamicEngine e SOFA (Simulation Open Framework Architecture) che supportaanche le deformazioni di corpi molli.

Havok: una dimostrazioneHavok Cloth: http://www.youtube.com/watch?v=daZoXzBGea0

Havok Destruction:http://www.youtube.com/watch?v=a06hAe747Do

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 24 / 39

Page 25: Game Engine

Parallelization Support I

Parallelization SupportLa frequenza massima delle CPU si è da tempo fermato ad un limitefisico intorno ai 3.5 GHz.

Si ha dunque un limite al numero di operazioni eseguibilisequenzialmente in un certo lasso di tempo.

Il multi-core è diventato il nuovo standard architetturale per i processoridei PC e tutti i moderni videogiochi richiedono come requisito minimoalmeno un dual-core.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 25 / 39

Page 26: Game Engine

Parallelization Support II

Case Study: tempo computazionale necessario a IdTech 5Animation blending: ≈ 2ms

Collision detection: ≈ 4ms

Obstacle avoidance: ≈ 4ms

Transparency sorting: ≈ 2ms

Virtual texturing: ≈ 8ms

Misc processing: ≈ 4ms

Rendering: ≈ 10ms

Audio: ≈ 4ms

Totale: 38ms.FPS minimo per la giocabilità: 30, allora bisogna produrre un frame almenoogni 33ms.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 26 / 39

Page 27: Game Engine

Parallelization Support III

Verso un Parallel Game Engine FrameworkParallelizzazione dei lavori, sfruttando tutti i core disponibili nel sistema.

Chiamate bloccanti da eliminare.

Gestione non banale della sincronizzazione: evitare le attese perl’accesso a risorse condivise (replicazione e aggiornamento dei dati).

Creazione di un thread di sistema per ogni core, ma utilizzo di un propriotask manager (aumento della scalabilità).

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 27 / 39

Page 28: Game Engine

Parallelization Support IV

Figura: Execution State http://software.intel.com/en-us/articles/designing-the-framework-of-a-parallel-game-engine/

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 28 / 39

Page 29: Game Engine

Artificial Intelligence

Artificial Intelligence SystemUn sistema di AI è uno strumento praticamente essenziale per ivideogiochi moderni, per garantire un comportamento quasi-reale agliNPC.

Richiesto in tutte le tipologie di videogame, ad esempio:

Board Game: la “classica” intelligenza artificiale.RTS, TBS, RPG: strategia di attacco/difesa anche variabile, risposta alle

mosse dell’avversario, meccanismi di aiuto verso gli alleati.First Person Shooter: strategie di guerriglia, utilizzo dell’ambiente, amici

e nemici “fair”.Alcune fra le più importanti features di un AI system sono:

Pseudo-sense.Realistic Behaviour.Path Finding.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 29 / 39

Page 30: Game Engine

Artificial Intelligence - Pseudosense

Pseudo-senseI giocatori fanno uso dei propri sensi per reagire alle situazioni.

Gli NPC, per fare lo stesso, richiederebbero una potenza computazionaletroppo elevata.

Si ricorre al “cheating”: l’NPC può chiedere al game engine la posizionedel player che deve uccidere o dei compagni che deve aiutare.

“Design cheating”: tag inseriti in fase di design per semplificare ilriconoscimento di determinati pattern (es: coperture, pareti sfondabili,ecc. . . )

Ovviamente queste tecnicha deve essere compensata da unaattenuazione delle reali potenzialità dell’NPC.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 30 / 39

Page 31: Game Engine

Artificial Intelligence - Behaviour I

Simulare un behaviour reale: planning systemL’uso massiccio di scripts porta ad un comportamento “robots-like”.

L’implementazione di una macchina a stati è proibitiva per le funzionalitàrichieste.

Sistemi multi-agenti: la percezione del mondo avviene leggendo gli statidi uno State Space comune.

Gli agenti devono risolvere certi goal pianificando le proprie actiondisponibili.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 31 / 39

Page 32: Game Engine

Artificial Intelligence - Behaviour II

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 32 / 39

Page 33: Game Engine

Artificial Intelligence - Path Finding I

Path FindingProblema di AI, spesso offerto anche dai Physic Engine.

Richiede molta potenza computazionale, spesso troppa per un real-time.

Semplificazione dell’algoritmo: da 3D a 2D.

Agevolazione effettuata inserendo dei tag in fase di modellazione.

Path Finding - Navigation MeshTecnica di tagging per path finding: in fase di modellazione, si aggiungonoalle mappe delle mesh che delimitano le superfici attraversabili.

Le singole mesh possono essere taggate per identificare il tipo diattraversabilità, ad esempio: oggetto scavalcabile, scalabile, . . .

Algoritmo A* per la determinazione del percorso (quasi)ottimo.

Possibile ottimizzazione per evitare movimenti “robot-like”.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 33 / 39

Page 34: Game Engine

Artificial Intelligence - Path Finding II

Figura: https://developer.valvesoftware.com/wiki/Navigation_Meshes

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 34 / 39

Page 35: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 36: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 37: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 38: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 39: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 40: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 41: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 42: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 43: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 44: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 45: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 46: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 47: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 48: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 49: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 50: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 51: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 52: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 53: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 54: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 55: Game Engine

Artificial Intelligence - Path Finding, A* Example

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39

Page 56: Game Engine

Lista di Game Enigne

Game Engine CommercialiidTech 5, motore della idSoftware. Utilizzato per il videogioco Rage.

CryENGINE 3, motore della CryTek: produttori di Crysis.

UnrealEngine 3, motore utilizzato in titoli come Mass Effect, BioShock eGears of War.

Game Engine OpenSourceidTech 4, motore della idSoftware.

Ogre 3D, graphic engine. Scritto in c++, per PC.

Irlicht, game engine. Scritto in c++, e disponibile anche per .NET.

jMonkey, java game engine.

UNiGiNE, game engine professionale a pagamento.

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 36 / 39

Page 57: Game Engine

Reference I

Game Engine Structure, Scene Manager, Physic EngineDavid H. Eberly, 3D Game Engine Design - A pratical approach toreal-time computer graphics Second Edition, Morgan Kaufmann, 2007,

Parallel Game Enginehttp://software.intel.com/en-us/articles/designing-the-framework-of-a-parallel-game-engine/

idTech 5: Virtual Texturing, ParallelizationJ.M.P. van Waveren, Beyond Programmable Shading, Talk at SIGGRAPH2009.http://s09.idav.ucdavis.edu/talks/05-JP_id_Tech_5_Challenges.pdf

Artificial IntelligenceBourg Seemann; AI for Game Developers, O’REILLY, 2004http://silverspaceship.com/src/svt/

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 37 / 39

Page 58: Game Engine

Reference II

Navigation Meshhttps://developer.valvesoftware.com/wiki/Navigation_Mesheshttp://udn.epicgames.com/Three/NavigationMeshReference.html

AI in Left 4 DeadBooth Micheal, The AI Systems of Left 4 Dead, Artificial Intelligence andInteractive Digital Entertainment Conference at Stanford, Valve 2009.http://www.valvesoftware.com/publications/2009/ai_systems_of_l4d_mike_booth.pdf

Multi-Agent Systems in Videogames and leearing tecnhiqueThore Graepel, Ralf Herbrich, Adi Botea; Video Games and ArtificialIntelligence; Microsoft Applied Game (APG) group.http://research.microsoft.com/en-us/projects/ijcaiigames/

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 38 / 39

Page 59: Game Engine

Reference III

Planning and A.I. in F.E.A.R.Jeff Orkin, Three States and a Plan: The A.I. of F.E.A.R., MonolithProduction, M.I.T. Media Lab, Cognitive Machines Group, GDC 2006.http://web.media.mit.edu/~jorkin/

Planning SystemBen Hardwidge, How AI in Games Works, 2009http://www.bit-tech.net/gaming/2009/03/05/how-ai-in-games-works/3

Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 39 / 39