Académique Documents
Professionnel Documents
Culture Documents
Intelligence Artificielle
vincent.thomas@loria.fr
Inspiration 2
244
• Intelligence Artificielle ?
– Émuler/simuler des comportements
– Résoudre des problèmes qui nécessitent de l’I
– Résoudre des problèmes encore non résolus
• Ces transparents
– Pas un cours d’IA
– A quoi peut servir IA en jeu
IA et jeux 5
244
Question à se poser
Une IA oui, mais pour quoi faire ?
Plan IA 7
244
• Objectifs
– Proposer un adversaire au joueur
– Renouveler le jeu
complexité
– Proposer des défis au joueur
– Assurer une cohérence
– Construire un système complexe
Obj 1 : Paraître intelligent 9
244
(2000)
Obj 1 : Paraître intelligent 10
244
(2012)
Obj 1 : Paraître intelligent 11
244
(2012)
Obj 1 : Paraître intelligent 12
244
(2011)
Obj 1 : Paraître intelligent 13
244
• Objectif
– Avoir un comportement normal
– Semble simple de l’extérieur
• Essentiel
– Une mauvaise IA détruit la crédibilité
– Le système doit paraître intelligent
(2010)
Obj 2 : Proposer un adversaire au joueur 16
244
• Objectif
– Ne pas jouer au hasard
• Proposer des adversaires à la hauteur du joueur
• Ia a les mêmes contrôles que le joueur
Obj 2 : Proposer un adversaire au joueur 17
244
• Objectif
– Ne pas jouer au hasard
• Proposer des adversaires à la hauteur du joueur
• Ia a les mêmes contrôles que le joueur
• TicTacToe
(wikipedia)
Algorithme Min-Max 19
244
• TicTacToe
Algorithme Min-Max 20
244
• TicTacToe
Algorithme Min-Max 21
244
• TicTacToe
Algorithme Min-Max 22
244
• TicTacToe
Algorithme Min-Max 23
244
• TicTacToe
Algorithme Min-Max 24
244
• TicTacToe
Algorithme Min-Max 25
244
• TicTacToe
(wikipedia)
Algorithme Min-Max 26
244
• TicTacToe
– xkcd
Algorithme Min-Max 27
244
• TicTacToe
– Xkcd
– wikipedia
Algorithmes génétiques 28
244
• Evolution chamber
– Building orders
Obj 3 : Ne pas être prédictible 29
244
• Spawn identiques
• Objectif :
– Proposer des jeux renouvelables
• En terme d’événements (de tetris à d’autres ..)
• En terme de scénarisation (en fonction de carac)
• En terme de comportement
(2005)
Obj 3 : Ne pas être prédictible 31
244
(2009)
Obj 4 : Modéliser l’individu 32
244
• Objectif
– Représenter le comportement des unités
• De manière réaliste
• Comme élément de gameplay (diversion, …)
(2000)
Obj 4 : Modéliser l'individu 34
244
(2012)
Obj 4 : Modéliser l'individu 35
244
(2005)
Obj 4 : Modéliser l'individu 36
244
(2011)
Obj 5 : Produire des mondes cohérents 37
244
• Objectif
– Proposer un monde entier
• Dans lequel le joueur interagit
• Avec éventuellement des conséquences (sys complexe)
(2006)
Obj 5 : Produire des mondes cohérents 39
244
(2004)
Obj 5 : Produire des mondes cohérents 41
244
• Objectif
– Faire de l’IA un élément que le joueur utilise
• En manipulant des choses (système complexe)
• En utilisant de l’apprentissage
(2005)
Obj 6 : IA comme coeur de jeu 44
244
(2007)
Obj 6 : IA comme coeur de jeu 45
244
(1996)
Obj 6 : IA comme coeur de jeu 46
244
(2009)
Plan IA 47
244
• Conséquence
– Choisir le type d’IA adapté : pas trop complexe
Du tower defense ... 50
244
• Tower defense
– Savoir se déplacer
– Savoir suivre un chemin
– Évitement d'obstacles
– Planifier une trajectoire
• League of legends
– Savoir s'adapter aux circonstances
– Comportement de groupe
– Émuler un comportement (tufluc)
– Apprentissage (GACS)
Organisation d'une IA complexe 53
244
Envies et besoin
Sélection objectif
Décision Croyances
Construire chemin
Carte du monde
Suivre un chemin
Contrôle
Se déplacer obstacles
Envies et besoin
Sélection objectif
?
Décision Croyances
Construire chemin
Carte du monde
Suivre un chemin
Contrôle
Se déplacer obstacles
Envies et besoin
Sélection objectif
?
Décision Croyances
Construire chemin
Carte du monde
Suivre un chemin
Contrôle
Se déplacer obstacles
• Objectif
– IA simple pour des entités simples
– Pas de surprise
• Exemple
– Se diriger vers le personnage le plus proche
– Suivre un trajet
(1987)
Architecture purement réactive 58
244
(1999)
Architecture purement réactive 60
244
• Déplacement direct
– Rapprocher de la cible
[….......]
– Algo chuchurocket
• Plusieurs possibilités
– Action exécutée directement
If (droite) x=x-1;
else x=x+1;
If (gauche) y=y=-1;
else y=y=+1;
1 – couche action 63
244
• Plusieurs possibilités
– Action exécutée directement
If (droite) x=x-1;
else x=x+1;
If (gauche) y=y=-1;
else y=y=+1;
vx=vx+ax
vy=vy+ay
1 – couche action 64
244
• Avantage
– Réutiliser précédemment
– Réalisme
• Inconvénient
– Contrôle accélération
– Se déplacer plus si simple
1 – couche action 65
244
• Compétition IA : http://www.marioai.org/
Voyageur de commerce 66
244
• Différences
– Voyageur de commerce
– Physical TSP (http://www.ptsp-game.net/)
1 – couche action 67
244
Envies et besoin
Sélection objectif
?
Décision Croyances
Construire chemin
Carte du monde
Suivre un chemin
Contrôle
Se déplacer obstacles
Apprentissage
Décision
Suivre un chemin
Contrôle
Se déplacer obstacles
• Exemple
– Se diriger vers le personnage le plus proche
– Éviter des petits obstacles
2.1 - Savoir se déplacer 70
244
• Exemple
– Se diriger vers le personnage le plus proche
– Éviter des petits obstacles
• Jeux
– FPS
– Shoot-em-up
– ...
• Boids
– Craig Reynolds
vitesse
2.1 - Savoir se déplacer 72
244
• Boids
– Solution 1: accélération directe
• Ax = (bx-px)
• Ay = (by-py)
vitesse
accélération
2.1 - Savoir se déplacer 73
244
• Boids
– Solution 1: accélération directe
vitesse
2.1 - Savoir se déplacer 74
244
• Boids
– Solution 1: accélération directe
vitesse
2.1 - Savoir se déplacer 75
244
• Boids
– Solution 1: accélération directe
vitesse
2.1 - Savoir se déplacer 76
244
• Boids
– Solution 1: accélération directe
vitesse
2.1 - Savoir se déplacer 77
244
• Boids
– Solution 1: accélération directe
2.1 - Savoir se déplacer 78
244
• Boids
– Solution 1: accélération directe
2.1 - Savoir se déplacer 79
244
2.1 - Savoir se déplacer 80
244
• Boids
– Solution 1: accélération directe
• Démo1
2.1 - Savoir se déplacer 81
244
• Boids
– Craig Reynolds
vitesse
2.1 - Savoir se déplacer 82
244
• Boids
– Craig Reynolds
– Sur la vitesse
vitesse
Vitesse souhaitée
2.1 - Savoir se déplacer 83
244
• Boids
– Craig Reynolds
– Sur la vitesse
vitesse accélération
Vitesse souhaitée
2.1 - Savoir se déplacer 84
244
• Boids
– Craig Reynolds
– Sur la vitesse
2.1 - Savoir se déplacer 85
244
• Boids
– Craig Reynolds
– Sur la vitesse
2.1 - Savoir se déplacer 86
244
• Boids
– Craig Reynolds
– Sur la vitesse
• Démo2 - AgentSeek
2.1 - Savoir se déplacer 87
244
• Boids
– Craig Reynolds
– Ralentissement à l'arrivée
vitesse
2.1 - Savoir se déplacer 88
244
• Boids
– Craig Reynolds
– Ralentissement à l'arrivée
• Démo3 - AgentArrival
2 – couche contrôle 89
244
Apprentissage
Décision
Suivre un chemin
Contrôle
Se déplacer obstacles
Apprentissage
Décision
Suivre un chemin
Contrôle
Se déplacer obstacles
• Plusieurs possibilités
– Suivre un chemin continu
3
2.2 - Suivre un chemin 96
244
3
2.2 - Suivre un chemin 97
244
3
2.2 - Suivre un chemin 98
244
3
2.2 - Suivre un chemin 99
244
3
2.2 - Suivre un chemin 100
244
Apprentissage
Décision
Suivre un chemin
Contrôle
Se déplacer obstacles
Apprentissage
Décision
Suivre un chemin
Contrôle
Se déplacer obstacles
• Deux éléments
– Détecter un obstacle
– Éviter un obstacle
• Deux éléments
– Détecter un obstacle (vitesse et vecteur obstacle)
• Deux éléments
– Détecter un obstacle (vitesse et vecteur obstacle)
• | produit vectoriel | > taille obstacle → Collision
• Deux éléments
– Détecter un obstacle (vitesse et vecteur obstacle)
• | produit vectoriel | > taille obstacle → Collision
• | produit scalaire | < distance de vision → Proche
• Deux éléments
– Détecter un obstacle
– Éviter un obstacle
Apprentissage
Décision
Suivre un chemin
Contrôle
Se déplacer obstacles
Apprentissage
Envies et besoin
Sélection objectif
Décision Croyances
Construire chemin
Carte du monde
Suivre un chemin
Contrôle
Se déplacer obstacles
Apprentissage
Envies et besoin
Sélection objectif
Décision Croyances
Construire chemin
Carte du monde
Suivre un chemin
Contrôle
Se déplacer obstacles
• Planification
– Trouver une suite de lieu
• Problème classique en IA
– Wave algorithm
– Djikstra
– A*
3.1 – construire un chemin 113
244
• Algorithme de la vague
– Simple propagation
Arrivée
Départ
3.1 – construire un chemin 114
244
• Algorithme de la vague
– Simple propagation
3.1 – construire un chemin 115
244
• Algorithme de la vague
0
3.1 – construire un chemin 116
244
• Algorithme de la vague
1 0
1
3.1 – construire un chemin 117
244
• Algorithme de la vague
1 0
2 1
3.1 – construire un chemin 118
244
• Algorithme de la vague
1 0
2 1
3
3.1 – construire un chemin 119
244
• Algorithme de la vague
1 0
2 1
3
4
3.1 – construire un chemin 120
244
• Algorithme de la vague
1 0
2 1
3
4 5
3.1 – construire un chemin 121
244
• Algorithme de la vague
1 0
2 1
3
4 5 6
6
3.1 – construire un chemin 122
244
• Algorithme de la vague
1 0
2 1
3
4 5 6 7
6
7
3.1 – construire un chemin 123
244
• Algorithme de la vague
1 0
2 1
3
4 5 6 7 8
6
8 7 8
3.1 – construire un chemin 124
244
• Algorithme de la vague
1 0
2 1
3
4 5 6 7 8 9
6 9
8 7 8 9
3.1 – construire un chemin 125
244
• Algorithme de la vague
1 0
2 1
3 10
4 5 6 7 8 9
6 9
8 7 8 9 10
3.1 – construire un chemin 126
244
• Algorithme de la vague
1 0
2 1 11
3 10
4 5 6 7 8 9
6 9
8 7 8 9 10 11
3.1 – construire un chemin 127
244
• Algorithme de la vague
1 0 14 13 12
2 1 15 11
3 10
4 5 6 7 8 9
6 9
8 7 8 9 10 11
3.1 – construire un chemin 128
244
• Algorithme de la vague
0 14 13 12
1 15 11
10
6 7 8 9
9
8 9 10 11
3.1 – construire un chemin 129
244
• Algorithme de la vague
1 0 14 13 12
2 1 15 11
3 10
4 5 6 7 8 9
6 9
8 7 8 9 10 11
3.1 – construire un chemin 130
244
• Algorithme de la vague
14 13 12
1 15 11
10
9
14 13 12 11
3.1 – construire un chemin 131
244
• Algorithme de la vague
– Ajout difficulté ?
– Danger
+2
+2
3.1 – construire un chemin 132
244
• Algorithme de la vague
– Ajout difficulté ?
– Danger
1 0 14 13 12
2 1 15 11
3 10
4 5 6 7 8 9
8 9
12 11 12 11 10 11
3.1 – construire un chemin 133
244
• Algorithme de la vague
– Ajout difficulté ?
– Danger
1 0 14 13 12
2 1 15 11
3 10
4 5 6 7 8 9
8 9
12 11 12 11 10 11
3.1 – construire un chemin 134
244
• Algorithme de la vague
– Ajout difficulté ?
– Danger
1 0 14 13 12 1 14 13 12
2 1 15 11 2 1 15 11
3 10 3 10
4 5 6 7 8 9 4 5 6 7 8 9
8 9 9
12 11 12 11 10 11 12 12 10 11
3.1 – construire un chemin 135
244
• Autres algorithmes
– Dijkstra (Développer par rapport au départ)
3.1 – construire un chemin 136
244
• Autres algorithmes
– Dijkstra (Développer par rapport au départ)
Dijkstra
3.1 – construire un chemin 137
244
• Autres algorithmes
– Dijkstra (Développer par rapport au départ)
Dijkstra
3.1 – construire un chemin 138
244
• Autres algorithmes
– Dijkstra (Développer par rapport au départ)
– A* (Développer le plus prometteur)
A*
3.1 – construire un chemin 139
244
• Autres algorithmes
– Dijkstra (Développer par rapport au départ)
– A* (Développer le plus prometteur)
A*
3.1 – construire un chemin 140
244
• Autres algorithmes
– Dijkstra (Développer par rapport au départ)
– A* (Développer le plus prometteur)
A*
3.1 – construire un chemin 141
244
• Démo6
– Replanification en cas de modification
3.1 – construire un chemin 142
244
2
3.1 – construire un chemin 145
244
2
3.1 – construire un chemin 146
244
1 2
2
3.1 – construire un chemin 147
244
1 3
1 2
2 3
2 3
3.1 – construire un chemin 148
244
1 3
1 2 4
2 3
2 3
3.1 – construire un chemin 149
244
1 3 5
1 2 4
2 3 5
2 3
3.1 – construire un chemin 150
244
1 3 5
1 2 4
2 3 5
2 3 6
3.1 – construire un chemin 151
244
1 3 5
1 2 4
2 3 5
2 3 7 6
3.1 – construire un chemin 152
244
1 3 5
1 2 4
2 3 5
2 3 7 6
3.1 – construire un chemin 153
244
1 3 5
1 2 4
2 3 5
2 3 7 6
3.1 – Espace d'état complexe 154
244
X → 10
Y → 10
Vx → 10
Vy → 10
3.1 – Espace d'état complexe 155
244
X → 10
Y → 10
Vx → 10
Vy → 10
3.1 – Espace d'état complexe 156
244
• Trajectoire non-holonome
– Jeu sur papier RaceTrack
http://www.sjbaker.org/paper_and_pencil_games/graph_racers/
3.1 – Espace d'état complexe 157
244
• Trajectoire non-holonome
– Jeu sur papier RaceTrack
http://www.sjbaker.org/paper_and_pencil_games/graph_racers/
3.1 – Espace d'état complexe 158
244
• Trajectoire non-holonome
– Jeu sur papier RaceTrack
http://www.sjbaker.org/paper_and_pencil_games/graph_racers/
3.1 – Espace d'état complexe 159
244
• Trajectoire non-holonome
– Jeu sur papier RaceTrack
http://www.sjbaker.org/paper_and_pencil_games/graph_racers/
3.1 – Espace d'état complexe 160
244
• Trajectoire non-holonome
– Jeu sur papier RaceTrack
http://www.sjbaker.org/paper_and_pencil_games/graph_racers/
3.1 – Espace d'état complexe 161
244
• Trajectoire non-holonome
http://www.harmmade.com/vectorracer/
3.1 – Espace d'état complexe 162
244
• Planification hiérarchique
– Raisonner à différents niveaux
– En fonction du lieu
• Démonstration7
– Coupler
• Planification
• Navigation
3 – couche Décision 164
244
Apprentissage
Envies et besoin
Sélection objectif
Décision Croyances
Construire chemin
Carte du monde
Suivre un chemin
Contrôle
Se déplacer obstacles
Apprentissage
Envies et besoin
Sélection objectif
Décision Croyances
Construire chemin
Carte du monde
Suivre un chemin
Contrôle
Se déplacer obstacles
• Personnage sait
– Construire un chemin vers but
– Naviguer, éviter obstacles
• Plusieurs approches
– "Behavior Tree"
– Planification haut niveau
– "Practical reasonning"
– D'autres ...
3.2 - Sélection d'objectifs 167
244
• Scripts
• Automates
• Behavior Tree
• Practical reasonning – BDI
• Planification haut niveau
3.2 - Sélection d'objectifs 168
244
(2002)
Gestionnaire dialogues
3.2 - Sélection d'objectifs 171
244
• Scripts
• Automates
• Behavior Tree
• Practical reasonning – BDI
• Planification haut niveau
3.2 - Sélection d'objectifs 172
244
• Automates
3.2 - Sélection d'objectifs 174
244
• Scripts
• Automates
• Behavior Tree
• Practical reasonning – BDI
• Planification haut niveau
3.2 - Sélection d'objectifs 175
244
• Arbre de comportement
– Conditionnelles
– Séquences d'actions
3.2 - Sélection d'objectifs 176
244
peut retourner
false
peut retourner
false
peut retourner
false
peut retourner
false
peut retourner
false
peut retourner
false
peut retourner
false
peut retourner
false
• F.E.A.R
– http://web.cs.wpi.edu/~rich/courses/imgd4100-b11/lectures/L-Planning.pdf
– http://web.media.mit.edu/~jorkin/gdc2006_orkin_jeff_fear.pdf
(2005)
3.2 - Sélection d'objectifs 187
244
• Halo2
– http://aigamedev.com/open/review/halo-ai/
– "Managing Complexity in the Halo 2 AI System" (D Isla)
(2004)
3.2 - Sélection d'objectifs 188
244
• Arbre
– Conditionnelles
– Séquences d'actions
• Intérêts
– Langage expressif
– Comportement flexible
– Facilement lisible
3.2 - Sélection d'objectifs 189
244
• Scripts
• Automates
• Behavior Tree
• Practical reasonning – BDI
• Planification haut niveau
3.2 - Sélection d'objectifs 190
244
• "Practical reasonning"(brattman)
– Raisonnement humain
3.2 - Sélection d'objectifs 191
244
• "Practical reasonning"(brattman)
– Raisonnement humain
• Trois éléments
– Désir, Intentions, Croyances
3.2 - Sélection d'objectifs 192
244
• Probleme de la princesse
http://www.lifl.fr/SMAC/projects/cocoa/princesse.html
3.2 - Sélection d'objectifs 193
244
• Probleme de la princesse
http://www.lifl.fr/SMAC/projects/cocoa/princesse.html
3.2 - Sélection d'objectifs 194
244
• Probleme de la princesse
http://www.lifl.fr/SMAC/projects/cocoa/princesse.html
3.2 - Sélection d'objectifs 195
244
• Probleme de la princesse
http://www.lifl.fr/SMAC/projects/cocoa/princesse.html
3.2 - Sélection d'objectifs 196
244
• Probleme de la princesse
http://www.lifl.fr/SMAC/projects/cocoa/princesse.html
3.2 - Sélection d'objectifs 197
244
• Probleme de la princesse
http://www.lifl.fr/SMAC/projects/cocoa/princesse.html
3.2 - Sélection d'objectifs 198
244
• Probleme de la princesse
http://www.lifl.fr/SMAC/projects/cocoa/princesse.html
3.2 - Sélection d'objectifs 199
244
• Probleme de la princesse
http://www.lifl.fr/SMAC/projects/cocoa/princesse.html
3.2 - Sélection d'objectifs 200
244
• Probleme de la princesse
http://www.lifl.fr/SMAC/projects/cocoa/princesse.html
3.2 - Sélection d'objectifs 201
244
• Architecture BDI
revisions perception
croyances
intentions
planification
Plan
execution action
3.2 - Sélection d'objectifs 202
244
• Scripts
• Automates
• Behavior Tree
• Practical reasonning – BDI
• Planification haut niveau
3.2 - Sélection d'objectifs 203
244
• Planification haut-niveau
cultiver
Acheter
pain
récolter
investir
embaucher
Settlers 7
3.2 - Sélection d'objectifs 204
244
Apprentissage
Envies et besoin
Sélection objectif
Décision Croyances
Construire chemin
Carte du monde
Suivre un chemin
Contrôle
Se déplacer obstacles
Envies et besoin
Sélection objectif
Décision Croyances
Construire chemin
Carte du monde
Suivre un chemin
Contrôle
Se déplacer obstacles
• Question
– Pourquoi apprendre dans un jeu ?
– Temps de réponse ?
• Objectifs
– Mettre à jour connaissance du monde
– S'adapter aux actions du joueurs
– Simuler le vivant
4.1 – Mises à jour Croyances 209
244
• Champs de potentiel
• http://aigamedev.com/open/tutorial/potential-fields/
4.2 – S'adapter aux actions du Joueur 216
244
• Poker
• Principe
– Jeu de bluff
– Comprendre habitudes
• Apprendre
– Le comportement du joueur
• Timoré, Casse-cou, bluffeur, ...
– Prédire son jeu
4.2 – S'adapter aux actions du Joueur 217
244
http://www.nytimes.com/interactive/science/rock-paper-scissors.html
4.2 – S'adapter aux actions du Joueur 218
244
(2001)
4.3 – Simuler le vivant 220
244
• Apprendre comportement
– Créature observe
– Créature répète
– Joueur renforce
4.3 – Simuler le vivant 221
244
4.3 – Simuler le vivant 222
244
• Apprendre comportement
– Créature observe
– Créature répète
– Joueur renforce
• Techniques
– Architecture BDI
– Apprentissage par renforcement / Réseau neurone
• Valeur associée à couples (Situation → Action)
4.4 – Augmenter plaisir de jeu 223
244
• Comprendre le joueur
– Ses attentes
– Ses principes de résolutions
• IA Director
– Construit l'histoire
– Cent mille milliards poèmes
• Exemple
– Left for dead
• Skyrim
– Radiant AI - Quêtes adaptées, Templates
• {PNJ ami} enlevé dans {lieu inconnu}
Conclusion 226
244
Envies et besoin
Sélection objectif
Décision Croyances
Construire chemin
Carte du monde
Suivre un chemin
Contrôle
Se déplacer obstacles
• Objectifs de départ
– Proposer un adversaire au joueur
– Renouveler le jeu
– Proposer des défis au joueur
– Assurer une cohérence
– Construire un système complexe
• Différents niveaux
– IA complexe / simple
– IA fixe / adaptative
– IA peut tricher
Comportements de groupe 228
244
Comportements de groupe 229
244
• De nombreuses questions
– Déplacement en formation
– Coordination pour attaque
– Squads et couverture mutuelle
Comportements de groupe 230
244
• De nombreuses questions
– Déplacement en formation
– Coordination pour attaque
– Squads et couverture mutuelle
• F.E.A.R
– http://web.cs.wpi.edu/~rich/courses/imgd4100-b11/lectures/L-Planning.pdf
– http://web.media.mit.edu/~jorkin/gdc2006_orkin_jeff_fear.pdf
Terraforming 232
244
Terraforming 233
244
Terraforming 234
244
• Approches
– Wang tiles
http://procworld.blogspot.fr/
Terraforming 235
244
• Approches
– Herringbone Tiles
Terraforming 236
244
• Approches
– Herringbone Tiles
Terraforming 237
244
• Approches
– Herringbone Tiles
http://nothings.org/gamedev/herringbone/
Terraforming
http://nothings.org/gamedev/herringbone/
Terraforming 239
244
• Approches
– Perlin noise
• Bruit cohérent
• Sans discontinuité
http://www.gamedev.net/blog/33/entry-2227887-more-on-minecraft-type-world-gen/
A voir 240
244
Envies et besoin
Sélection objectif
Décision Croyances
Construire chemin
Carte du monde
Suivre un chemin
Contrôle
Se déplacer obstacles