You are on page 1of 78

Moteurs de simulation

Bart GEORGE
EISTI
ING3 Option I3

Organisation du cours

Gnralits et discussion (1 crneau)

Blender (1 crneau... ou 2 ?)

1re partie : initiation, modlisation

2me partie : animation

Unity (4 crneaux)

1re partie : interface, notions de base

2me partie : notions avances, dbut du projet

Evaluation

Projet : mini-jeu en 3D (sujet libre, groupes de 2-5)

Note du projet = note du module

Sources principales

Jason Gregory : "Game Engine Architecture"


(2009, 2me ed. 2014). Site associ :
http://www.gameenginebook.com/index.html
Blender

Manuels

Tutoriaux en ligne et en PDF

Unity3D

Tutoriaux vido

... et plein d'autres rfrences

cf. David Eberly : "3D Game Engine Design" (2006)

Gnralits sur les moteurs

Qu'est-ce qu'un moteur (de jeu, graphique...) ?

Quel moteur pour quel type de jeu ?

Panorama des moteurs existants

Discussion critique sur l'utilisation des moteurs

Architecture gnrale d'un moteur de jeu

Que fait un moteur ?

De quoi a-t-il besoin ?

Gnralits sur les moteurs

Qu'est-ce qu'un moteur (de jeu, graphique...) ?

Quel moteur pour quel type de jeu ?

Panorama des moteurs existants

Discussion critique sur l'utilisation des moteurs

Architecture gnrale d'un moteur de jeu

Que fait un moteur ?

De quoi a-t-il besoin ?

Qu'est-ce qu'un moteur de jeu ?

Julian Gold, dveloppeur

"Un moteur de jeu est un ensemble de modules et


d'interfaces qui permettent une quipe de
dveloppement de se concentrer sur le gameplay
plutt que sur le contenu technique."

Chris Pollett, professeur d'informatique

"Un moteur de jeu fournit les principales


fonctionnalits d'un jeu :

Il gre les objets, niveaux de jeu et autres ressources


Il affiche la portion visible du monde l'utilisateur
Il gre la mise jour de la position des objets
Il gre galement le comportement des PNJ"

Qu'est-ce qu'un moteur graphique ?

Site GameDevelopers (
http://gamedeve.tuxfamily.org/ )

"un moteur 3D est un morceau de code source


(bibliothque) qui va grer tout l'aspect graphique
de votre application. C'est lui gre les lumires, les
modles 3D, les animations, les effets de particules
comme le feu, la pluie... etc.
La majorit des moteurs graphiques gre aussi le
fentrage et la gestion des vnements."

Le moteur graphique est souvent la pice


principale du moteur de jeu (surtout pour les
jeux 3D). D'o une certaine confusion.

Ce qu'un moteur de jeu n'est pas ?

Moteur jeu

"Beaucoup de gens confondent le moteur et le jeu


entier. Ce serait comme confondre le moteur d'une
automobile avec la voiture elle-mme." (Jake
Simpson, dveloppeur).

Oui, mais...

"La frontire entre un jeu et son moteur est souvent


floue. Certains moteurs font une distinction plutt
claire, tandis que d'autres n'essaient pas de
sparer les deux." (Jason Gregory, dveloppeur)
Anecdote : quand on veut tlcharger le moteur de
Quake (1, 2 ou 3), on tlcharge le jeu lui-mme.

Ce qu'un moteur de jeu n'est pas ?

Rutilisabilit d'un moteur par rapport son jeu

... sachant qu'un moteur rpond des besoins


spcifiques, lis un genre

Ce qu'un moteur graphique n'est


pas ?

Moteur graphique bibliothque graphique

Une bibliothque graphique affiche ce qu'on lui


demande d'afficher
Justement, un moteur graphique dit quoi afficher
(entre autres)
En somme, un moteur graphique est une couche
supplmentaire, qui facilite l'accs aux
bibliothques qu'il utilise
Attention : tous les moteurs ne fonctionnent pas
avec toutes les bibliothques (exemple, TrueVision
3D fonctionne exclusivement avec DirectX)

Gnralits sur les moteurs

