50
Architecture Logicielle d’un jeu vidéo Steve Gury steve.gury @ gmail.com

Architecture Logicielle d’un jeu vidéo

  • Upload
    amity

  • View
    56

  • Download
    3

Embed Size (px)

DESCRIPTION

Architecture Logicielle d’un jeu vidéo. Steve Gury [email protected]. Agenda. 3D Engine Physic Engine Network Engine & plateforme serveur. Physic Engine. Game Engine. 3D Engine. Network Engine. Vue d’ensemble. Architecture simpliste d’un jeu moderne. Moteur 3D. Objectif: - PowerPoint PPT Presentation

Citation preview

Page 2: Architecture Logicielle  d’un jeu vidéo

Agenda 3D Engine Physic Engine Network Engine & plateforme serveur

Page 3: Architecture Logicielle  d’un jeu vidéo

Vue d’ensemble

Game Engine 3D EnginePhysic Engine

Network Engine

Architecture simpliste d’un jeu moderne

Page 4: Architecture Logicielle  d’un jeu vidéo

Moteur 3D Objectif:

Calculer une scène en 3D Visualiser cette scène sur un écran 2D

Interne: Gérer l’interaction avec le matériel efficacement Adapter l’api sous jacente au code du jeu

(Direct 3D / OpenGL)

Page 5: Architecture Logicielle  d’un jeu vidéo

Direct 3D Historique

DOS -> Hack de perf Windows -> Pas content MS dit: API rapide qui simplifie tout ça

Page 6: Architecture Logicielle  d’un jeu vidéo

Mode protégé / réel

Mémoire physique

Process 1 Process 2

Page 7: Architecture Logicielle  d’un jeu vidéo

Mode protégé / réel

Mémoire physique

Process 1 Process 2

Adressage virtuelle Adressage virtuelle

Page 8: Architecture Logicielle  d’un jeu vidéo

Mode protégé / réel Avantages:

Robustesse du système Debuging plus facile

Inconvénients Légère baisse de performances Plus difficile à écrire (ancien code non portable)

Page 9: Architecture Logicielle  d’un jeu vidéo

Direct 3D HAL

Hardware Abstraction Layer

API Nouvel API de plus haut niveau Simplification de l’écriture de code 3D

Page 10: Architecture Logicielle  d’un jeu vidéo

Architecture matérielle

CPU

BUS

GPU

RAM

VRAM

D’abord simple processeur d’affichage, le GPU devient dans les années 90 un co-processeur de calcul 3D. D’abord fixe, puis programmable

PCI Express

Page 11: Architecture Logicielle  d’un jeu vidéo

GPU programmable DirectX 5+

DirectX utilise le GPU pour certaines fonctions

DirectX 8+ Le programmeur peut définir des « shaders » qui

seront exécutés lors du rendu 2 types

Vertex Shader: agit sur les points Pixel Shader: agit sur les pixels (après rasterisation)

Page 12: Architecture Logicielle  d’un jeu vidéo

3D Pipeline

Input Assembler Rasterizer Output

MergerVertexshader

Pixelshader

Index Buffer

Vertex Buffer

Buffer

Texture

Buffer

Texture

Page 13: Architecture Logicielle  d’un jeu vidéo

Shaders Code compilé sur le CPU, exécuté sur le

GPU Historique:

Assembleur CG (nividia) HLSL (DirectX) et GLSL (OpenGL) CUDA, OpenCL

Utilisations dans des effets, éclairage…

Page 14: Architecture Logicielle  d’un jeu vidéo

Level of Details Performances liées au nombre de points à

afficher

Page 15: Architecture Logicielle  d’un jeu vidéo

Smooth C’est l’inverse du LoD, on ajoute des points

en subdivisant la surface

Page 16: Architecture Logicielle  d’un jeu vidéo

Ombre Shadow map

Shadow casting

Page 17: Architecture Logicielle  d’un jeu vidéo

Texture Pour définir de manière précise la couleur

d’un objet en différent endroit, on utilise une texture

Page 18: Architecture Logicielle  d’un jeu vidéo

Filtrage des textures On se trouve rarement dans le cas où un pixel affiché à

l’écran correspond à un seul pixel de la texture

Point voisin Filtrage linéaire Filtrage anisotropique

Page 19: Architecture Logicielle  d’un jeu vidéo

Filtrage des textures Filtrage anisotropique

Filtrage anisotropique

Page 20: Architecture Logicielle  d’un jeu vidéo

Anti-aliasing Crénelage du à la rastérisation

Inesthétique Crée une sorte de scintillement (arbre)

Page 21: Architecture Logicielle  d’un jeu vidéo

Mip mapping Pre calcul du re-échantillonnage des textures

Sélection de la texture idéale Interpolation entre les textures correspondantes

Page 22: Architecture Logicielle  d’un jeu vidéo

Agenda 3D Engine Physic Engine Network Engine & plateforme serveur

Page 23: Architecture Logicielle  d’un jeu vidéo

Moteur Physique Objectif:

Calculer la position et le déplacement des objets du monde

Calculer les interactions des objets entre eux

Interne: Intégrer numériquement des équations

physique Résoudre les collisions/intersections de volume

Page 24: Architecture Logicielle  d’un jeu vidéo

Intégration numérique Besoin de réalisme

Utilisation des équations différentielles physiques

ex (RFD): Besoin de résoudre ces équations

numériquement

extfam

Page 25: Architecture Logicielle  d’un jeu vidéo

Intégration numérique Différents algorithmes de résolution

numérique d’équations différentielles Runge-Kutta

Page 26: Architecture Logicielle  d’un jeu vidéo

Résolution de collisions A partir de deux volumes décrits par deux

