Game Engine
-
Upload
daniele-bellavista -
Category
Technology
-
view
439 -
download
1
description
Transcript of 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
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
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
Game Engine: Introduzione II
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 4 / 39
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
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
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
IdTech5 (Rage): Cinematic con Radiosity
Figura: Rage cinematic screenshot
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 8 / 39
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
Game Engine: Componenti principali II
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 10 / 39
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
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
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
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
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
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
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
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
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
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
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
Fτ
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
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
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
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
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
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
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
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
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
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
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
Artificial Intelligence - Behaviour II
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 32 / 39
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
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
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
Artificial Intelligence - Path Finding, A* Example
Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
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
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
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
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