Qu'est-ce qu'un moteur (de jeu, graphique...) ?

Quel moteur pour quel type de jeu ?

Panorama des moteurs existants

Discussion critique sur l'utilisation des moteurs

Architecture gnrale d'un moteur de jeu

Que fait un moteur ?

De quoi a-t-il besoin ?

Quel moteur pour quel type de jeu ?

Caractristiques du jeu

Reprsentation de la scne (graphismes, anims...)

Gameplay

Effets particuliers (cinmatique, ralenti, etc...)

Consquence sur le moteur associ

Que faut-il afficher, et comment ?

Que faut-il animer, et comment ?

Avec quel niveau de dtail ?

Avec quelle physique ?

Quel moteur pour quel type de jeu ?

Starcraft 2

Btiments

Centaines d'units

Serveurs

Commandes clavier

Total War Attila

La carte est peu modifie

Milliers d'units

Batailles trs dtailles

Vue 3D complte

Quel moteur pour quel type de jeu ?

Street Fighter IV

Beaucoup d'animations

Collisions prcises

Combinaison de
touches

Fight Night Champion

Dplacement 3D

Dcors peu dtaills

Personnages ultra-dtaills

Effets (sueur, sang...)

Quel moteur pour quel type de jeu ?

Skyrim (RPG)

Monde trs vaste

Solo uniquement

Effets graphiques
ultra-dtaills

Encore plus vaste

Multijoueur uniquement

TESO (MMO)

Batterie de serveurs

Graphismes moins dtaills

Quel moteur pour quel type de jeu ?

Battlefield 4

3D haut niveau

Effets spciaux

Vhicules

Dcors

Dragon Age Inquisition

Monde ouvert, trs vaste

Plusieurs personnages

Scnario, dialogues
Vue tactique, cheval

Quel moteur pour quel type de jeu ?

Battlefield Hardline

Blinds et avions
ont disparu

Voitures et motos

Mode poursuite

Need for Speed Rivals

Conduite pure

Influence de la mto
(pluie, neige, grle...)

Environnements dtaills

Gnralits sur les moteurs

Qu'est-ce qu'un moteur (de jeu, graphique...) ?

Quel moteur pour quel type de jeu ?

Panorama des moteurs existants

Discussion critique sur l'utilisation des moteurs

Architecture gnrale d'un moteur de jeu

Que fait un moteur ?

De quoi a-t-il besoin ?

Panorama des moteurs existants

Recherche des moteurs ("engines") sur


DevMaster.net : 375 entres

... contre 368 l'an dernier et 357 il y a 2 ans

Toutes plateformes, tous genres, toutes


licences : libres, commerciaux...
On ne va survoler qu'une poigne d'entre eux

Panorama des moteurs existants

Les prmisses

3D "fil de fer" puis "formes pleines"

Une poigne de jeux innovants

La rvolution Doom (et Ultima Underworld)

Le duel des moteurs : Quake vs. Unreal

Et aujourd'hui ?

Les trs grosses compagnies ont leur moteur

Frostbite pour EA, Anvil pour Ubisoft...

Les PM(G)E vont utiliser un moteur externe

Unity vs. Unreal

Les prmisses

Au commencement...

3D "fil de fer", puis


"formes pleines"
Principaux "clients"

Simulations (vol, auto)


Jeux d'aventure

Freescape

L'un des premiers


"vrais moteurs"

Total Eclipse

3D Construction Kit

Les prmisses

Alone in the Dark

Srie d'outils maison

Cration d'objets 3D

Plaquage de textures

Animations

Camras

Rutilis pour les


pisodes 2 et 3

La rvolution Doom

Ultima Underworld

Premier usage du
texture-mapping
Sprites 2D, avec
quelques objets 3D

Descendants

Arena et Daggerfall
(XnGine)
Might & Magic 6 8
(Horizon, Labyrinth)

La rvolution Doom

Wolfenstein3D et
Doom

Build Engine

Le premier moteur ?
Duke Nukem 3D
Witchaven, Blood,
Shadow Warrior...

Et de nombreux
autres clones

La rvolution Doom

Ecstatica 1 et 2

