SlideShare a Scribd company logo
1 of 59
Download to read offline
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
Outline
1    Introduzione al Game Engine
          Componenti principali
2 Scene Manager

          Scene Graph
          Geometric State
          Render State
3 Physic Engine

          Corpi Rigidi
          Corpi Molli
          Physic Engine Esterni
4 Parallelization Support

          Parallel Pattern
5 Artificial Intelligence

          Pseudosense
          Behaviour
          Path Finding
6 Lista di GameEngine
7 Reference
Daniele Bellavista (Università di Bologna) Game Engine Framework   10 dicembre 2011   2 / 39
Game Engine: Introduzione I


Astrazione dalla tecnologia
         Interagendo con le API della graphic pipeline, è possibile costruire
         qualunque applicazione grafica. Tuttavia le funzioni disponibili, le librerie
         e le classi dipendono dalle API utilizzate.
         Il Game Engine è un middlelayer che separa la “game logic” dalla
         tecnologia, l’implementazione e la piattaforma su cui si poggia la “graphic
         logic”.

Separazione delle competenze
         Per progetti molto grandi, il team di lavoro tende a diversificarsi (AI
         developer, 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



Obiettivi
         Un 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 la
         pre-generazione delle light map o per il render delle cinematics, e
         Shadow 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.jpg
Daniele 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 Engine
Scene Manager: gestione gerarchica dei modelli, memorizzando informazioni
           geometriche, di renderer e di animazione.
Physic Engine: gestione di collisioni e reazioni, gravità, dinamica corpi rigidi e
             molli, moto di fluidi, sistemi particellari.
Parallelization Support: gestione dell’esecuzione concorrente per sfruttare
                appieno le architetture multi-core.
Artificial Intelligence: supporto per avvicinare alla realtà le reazioni
                 comportamentali delle entità pensanti.
Game Middlelayer: astrazione rispetto allo Scene Manager, fornisce strutture
            dati 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 Manager
Il cuore del Game Engine. Memorizza tutte le informazioni necessarie per
rendere i modelli del gioco. È un componente con un basso livello di
astrazione, poiché contiene concetti geometrici e grafici; per questo motivo un
buon Game Engine dovrebbe fornire un ulteriore layer sopra lo Scene
Manager (tipicamente il Game Middlelayer).

Organizzazione ed Ottimizzazione
Motivazioni principali:
         Trasformazioni gerarchiche (il personaggio sale a cavallo, il cavallo si
         muove e il personaggio lo deve seguire).
         Ottimizzazione del clipping (il personaggio uccide un mostro e si volta: il
         cadavere 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 Node
       Elementi del gioco sono dei “nodi” di
       scena.
       Ad ogni nodo è associato un
       Geometric State e un Render State.
       Il Geometric State memorizza
       informazioni geometriche (tipologia
       geometrica, trasformazioni, bounding
       box, . . . ).
       Il Render State memorizza
       informazioni necessarie alla fase di
       rendering (alpha, materiali, texture,
       ...)


Daniele Bellavista (Università di Bologna)   Game Engine Framework   10 dicembre 2011   12 / 39
Scene Manager - Scene Graph II



Scene Graph
       Rappresentazione della scena come
       un albero.
       Gli stati del padre sono condivisi con i
       figli.
       Due o più nodi possono condividere
       lo 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 State
Ogni nodo dello Scene Graph ha un proprio Geometric State, contenente
informazioni 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 - Trasformazioni
         Trasformazioni gerarchiche: ogni nodo a parte il root subisce 3
         trasformazioni.
             1    Trasformazione del padre
             2    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 subisce
         3 trasformazioni: Wknight · Aknight −sword · Lsword ; dove Wknight è la matrice di
         trasformazione totale del cavaliere (posizionamento al centro del sistema
         di riferimento cavaliere), Aknight −sword è il posizionamento della spada in
         una certa posizione del cavaliere (ad esempio sulla schiena) e Lsword è la
         trasformazione locale della spada (ad esempio il rimbalzo causato dal
         movimento del cavallo).



Daniele Bellavista (Università di Bologna)   Game Engine Framework             10 dicembre 2011   15 / 39
Scene Manager - Geometric State III


Geometric State - Bounding Box
       Lo scopo dei bounding box è quello di migliorare
       le performance globali semplificando il view
       frustum culling e il collision detection.
       Si utilizzano dei bounding semplici e convessi
       come sfere, cilindri e poliedri.

Bounding Box - Collision Detection
       Determinazione rapida delle intersezioni, sia fra
       oggetti che con il mouse (3D picking).
       Intersezione con il mouse calcolata castando un
       ray che parte dalle coordinate in screen space del
       mouse 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-Culling
       Ottimizzazione del View Frustum Culling,
                                                                     2D Frustum View
       testando se il bounding box di un oggetto è
       all’interno del view frustum.
       Molto più conveniente rispetto al testing di tutti i
       triangoli.
       Si utilizza un algorimo veloce, non perfetto, in
       grado di eliminare velocemente gran parte degli
       oggetti che non sono all’interno del view frustum,
       risparmiando il calcolo alla GPU.                              1,2,3 Not Culled
       Se un bounding box è all’esterno di almeno un                  4 Culled
       piano del frustum, allora non lo si rende.



Daniele Bellavista (Università di Bologna)   Game Engine Framework      10 dicembre 2011   17 / 39
Scene Manager - Render State



Render State
         Contiene tutte le informazioni associate al modello geometrico
         necessarie per il rendering.
         Alcuni esempi di render state:
                Alpha:             abilitazione o disabilitazione canale alpha nelle texture
         Sencil 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 Engine
         Un 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 al
         secondo (circa 30 ms di computazione per frame).
         Il physic engine di un videogioco deve fornire strumenti veloci, ottimizzati
         e approssimati in modo non da sembrare realistica, ma da dare una
         percezione 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-Time
Collision detection: tramite bounding box sferici o convex-hull.
Sistemi Particellari: illustrati nel talk di Luca Mella.
Dinamica Corpi Rigidi: reimplementazione matriciale delle equazioni del moto
            newtoniane.
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 Rigidi
La fisica più semplice da implementare (disponibile in tutte le GPU moderne),
basata sulle equazioni del moto newtoniane.
                                  −1 
                                X˙     m P
                                 ˙ 
                               q  ω q /2
                                =          
                                 ˙
                               P  F 
                                L˙       τ

       m: mass                                                  τ : momento angolare della forza.
       q (t ): Quaternione rappresentante la                    ˙
                                                                L(t ): velocità di cambiamento del
       matrice di rotazione.                                    momento angolare.

       ω(t ): Quaternione rappresentante la                     P(t ): quantità di moto del corpo.
       velocità angolare.                                       ˙
                                                                X(t ): variazione dello spostamento
       F: forza applicata al corpo.                             del 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 Molli
         Si utilizza un modello chiamato Mass-Spring System.
         Oggetti rappresentati come array 1/2/3D, dove gli elementi sono masse
         particellari, 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 Esterni
         Una alternativa allo sviluppo di un proprio Physic Engine, è quello di
         utilizzare un Physic Engine esterno, da integrare con il proprio Game
         Engine.
         Un esempio è l’Havok Game Dynamics SDK, che ha fatto il suo debutto
         con Max Payne 2: The Fall of Max Payne.
         Esistono ovviamente Physic Engine open source, come Open Dynamic
         Engine e SOFA (Simulation Open Framework Architecture) che supporta
         anche le deformazioni di corpi molli.

Havok: una dimostrazione
Havok 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 Support
         La frequenza massima delle CPU si è da tempo fermato ad un limite
         fisico intorno ai 3.5 GHz.
         Si ha dunque un limite al numero di operazioni eseguibili
         sequenzialmente in un certo lasso di tempo.
         Il multi-core è diventato il nuovo standard architetturale per i processori
         dei PC e tutti i moderni videogiochi richiedono come requisito minimo
         almeno 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 5
Animation 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 almeno
ogni 33ms.


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




Verso un Parallel Game Engine Framework
         Parallelizzazione dei lavori, sfruttando tutti i core disponibili nel sistema.
         Chiamate bloccanti da eliminare.
         Gestione non banale della sincronizzazione: evitare le attese per
         l’accesso a risorse condivise (replicazione e aggiornamento dei dati).
         Creazione di un thread di sistema per ogni core, ma utilizzo di un proprio
         task 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 System
         Un sistema di AI è uno strumento praticamente essenziale per i
         videogiochi moderni, per garantire un comportamento quasi-reale agli
         NPC.
         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-sense
         I giocatori fanno uso dei propri sensi per reagire alle situazioni.
         Gli NPC, per fare lo stesso, richiederebbero una potenza computazionale
         troppo elevata.
         Si ricorre al “cheating”: l’NPC può chiedere al game engine la posizione
         del player che deve uccidere o dei compagni che deve aiutare.
         “Design cheating”: tag inseriti in fase di design per semplificare il
         riconoscimento di determinati pattern (es: coperture, pareti sfondabili,
         ecc. . . )
         Ovviamente queste tecnicha deve essere compensata da una
         attenuazione 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 system
         L’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 stati
         di uno State Space comune.
         Gli agenti devono risolvere certi goal pianificando le proprie action
         disponibili.




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 Finding
         Problema 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 Mesh
         Tecnica di tagging per path finding: in fase di modellazione, si aggiungono
         alle mappe delle mesh che delimitano le superfici attraversabili.
         Le singole mesh possono essere taggate per identificare il tipo di
         attraversabilità, 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 Commerciali
         idTech 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 e
         Gears of War.

Game Engine OpenSource
         idTech 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 Engine
        David H. Eberly, 3D Game Engine Design - A pratical approach to
        real-time computer graphics Second Edition, Morgan Kaufmann, 2007,
        Parallel Game Engine
        http://software.intel.com/en-us/articles/
        designing-the-framework-of-a-parallel-game-engine/
        idTech 5: Virtual Texturing, Parallelization
        J.M.P. van Waveren, Beyond Programmable Shading, Talk at SIGGRAPH
        2009.
        http://s09.idav.ucdavis.edu/talks/05-JP_id_Tech_
        5_Challenges.pdf
        Artificial Intelligence
        Bourg Seemann; AI for Game Developers, O’REILLY, 2004
        http://silverspaceship.com/src/svt/

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

        Navigation Mesh
        https://developer.valvesoftware.com/wiki/
        Navigation_Meshes
        http://udn.epicgames.com/Three/
        NavigationMeshReference.html
        AI in Left 4 Dead
        Booth Micheal, The AI Systems of Left 4 Dead, Artificial Intelligence and
        Interactive 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 tecnhique
        Thore Graepel, Ralf Herbrich, Adi Botea; Video Games and Artificial
        Intelligence; 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., Monolith
        Production, M.I.T. Media Lab, Cognitive Machines Group, GDC 2006.
        http://web.media.mit.edu/~jorkin/
        Planning System
        Ben Hardwidge, How AI in Games Works, 2009
        http://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

More Related Content

Viewers also liked

Buffer overflow explained
Buffer overflow explainedBuffer overflow explained
Buffer overflow explainedTeja Babu
 
Rethinking the debugger
Rethinking the debuggerRethinking the debugger
Rethinking the debuggerIulian Dragos
 
Programmazione Genetica per l'Inferenza di Reti di Kauffman
Programmazione Genetica per l'Inferenza di Reti di KauffmanProgrammazione Genetica per l'Inferenza di Reti di Kauffman
Programmazione Genetica per l'Inferenza di Reti di KauffmanDaniele Bellavista
 
Exception handling poirting in gcc
Exception handling poirting in gccException handling poirting in gcc
Exception handling poirting in gccShiva Chen
 
Ceh v5 module 20 buffer overflow
Ceh v5 module 20 buffer overflowCeh v5 module 20 buffer overflow
Ceh v5 module 20 buffer overflowVi Tính Hoàng Nam
 
ARM procedure calling conventions and recursion
ARM procedure calling conventions and recursionARM procedure calling conventions and recursion
ARM procedure calling conventions and recursionStephan Cadene
 
Android C Library: Bionic 成長計畫
Android C Library: Bionic 成長計畫Android C Library: Bionic 成長計畫
Android C Library: Bionic 成長計畫Kito Cheng
 
COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽Kito Cheng
 
System Hacking Tutorial #3 - Buffer Overflow - Egg Hunting
System Hacking Tutorial #3 - Buffer Overflow - Egg HuntingSystem Hacking Tutorial #3 - Buffer Overflow - Egg Hunting
System Hacking Tutorial #3 - Buffer Overflow - Egg Huntingsanghwan ahn
 
Multi-level Debugging for Interpreter Developers at LaMOD'16
Multi-level Debugging for Interpreter Developers at LaMOD'16Multi-level Debugging for Interpreter Developers at LaMOD'16
Multi-level Debugging for Interpreter Developers at LaMOD'16Bastian Kruck
 
Handling Exceptions In C & C++ [Part B] Ver 2
Handling Exceptions In C & C++ [Part B] Ver 2Handling Exceptions In C & C++ [Part B] Ver 2
Handling Exceptions In C & C++ [Part B] Ver 2ppd1961
 
icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介Kito Cheng
 
Ceh v8 labs module 05 system hacking
Ceh v8 labs module 05 system hackingCeh v8 labs module 05 system hacking
Ceh v8 labs module 05 system hackingAsep Sopyan
 
淺談編譯器最佳化技術
淺談編譯器最佳化技術淺談編譯器最佳化技術
淺談編譯器最佳化技術Kito Cheng
 

Viewers also liked (20)

Buffer overflow explained
Buffer overflow explainedBuffer overflow explained
Buffer overflow explained
 
Rethinking the debugger
Rethinking the debuggerRethinking the debugger
Rethinking the debugger
 
Programmazione Genetica per l'Inferenza di Reti di Kauffman
Programmazione Genetica per l'Inferenza di Reti di KauffmanProgrammazione Genetica per l'Inferenza di Reti di Kauffman
Programmazione Genetica per l'Inferenza di Reti di Kauffman
 
Exception handling poirting in gcc
Exception handling poirting in gccException handling poirting in gcc
Exception handling poirting in gcc
 
Program activation records
Program activation recordsProgram activation records
Program activation records
 
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
 
Buffer Overflow Demo by Saurabh Sharma
Buffer Overflow Demo by Saurabh SharmaBuffer Overflow Demo by Saurabh Sharma
Buffer Overflow Demo by Saurabh Sharma
 
FuelPHP
FuelPHPFuelPHP
FuelPHP
 
Ceh v5 module 20 buffer overflow
Ceh v5 module 20 buffer overflowCeh v5 module 20 buffer overflow
Ceh v5 module 20 buffer overflow
 
ARM procedure calling conventions and recursion
ARM procedure calling conventions and recursionARM procedure calling conventions and recursion
ARM procedure calling conventions and recursion
 
Android C Library: Bionic 成長計畫
Android C Library: Bionic 成長計畫Android C Library: Bionic 成長計畫
Android C Library: Bionic 成長計畫
 
COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽COSCUP 2014 : open source compiler 戰國時代的軍備競賽
COSCUP 2014 : open source compiler 戰國時代的軍備競賽
 
System Hacking Tutorial #3 - Buffer Overflow - Egg Hunting
System Hacking Tutorial #3 - Buffer Overflow - Egg HuntingSystem Hacking Tutorial #3 - Buffer Overflow - Egg Hunting
System Hacking Tutorial #3 - Buffer Overflow - Egg Hunting
 
Multi-level Debugging for Interpreter Developers at LaMOD'16
Multi-level Debugging for Interpreter Developers at LaMOD'16Multi-level Debugging for Interpreter Developers at LaMOD'16
Multi-level Debugging for Interpreter Developers at LaMOD'16
 
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
 
Handling Exceptions In C & C++ [Part B] Ver 2
Handling Exceptions In C & C++ [Part B] Ver 2Handling Exceptions In C & C++ [Part B] Ver 2
Handling Exceptions In C & C++ [Part B] Ver 2
 
icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介
 
Ceh v8 labs module 05 system hacking
Ceh v8 labs module 05 system hackingCeh v8 labs module 05 system hacking
Ceh v8 labs module 05 system hacking
 
淺談編譯器最佳化技術
淺談編譯器最佳化技術淺談編譯器最佳化技術
淺談編譯器最佳化技術
 
Security Onion
Security OnionSecurity Onion
Security Onion
 

Similar to Game Engine

Sviluppo di tool di gestione ed analisi di un simulatore Neuro-Fuzzy
Sviluppo di tool di gestione ed analisi di un simulatore Neuro-FuzzySviluppo di tool di gestione ed analisi di un simulatore Neuro-Fuzzy
Sviluppo di tool di gestione ed analisi di un simulatore Neuro-FuzzyStefano Ficcadenti
 
Present kinect4 windows
Present kinect4 windowsPresent kinect4 windows
Present kinect4 windowsI3P
 
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...Daniele Ferla
 
Unity: introduzione storica ed analisi di un microprogetto
Unity: introduzione storica ed analisi di un microprogettoUnity: introduzione storica ed analisi di un microprogetto
Unity: introduzione storica ed analisi di un microprogettoDevDay
 
Jug Roma - Wii Remote
Jug Roma - Wii RemoteJug Roma - Wii Remote
Jug Roma - Wii Remotedecabyte
 
Struttura lignea iper spacemax - v3 0
Struttura lignea   iper spacemax - v3 0Struttura lignea   iper spacemax - v3 0
Struttura lignea iper spacemax - v3 0Soft.lab Srl
 
Extended summary of 'Deep Learning for Video Game Playing'
Extended summary of 'Deep Learning for Video Game Playing'Extended summary of 'Deep Learning for Video Game Playing'
Extended summary of 'Deep Learning for Video Game Playing'kevinvargu
 
Corso Unified Modeling Language (UML)
Corso Unified Modeling Language (UML)Corso Unified Modeling Language (UML)
Corso Unified Modeling Language (UML)K-Tech Formazione
 
Algoritmo delle componenti connesse
Algoritmo delle componenti connesseAlgoritmo delle componenti connesse
Algoritmo delle componenti connesseRiccardoGalanti2
 
Guida shinelco 3500
Guida shinelco 3500Guida shinelco 3500
Guida shinelco 3500Marco NuvoLi
 
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperience
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperienceDesign of G.E.M.I.X.: Game Engine Movie Interaction eXperience
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperienceAntonio Notarangelo
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsMarcello Teodori
 
Applicazioni Open Source per il rilievo tridimensionale. Il caso studio dell...
Applicazioni Open Source per il rilievo tridimensionale.  Il caso studio dell...Applicazioni Open Source per il rilievo tridimensionale.  Il caso studio dell...
Applicazioni Open Source per il rilievo tridimensionale. Il caso studio dell...Giulio Bigliardi
 
MITM Attack with Patching Binaries on the Fly by Adding Shellcodes
MITM Attack with Patching Binaries on the Fly by Adding ShellcodesMITM Attack with Patching Binaries on the Fly by Adding Shellcodes
MITM Attack with Patching Binaries on the Fly by Adding ShellcodesGianluca Gabrielli
 

Similar to Game Engine (20)

Sviluppo di tool di gestione ed analisi di un simulatore Neuro-Fuzzy
Sviluppo di tool di gestione ed analisi di un simulatore Neuro-FuzzySviluppo di tool di gestione ed analisi di un simulatore Neuro-Fuzzy
Sviluppo di tool di gestione ed analisi di un simulatore Neuro-Fuzzy
 
Present kinect4 windows
Present kinect4 windowsPresent kinect4 windows
Present kinect4 windows
 
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...
Desdinova Engine: Motore grafico 3D per rendering di ambienti outdoor in temp...
 
Unity: introduzione storica ed analisi di un microprogetto
Unity: introduzione storica ed analisi di un microprogettoUnity: introduzione storica ed analisi di un microprogetto
Unity: introduzione storica ed analisi di un microprogetto
 
Jug Roma - Wii Remote
Jug Roma - Wii RemoteJug Roma - Wii Remote
Jug Roma - Wii Remote
 
Struttura lignea iper spacemax - v3 0
Struttura lignea   iper spacemax - v3 0Struttura lignea   iper spacemax - v3 0
Struttura lignea iper spacemax - v3 0
 
Nui for real
Nui for realNui for real
Nui for real
 
Extended summary of 'Deep Learning for Video Game Playing'
Extended summary of 'Deep Learning for Video Game Playing'Extended summary of 'Deep Learning for Video Game Playing'
Extended summary of 'Deep Learning for Video Game Playing'
 
Corso Unified Modeling Language (UML)
Corso Unified Modeling Language (UML)Corso Unified Modeling Language (UML)
Corso Unified Modeling Language (UML)
 
Algoritmo delle componenti connesse
Algoritmo delle componenti connesseAlgoritmo delle componenti connesse
Algoritmo delle componenti connesse
 
Tesi
TesiTesi
Tesi
 
3rd 3DDRESD: BSS
3rd 3DDRESD: BSS3rd 3DDRESD: BSS
3rd 3DDRESD: BSS
 
Guida shinelco 3500
Guida shinelco 3500Guida shinelco 3500
Guida shinelco 3500
 
CINEMA 4D presentazione
CINEMA 4D presentazioneCINEMA 4D presentazione
CINEMA 4D presentazione
 
Cell Programming 1
Cell Programming 1Cell Programming 1
Cell Programming 1
 
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperience
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperienceDesign of G.E.M.I.X.: Game Engine Movie Interaction eXperience
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperience
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa Struts
 
Kinect : Just for fun?
Kinect : Just for fun?Kinect : Just for fun?
Kinect : Just for fun?
 
Applicazioni Open Source per il rilievo tridimensionale. Il caso studio dell...
Applicazioni Open Source per il rilievo tridimensionale.  Il caso studio dell...Applicazioni Open Source per il rilievo tridimensionale.  Il caso studio dell...
Applicazioni Open Source per il rilievo tridimensionale. Il caso studio dell...
 
MITM Attack with Patching Binaries on the Fly by Adding Shellcodes
MITM Attack with Patching Binaries on the Fly by Adding ShellcodesMITM Attack with Patching Binaries on the Fly by Adding Shellcodes
MITM Attack with Patching Binaries on the Fly by Adding Shellcodes
 

Recently uploaded

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 

Recently uploaded (9)

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 

Game Engine

  • 1. 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
  • 2. Outline 1 Introduzione al Game Engine Componenti principali 2 Scene Manager Scene Graph Geometric State Render State 3 Physic Engine Corpi Rigidi Corpi Molli Physic Engine Esterni 4 Parallelization Support Parallel Pattern 5 Artificial Intelligence Pseudosense Behaviour Path Finding 6 Lista di GameEngine 7 Reference Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 2 / 39
  • 3. Game Engine: Introduzione I Astrazione dalla tecnologia Interagendo con le API della graphic pipeline, è possibile costruire qualunque applicazione grafica. Tuttavia le funzioni disponibili, le librerie e le classi dipendono dalle API utilizzate. Il Game Engine è un middlelayer che separa la “game logic” dalla tecnologia, l’implementazione e la piattaforma su cui si poggia la “graphic logic”. Separazione delle competenze Per progetti molto grandi, il team di lavoro tende a diversificarsi (AI developer, 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
  • 4. Game Engine: Introduzione II Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 4 / 39
  • 5. Game Engine: Introduzione III Obiettivi Un 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 la pre-generazione delle light map o per il render delle cinematics, e Shadow Map per le (poche) componenti dinamiche. Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 5 / 39
  • 6. IdTech4 (Doom 3): Gameplay con Volume Shadow Figura: http://upload.wikimedia.org/wikipedia/en/0/07/Doom3shadows.jpg Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 6 / 39
  • 7. 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
  • 8. IdTech5 (Rage): Cinematic con Radiosity Figura: Rage cinematic screenshot Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 8 / 39
  • 9. Game Engine: Componenti principali I Componenti principali di un Game Engine Scene Manager: gestione gerarchica dei modelli, memorizzando informazioni geometriche, di renderer e di animazione. Physic Engine: gestione di collisioni e reazioni, gravità, dinamica corpi rigidi e molli, moto di fluidi, sistemi particellari. Parallelization Support: gestione dell’esecuzione concorrente per sfruttare appieno le architetture multi-core. Artificial Intelligence: supporto per avvicinare alla realtà le reazioni comportamentali delle entità pensanti. Game Middlelayer: astrazione rispetto allo Scene Manager, fornisce strutture dati con semantica indipendente dalle problematiche di grafica. Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 9 / 39
  • 10. Game Engine: Componenti principali II Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 10 / 39
  • 11. Scene Manager Scene Manager Il cuore del Game Engine. Memorizza tutte le informazioni necessarie per rendere i modelli del gioco. È un componente con un basso livello di astrazione, poiché contiene concetti geometrici e grafici; per questo motivo un buon Game Engine dovrebbe fornire un ulteriore layer sopra lo Scene Manager (tipicamente il Game Middlelayer). Organizzazione ed Ottimizzazione Motivazioni principali: Trasformazioni gerarchiche (il personaggio sale a cavallo, il cavallo si muove e il personaggio lo deve seguire). Ottimizzazione del clipping (il personaggio uccide un mostro e si volta: il cadavere 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
  • 12. Scene Manager - Scene Graph I Scene Node Elementi del gioco sono dei “nodi” di scena. Ad ogni nodo è associato un Geometric State e un Render State. Il Geometric State memorizza informazioni geometriche (tipologia geometrica, trasformazioni, bounding box, . . . ). Il Render State memorizza informazioni necessarie alla fase di rendering (alpha, materiali, texture, ...) Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 12 / 39
  • 13. Scene Manager - Scene Graph II Scene Graph Rappresentazione della scena come un albero. Gli stati del padre sono condivisi con i figli. Due o più nodi possono condividere lo 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
  • 14. Scene Manager - Geometric State I Geometric State Ogni nodo dello Scene Graph ha un proprio Geometric State, contenente informazioni 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
  • 15. Scene Manager - Geometric State II Geometric State - Trasformazioni Trasformazioni gerarchiche: ogni nodo a parte il root subisce 3 trasformazioni. 1 Trasformazione del padre 2 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 subisce 3 trasformazioni: Wknight · Aknight −sword · Lsword ; dove Wknight è la matrice di trasformazione totale del cavaliere (posizionamento al centro del sistema di riferimento cavaliere), Aknight −sword è il posizionamento della spada in una certa posizione del cavaliere (ad esempio sulla schiena) e Lsword è la trasformazione locale della spada (ad esempio il rimbalzo causato dal movimento del cavallo). Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 15 / 39
  • 16. Scene Manager - Geometric State III Geometric State - Bounding Box Lo scopo dei bounding box è quello di migliorare le performance globali semplificando il view frustum culling e il collision detection. Si utilizzano dei bounding semplici e convessi come sfere, cilindri e poliedri. Bounding Box - Collision Detection Determinazione rapida delle intersezioni, sia fra oggetti che con il mouse (3D picking). Intersezione con il mouse calcolata castando un ray che parte dalle coordinate in screen space del mouse e attraversa il view frustum. Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 16 / 39
  • 17. Scene Manager - Geometric State IV Bounding Box - Pre-Culling Ottimizzazione del View Frustum Culling, 2D Frustum View testando se il bounding box di un oggetto è all’interno del view frustum. Molto più conveniente rispetto al testing di tutti i triangoli. Si utilizza un algorimo veloce, non perfetto, in grado di eliminare velocemente gran parte degli oggetti che non sono all’interno del view frustum, risparmiando il calcolo alla GPU. 1,2,3 Not Culled Se un bounding box è all’esterno di almeno un 4 Culled piano del frustum, allora non lo si rende. Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 17 / 39
  • 18. Scene Manager - Render State Render State Contiene tutte le informazioni associate al modello geometrico necessarie per il rendering. Alcuni esempi di render state: Alpha: abilitazione o disabilitazione canale alpha nelle texture Sencil 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
  • 19. Physic Engine I Physic Engine Un 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 al secondo (circa 30 ms di computazione per frame). Il physic engine di un videogioco deve fornire strumenti veloci, ottimizzati e approssimati in modo non da sembrare realistica, ma da dare una percezione di correttezza. Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 19 / 39
  • 20. Physic Engine II Features di un Physic Engine per sistemi Real-Time Collision detection: tramite bounding box sferici o convex-hull. Sistemi Particellari: illustrati nel talk di Luca Mella. Dinamica Corpi Rigidi: reimplementazione matriciale delle equazioni del moto newtoniane. Dinamica Corpi Molli: mass-spring model, nurbs surface e sistemi particellari. Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 20 / 39
  • 21. Physic Engine - Corpi Rigidi I Dinamica Corpi Rigidi La fisica più semplice da implementare (disponibile in tutte le GPU moderne), basata sulle equazioni del moto newtoniane.    −1  X˙ m P ˙  q  ω q /2  =  ˙ P  F  L˙ τ m: mass τ : momento angolare della forza. q (t ): Quaternione rappresentante la ˙ L(t ): velocità di cambiamento del matrice di rotazione. momento angolare. ω(t ): Quaternione rappresentante la P(t ): quantità di moto del corpo. velocità angolare. ˙ X(t ): variazione dello spostamento F: forza applicata al corpo. del corpo. Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 21 / 39
  • 22. 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
  • 23. Physic Engine - Corpi Molli Dinamica Corpi Molli Si utilizza un modello chiamato Mass-Spring System. Oggetti rappresentati come array 1/2/3D, dove gli elementi sono masse particellari, 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
  • 24. Physic Engine come componente esterno Physic Engine Esterni Una alternativa allo sviluppo di un proprio Physic Engine, è quello di utilizzare un Physic Engine esterno, da integrare con il proprio Game Engine. Un esempio è l’Havok Game Dynamics SDK, che ha fatto il suo debutto con Max Payne 2: The Fall of Max Payne. Esistono ovviamente Physic Engine open source, come Open Dynamic Engine e SOFA (Simulation Open Framework Architecture) che supporta anche le deformazioni di corpi molli. Havok: una dimostrazione Havok 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
  • 25. Parallelization Support I Parallelization Support La frequenza massima delle CPU si è da tempo fermato ad un limite fisico intorno ai 3.5 GHz. Si ha dunque un limite al numero di operazioni eseguibili sequenzialmente in un certo lasso di tempo. Il multi-core è diventato il nuovo standard architetturale per i processori dei PC e tutti i moderni videogiochi richiedono come requisito minimo almeno un dual-core. Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 25 / 39
  • 26. Parallelization Support II Case Study: tempo computazionale necessario a IdTech 5 Animation 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 almeno ogni 33ms. Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 26 / 39
  • 27. Parallelization Support III Verso un Parallel Game Engine Framework Parallelizzazione dei lavori, sfruttando tutti i core disponibili nel sistema. Chiamate bloccanti da eliminare. Gestione non banale della sincronizzazione: evitare le attese per l’accesso a risorse condivise (replicazione e aggiornamento dei dati). Creazione di un thread di sistema per ogni core, ma utilizzo di un proprio task manager (aumento della scalabilità). Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 27 / 39
  • 28. 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
  • 29. Artificial Intelligence Artificial Intelligence System Un sistema di AI è uno strumento praticamente essenziale per i videogiochi moderni, per garantire un comportamento quasi-reale agli NPC. 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
  • 30. Artificial Intelligence - Pseudosense Pseudo-sense I giocatori fanno uso dei propri sensi per reagire alle situazioni. Gli NPC, per fare lo stesso, richiederebbero una potenza computazionale troppo elevata. Si ricorre al “cheating”: l’NPC può chiedere al game engine la posizione del player che deve uccidere o dei compagni che deve aiutare. “Design cheating”: tag inseriti in fase di design per semplificare il riconoscimento di determinati pattern (es: coperture, pareti sfondabili, ecc. . . ) Ovviamente queste tecnicha deve essere compensata da una attenuazione delle reali potenzialità dell’NPC. Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 30 / 39
  • 31. Artificial Intelligence - Behaviour I Simulare un behaviour reale: planning system L’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 stati di uno State Space comune. Gli agenti devono risolvere certi goal pianificando le proprie action disponibili. Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 31 / 39
  • 32. Artificial Intelligence - Behaviour II Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 32 / 39
  • 33. Artificial Intelligence - Path Finding I Path Finding Problema 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 Mesh Tecnica di tagging per path finding: in fase di modellazione, si aggiungono alle mappe delle mesh che delimitano le superfici attraversabili. Le singole mesh possono essere taggate per identificare il tipo di attraversabilità, 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
  • 34. 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
  • 35. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 36. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 37. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 38. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 39. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 40. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 41. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 42. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 43. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 44. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 45. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 46. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 47. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 48. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 49. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 50. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 51. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 52. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 53. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 54. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 55. Artificial Intelligence - Path Finding, A* Example Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 35 / 39
  • 56. Lista di Game Enigne Game Engine Commerciali idTech 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 e Gears of War. Game Engine OpenSource idTech 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
  • 57. Reference I Game Engine Structure, Scene Manager, Physic Engine David H. Eberly, 3D Game Engine Design - A pratical approach to real-time computer graphics Second Edition, Morgan Kaufmann, 2007, Parallel Game Engine http://software.intel.com/en-us/articles/ designing-the-framework-of-a-parallel-game-engine/ idTech 5: Virtual Texturing, Parallelization J.M.P. van Waveren, Beyond Programmable Shading, Talk at SIGGRAPH 2009. http://s09.idav.ucdavis.edu/talks/05-JP_id_Tech_ 5_Challenges.pdf Artificial Intelligence Bourg Seemann; AI for Game Developers, O’REILLY, 2004 http://silverspaceship.com/src/svt/ Daniele Bellavista (Università di Bologna) Game Engine Framework 10 dicembre 2011 37 / 39
  • 58. Reference II Navigation Mesh https://developer.valvesoftware.com/wiki/ Navigation_Meshes http://udn.epicgames.com/Three/ NavigationMeshReference.html AI in Left 4 Dead Booth Micheal, The AI Systems of Left 4 Dead, Artificial Intelligence and Interactive 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 tecnhique Thore Graepel, Ralf Herbrich, Adi Botea; Video Games and Artificial Intelligence; 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
  • 59. 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., Monolith Production, M.I.T. Media Lab, Cognitive Machines Group, GDC 2006. http://web.media.mit.edu/~jorkin/ Planning System Ben Hardwidge, How AI in Games Works, 2009 http://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