mesh, il faut résoudre la collision C’est-à-dire déterminer le point de collision et

la normale en ce point Détection souvent à posteriori

Page 27: Architecture Logicielle  d’un jeu vidéo

Résolution de collisions Performances dépendent du nombre de

points des meshs de la scène Heuristiques Bounding Box

Page 28: Architecture Logicielle  d’un jeu vidéo

Champs d’application Tous ne peux pas être simuler de cette

manière

Page 29: Architecture Logicielle  d’un jeu vidéo

Animation Animation des personnages pour augmenter

le réalisme des jeux Personnages: éléments les plus détaillés du jeux Performances: Pas de temps réel Complexité des modèles

Page 30: Architecture Logicielle  d’un jeu vidéo

Animation Animation de squelette (Bones)

Association de sommet avec des bones

Définition de l’animation au niveau des jointures

Page 31: Architecture Logicielle  d’un jeu vidéo

Motion capture Capture du mouvement de vraie personne Strictement équivalent à l’animation

classique

Page 32: Architecture Logicielle  d’un jeu vidéo

Compromis: la cinématique inverse

Mélange d’animation pré calculée et d’animation procédurale

Page 33: Architecture Logicielle  d’un jeu vidéo

Physix & GPU Utilisation de shader pour tirer parti de la

puissance des GPU (hautement parallèle) Autrefois hack aujourd’hui une techno

« PhysiX » racheté par Nvidia

Page 34: Architecture Logicielle  d’un jeu vidéo

Agenda 3D Engine Physic Engine Network Engine & plateforme serveur

Page 35: Architecture Logicielle  d’un jeu vidéo

Réseau Popularisation des jeux en ligne

Multiplayer en LAN Multiplayer online MMO à personnage persistent L’avenir: MMO à univers persistent

Page 36: Architecture Logicielle  d’un jeu vidéo

Ce qui change Abonnement

Le gain dépend du temps de jeu Marketing viral

Auto Patch vs Livraison boite Travail sur la duré Patch à la volé

Architecture Cohérence temporelle Problématique de passage à l’échelle

Page 37: Architecture Logicielle  d’un jeu vidéo

Diffusion de données Nouvelles perspectives pour délivrer:

Du contenu Des mises à jour

Avantages: Peer to peer Streaming LoD (Level of Details)

Page 38: Architecture Logicielle  d’un jeu vidéo

Passage à l’échelle (scalability) C’est LA problématique des jeux en ligne

1 serveurs = 1000 joueurs 10 serveurs = 5000 joueurs 100 serveurs = 10000 joueurs

Page 39: Architecture Logicielle  d’un jeu vidéo

Redondance & Haute disponibilité

Éviter les SPOF (Single Point of Failure) Utiliser la redondance sur tous les services

Routage Service d’annuaire Nœud de calcul Système de persistance

Page 40: Architecture Logicielle  d’un jeu vidéo

Routage Point d’entrée à la plateforme Routage:

en fonction du type de message en fonction de la charge

Page 41: Architecture Logicielle  d’un jeu vidéo

Service d’annuaire Identifier les capacités des nœuds d’un

cluster Abstraire le nœud logique du nœud physique

UDP broadcast / multicast Gestion de réponses différentes

Page 42: Architecture Logicielle  d’un jeu vidéo

Nœud de calcul Moteur du cluster

Exécute le code serveur Sans état (Stateless)

Passage à l’échelle parfaite Avec état (Statefull)

Reporte le problème sur la persistance

Page 43: Architecture Logicielle  d’un jeu vidéo

Système de persistance Système de stockage des données Dans la plupart des cas, c’est le point noir de

la plateforme Le besoin de cohérence globale du système

rend la parallèlisation difficile Systèmes « ACID » classiques pas adaptés

A: Atomic C: Consistent I: Isolated D: Durable

Page 44: Architecture Logicielle  d’un jeu vidéo

Sharding Segmentation logique des données

Par zone géographique Par type de donnée Par probabilité d’interaction

Bien un temps mais ne scale pas

Page 45: Architecture Logicielle  d’un jeu vidéo

Persistence in memory Tout est gardé en mémoire et régulièrement

enregistré en base Avantages:

Vitesse Inconvénients:

Perte de la cohérence Duplication des données impossibles

Scale au prix de la cohérence

Page 46: Architecture Logicielle  d’un jeu vidéo

Database + système de réplication

Database traditionnel type: Mysql, Postgresql, Oracle, SQL Server, …

Système de réplication Master / Master : Lenteur des transactions Master / Slave : Clients spécifiques lisent les

données en read-only sur les serveurs slave (+ temps de propagation)

Scale un peu

Page 47: Architecture Logicielle  d’un jeu vidéo

Système NoSQL Conteneur clé/valeur distribué

BigTable, MongoDb, Voldemort, … Avantages:

Scale vraiment Inconvénients:

Récriture des schémas de donnée sans forme normale

Page 48: Architecture Logicielle  d’un jeu vidéo

Cohérence temporelle Valeur du temps différente pour tous les

joueurs Synchro d’horloge Lag entre action d’un client et notification server

Dérive du temps Incohérence temporelle (lag négatif)

Système pour cacher le lag « Sir yes sir » Animation à durée variable

Page 49: Architecture Logicielle  d’un jeu vidéo

Dead reckoning Estimer la position d’un objet à partir de sa

dernière position/vitesse connue Objectif: minimiser les trajectoires erratiques Inconvénients: trajectoires irréels (sans

pathfinding)

Page 50: Architecture Logicielle  d’un jeu vidéo

Résolution de conflit Serveur fait foi Estimation de la vue erronée d’un client Prise de décision en fonction de cette vue