Modlisation des
personnages par
ellipsodes

Indit pour l'poque...

... et mme aprs

Cette voie n'a pas t


suivie

Le duel : Quake vs. Unreal

IdTech

Quake 1, 2 et 3

Premire "grande
famille" de moteurs
(n'a pas survcu)

Half-Life

Vampire Redemption

Kingpin

Sin

Medal of Honor 3

Le duel : Quake vs. Unreal vs. Unity

Unreal Engine 1 4

Unreal 1 et 2

Unreal Tournament

Deuxime "grande
famille" (toujours
d'actualit)

Gears of War

Borderlands

Mass Effect 1 3

Dishonored

Le duel : Unreal vs. Unity

Unity3D

Moteur " tout faire"

Auto-configurable

Dsormais
incontournable

A servi pour crer des


centaines de jeux
(notamment inds)
... ainsi que 174 000
jeux sur mobile

Les (trs) grosses compagnies

Anvil (Ubisoft)

Assassin's Creed
(premire version,
baptise Scimitar)
Assassin's Creed 2,
etc (Anvil)
Assassin's Creed 3 et
4 (AnvilNext)

Autres jeux

Prince of Persia

Rainbow Six Patriots

Les (trs) grosses compagnies

RAGE (Rockstar)

GTA 4 et 5
Red Dead
Redemption
Max Payne 3

Frostbite (EA)

Battlefield 3 et 4

Dragon Age 3

Mass Effect 4

Need for Speed

Moteurs commerciaux / internes

LithTech

No One Lives Forever

F.E.A.R. 1 et 2

CryEngine

Crysis

Homefront

Source Engine

Half-Life 2

Portal 1 et 2

Team Fortress 2

Moteurs 3D "gnriques"

Torque

Tribes 2

The Game Creators

Darkbasic, DarkGDK

FPS Creator

C4 (commercial, C++)

Panda3D (Python)

JME (Java)

Shiva 3D

Moteurs graphiques open-source

IrrLicht

C++

Idal pour dbuter

Ogre3D

C++, Python

Modulaire

Torchlight 1 et 2

OpenSceneGraph

C++

Mondes virtuels

Anecdote

NeL (Nevrax Library)

Open Source
Dvelopp en interne
pour un MMORPG :
Ryzom
A servi pour d'autres
jeux : LudicArt

Souvenirs, souvenirs

Bilan de ce panorama

Les trs grosses botes (EA, Ubisoft...)

Ont leur propre moteur

Ont les moyens pour l'actualiser et le faire voluer

Pour les grosses ou moyennes botes

Frostbite pour EA
Anvil pour Ubisoft
Rage pour Rockstar

Il y a l'Unreal Engine (ou Unity)

Pour les autres (Indpendants, particuliers...)

Il y a Unity

Gnralits sur les moteurs

Qu'est-ce qu'un moteur (de jeu, graphique...) ?

Quel moteur pour quel type de jeu ?

Panorama des moteurs existants

Discussion critique sur l'utilisation des moteurs

Architecture gnrale d'un moteur de jeu

Que fait un moteur ?

De quoi a-t-il besoin ?

Discussion critique

Moteur graphique ou " tout faire" ?

Avantages et inconvnients des moteurs de jeu

Souvenirs d'un dbat : 2000

Actualit du problme : "L'Indiepocalypse"

Moteur graphique ou " tout faire" ?

L'avis de Sinbad, concepteur d'Ogre 3D

"OGRE est un composant dans un systme plus


vaste de dveloppement. OGRE n'est pas, et n'a
jamais t destin tre une plate-forme unique de
dveloppement de jeux."
"Je pense que chaque quipe devrait se concentrer
sur son domaine de base et laisser les autres
s'intgrer en spcialisant les leurs."
"Je pense que les dveloppeurs devraient tre
libres de combiner les outils de leur choix [...], et
non pas qu'on leur dise quelles librairies Audio ,
Physique, IA etc doivent tre utilises simplement
parce qu'ils ont choisi tel moteur graphique."

Moteur graphique ou " tout faire" ?

L'avis de Sinbad, concepteur d'Ogre 3D (suite)

"Ma philosophie est de construire un composant


graphique flexible qui peut tre utilis dans un
nombre maximum de situations, et pour le rendre
plus facile intgrer avec d'autres composants - de
ne pas construire un moteur qui soit utilis que pour
produire un nombre limit de variantes de jeux. "
"Vous trouverez beaucoup plus difficile d'tendre un
moteur qui est conu pour grer seulement un petit
sous-ensemble de types de scnes , aux
caractristiques profondment intgres car
conues partir d'un certain point de vue."

Moteurs de jeu : le pour et le contre

Vous devez dvelopper un jeu partir de rien

Vous avec le choix entre

Tout coder de zro

Utiliser un moteur existant

Au moins, ce sera votre code


Mais vous allez rinventer la roue
Vous vous pargnez le recodage de fonctions complexes
Mais vous devrez inclure le code d'un autre ...
... suivant le bon vouloir d'un autre (mises jour ?
portage ? abandon ?)... ou de plusieurs autres

A quoi prfrez-vous perdre votre temps ?

Souvenirs d'un dbat : 2000

Joystick n114 (avril)


Contexte : Quake 3
vs Unreal Tournament
Question : les clones
vont-ils tuer la
crativit ?
Arguments pour et
contre

Souvenirs d'un dbat : 2000

Pour : Erin Daly de


Relic (Homeworld)

Il faut que le moteur


choisi soit en
adquation avec le
gameplay dsir
Avantage : le moteur
permet d'liminer
l'aspect "construction
des fondations"
Gain de temps, donc
de crativit

Pour : Tim Cain de


Troika Games
(Fallout, Arcanum)

"J'ai dj pass
beaucoup de temps
faire des moteurs, et
j'aimerais bien avoir
plus de temps pour
faire les jeux euxmmes"

Souvenirs d'un dbat : 2000

Pour, avec des rserves : Warren Spector

Pourquoi avoir achet le moteur d'Unreal pour crer


Deus Ex ? "parce que nous pensions qu'il nous
permettrait de nous concentrer sur la cration du
jeu, plutt que sur la cration d'un moteur de jeu."
Problme : "Ce n'est pas notre programme donc
nous ne le comprenons pas aussi bien qu'un
programme que nous aurions fait nous-mmes."
"Une fois de temps en temps, nous nous disons: ce
serait bien de faire a, mais faisons marche arrire"
En effet, il y a "des morceaux du moteur d'Unreal
que nous ne tenons pas du tout tripatouiller."

Souvenirs d'un dbat : 2000

Contre : Mark Randel


de Terminal Reality

Rinventer la roue
cote moins cher
Les moteurs font
peu prs ce qu'on
veut, juste peu prs
Si on utilise le moteur
d'Unreal, le jeu va
ressembler Unreal
Code "tranger",
programme ralenti

Contre : Nick Brody


de Planet Moon

Quake et Unreal ne
sont pas ce qu'on
peut crer de mieux
avec ces moteurs
"La crativit a besoin
d'tre nourrie"
En utilisant un mme
moteur pour une srie
de jeux, "l'inspiration
risque de s'asscher"

Souvenirs d'un dbat : 2000

Contre : Gabe Newell


de Valve

"Btir soi-mme son


moteur autorise un
certain nombre de
choix et d'arbitrage,
qui permettront une
diffrenciation plus
radicale vis--vis de
ce qui a dj t fait"

Contre : Brett Sperry


de Westwood

"Dpendre du
programme de
quelqu'un d'autre
amne beaucoup
d'incertitudes dans un
processus de
dveloppement. Vous
hritez galement des
bugs de l'autre."

Souvenirs d'un dbat : 2000

Avis partag : Matt Grahm (Ground Control)

"Si vous n'tes pas capable de trouver les bonnes


personnes pour faire le boulot, acheter un moteur
3D dj existant peut tre la solution la plus
raisonnable."
"Le problme est que les moteurs 3D vendus
actuellement sont des gros blocs monolithiques de
code, difficiles comprendre et difficiles modifier.
Ces trucs se foutent tel point de la programmation
oriente objet ou des mthodes modernes de
dveloppement qu'on les croirait issus des 70's."

Actualit du problme

Crainte d'une "Indiepocalypse"

Terme utilis depuis 2013

Titre d'une confrence d'Andy Baio (crateur de


Kickstarter)

... mais qui est de plus en plus en vogue depuis


cette anne

Sources

Article du "Monde" en ligne

4 septembre 2015 ( cliquer ici pour lire )

Dossier de Canard PC

N 326, octobre 2015

Actualit du problme

Nombre de jeux sortis sur Steam

De 2008 2013 : quelques centaines par an

2014-2015 : 2000 3000 titres par an

Ventes mdianes

2012 2013 : peu prs 200 000 exemplaires

Juin 2015 : Quelques centaines d'exemplaires

Ventes de jeux inds

Hotline Miami 1 vs. 2 : 1,7 millions -> 338 000

Evoland 1 (2013) vs. 2 (2015) : 380 000 -> 19 000

Olli Olli 1 (2014) vs. 2 (2015) : 161 000 -> 7000

Actualit du problme

"Fidlit" de la clientle Steam

Taux d'utilisateurs possdant plus de 4 jeux : 20%

Taux d'utilisateurs possdant plus de 100 jeux : 1%

Mme constat sur d'autres plate-formes (GOG)

"Le nombre global de sorties augmente, mais le


nombre de joueurs grimpe beaucoup plus
lentement" (Robert Przybylski, respo commercial)

Quel rapport avec Unity ?

"Tout le monde" s'en sert (174 000 jeux mobiles !)

... mais qui va acheter, ou tester, tout a ?

Actualit du problme

Consquences

Perte de qualit

Crise de crativit

"Tout le monde" fait comme le voisin


"Tout le monde" fait la manire de Unity

Perte de valeur commerciale

cf. tweet ci-contre

Soldes tout-va
Apps 0,99$

Crainte d'un nouveau "Video Game Crash", comme


celui de 1983

Gnralits sur les moteurs

Qu'est-ce qu'un moteur (de jeu, graphique...) ?

Quel moteur pour quel type de jeu ?

Panorama des moteurs existants

Discussion critique sur l'utilisation des moteurs

Architecture gnrale d'un moteur de jeu

Que fait un moteur ?

De quoi a-t-il besoin ?

Architecture d'un moteur de jeu (1)

Architecture d'un moteur de jeu (2)

Moteur et outils

De quoi un moteur a besoin ?

Langage et paradigme

Mathmatiques (matrices, quaternions...)

Conteneurs (tableaux, oprations de tri...)

Dmarrage et gestion des sous-composants

Configuration et versioning

Gestion des ressources

Gestion du temps

Gestion des priphriques

Dbuggage

Outils d'dition

Que fait un moteur de jeu ?

Affichage 3D

Animations

On en parlera plus tard (cf. Blender)

Collisions

... cf. cours "Moteurs physiques"

... et plein d'autres choses encore

Que vous vouliez crer ou non votre moteur

Si oui, vous devez vous poser ces questions


Si non, il est quand mme intressant de savoir ce
qu'il y a sous le capot

Affichage 3D

Meshes triangulaires

Interpolation

Textures

Eclairage

Camra

Rastrisation

Pipelines et shaders

Graphe de scne

Effets visuels

Pourquoi les triangles ?

Une scne est compose d'objets

Opaques (la lumire ne passe pas au travers)

Transparents (la lumire passe toute entire)

Translucides (la lumire passe, mais dforme)

Seule la surface des objets opaques est visible

Comment reprsenter la surface d'un objet ?

Infinit de points : pas possible !

Equation paramtrique : peu pratique

Splines (fonctions dfinies par morceaux)

Meshes triangulaires (mesh ou maillage = objet 3D)

Pourquoi les triangles ?

Les raisons

Toujours planaires

Toujours triangulaires

Les polygnes les plus


simples qui soient

Utiliss par toutes les


cartes graphiques

Que fait-on avec ?

Tessellation (on divise


une surface en une
srie de polygones)
Excute selon un certain
niveau de dtail (LOD)

Meshes triangulaires

Problme

Comment dfinir
un mesh "en dur"
pour ensuite
l'afficher en 3D ?

Solutions

Liste simple

Liste indexe

Strip

Eventail

Position dans l'espace

Types de repre

Repre absolu

Repre local

"Yaw, Pitch, Roll"

Yaw (lacet) : axe Y

Pitch (tangage) : axe X

Roll (roulis) : axe Z

Interpolation

Problme

Les sommets ("vertices")


sont une reprsentation
approximative de la
surface d'un objet
Comment obtenir des
informations exactes (donc
mieux le modliser) ?

Solution : interpolation

Un objet est analys pixel


par pixel, et non vertex par
vertex
Exemple : lissages de
Gouraud et de Phong

Texture-mapping

Dimensions

Types de mapping

BMP, TGA, PNG, TIF

Problme

Rpt ou tendu

Formats de texture

256x256, 512x512...

Texture tale sur le


sol => pixellisation

Solution : le filtrage

Texture-mapping

Mip-mapping

Adapte le LOD
de la texture la
distance

Types de filtrage

Linaire

Bilinaire

Trilinaire

Anisotropique

Lumire et
clairage

Pour quoi faire ?

Grce l'clairage, les


scnes les plus banales
deviennent photoralistes
Influe sur l'ambiance de
faon radicale

Lumire et clairage

Mass Effect 1

Dominante bleue

Impression d'uniformit

Mass Effect 2

Lumire ple
Teint blafard

Ombres omniprsentes

Lumire et clairage

Skyrim "vanilla"

Dominante gris-blanc

Temps rarement dgag

Le ciel bleu n'est pas


"vraiment" bleu

Skyrim modd (ENB)

Post-processing

Exemple : bleu clatant

Changement radical
d'ambiance

Lumire et clairage

Sources de lumire

Statique ou ambiante

Directionnelle

Depuis un point

Depuis un objet

Eclairage de Phong (le plus utilis)

Camra

1re ou 3me personne


Libre, fixe ou colle
un personnage

Notion de viewpoint

Types de projection

Perspective (frustrum)

Orthographique

Rastrisation

Objectif

Amliorer le rendu

Buffers

Stockent le rendu final

Filtrent ce qui est affich

Rendre matricielle une


image vectorielle

Z-Buffer : filtre en
fonction de la profondeur

Anti-aliasing

Adoucit les contours

Pipeline de rendu

Diffrentes tapes

Pipeline GPU

"Geometry Processing" et "Rasterization"

Etapes ralises par la carte graphique

Outil principal : les shaders

Shaders

Qu'est-ce qu'un shader ?

C'est un programme servant paramtrer la carte


graphique pour afficher une scne 3D

Les trois types

Vertex Shader

Geometry Shader

Transforme les coordonnes 3D en coordonnes 2D


Cre et modifie la gomtrie des polygones

Pixel Shader

Pour chaque pixel, dtermine sa couleur en fonction de


plusieurs paramtres (clairage, terrain, etc...)

Graphes de scne

Servent dcrire une scne dans le code

Origine : milieu des annes 90

OpenInventor (Silicon Graphics)

Auparavant : librairies graphiques de bas niveau

Depuis : manipulation d'entits de plus haut niveau

Utiliss par la quasi-totalit des moteurs

Davantage des arbres que des graphes

Chaque noeud est un aspect de la scne

Feuilles : la gomtrie afficher

Noeuds : hirarchie de la scne manipuler

Graphes de scne

Exemple de scne

Un camion sur la route

Une caisse sur le camion

Une autre sur la route

Reprsentation sous OSG

Effets visuels

Particules

Objets trs petits


Dissmins en grand
nombre
Apparaissent et
"meurent" trs vite

Utilises pour

Flammes

Fume

tincelles

Effets visuels

Decals

Petites images 2D
colles sur une
surface 3D
Utiliss pour

Impact de balle
Empreintes de pas
Marques de suie
Eclaboussures
Fissures

Effets visuels

Gestion de
l'environnement

Ciel : skyboxes

Terrain : heightmaps

Image 2D en niveau
de gris
Sert modliser les
hauteurs

Mer et effets d'eau

You might also like