Architecture Logicielle d’un jeu vidéo

Preview:

DESCRIPTION

Architecture Logicielle d’un jeu vidéo. Steve Gury steve.gury@gmail.com. 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

Architecture Logicielle d’un jeu vidéo

Steve Gurysteve.gury@gmail.com

Agenda 3D Engine Physic Engine Network Engine & plateforme serveur

Vue d’ensemble

Game Engine 3D EnginePhysic Engine

Network Engine

Architecture simpliste d’un jeu moderne

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)

Direct 3D Historique

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

Mode protégé / réel

Mémoire physique

Process 1 Process 2

Mode protégé / réel

Mémoire physique

Process 1 Process 2

Adressage virtuelle Adressage virtuelle

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)

Direct 3D HAL

Hardware Abstraction Layer

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

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

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)

3D Pipeline

Input Assembler Rasterizer Output

MergerVertexshader

Pixelshader

Index Buffer

Vertex Buffer

Buffer

Texture

Buffer

Texture

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…

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

afficher

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

en subdivisant la surface

Ombre Shadow map

Shadow casting

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

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

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

Filtrage des textures Filtrage anisotropique

Filtrage anisotropique

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

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

Mip mapping Pre calcul du re-échantillonnage des textures

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

Agenda 3D Engine Physic Engine Network Engine & plateforme serveur

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

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

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

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

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

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

points des meshs de la scène Heuristiques Bounding Box

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

manière

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

Animation Animation de squelette (Bones)

Association de sommet avec des bones

Définition de l’animation au niveau des jointures

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

classique

Compromis: la cinématique inverse

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

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

Agenda 3D Engine Physic Engine Network Engine & plateforme serveur

Réseau Popularisation des jeux en ligne

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

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

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

Du contenu Des mises à jour

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

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

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

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

en fonction du type de message en fonction de la charge

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

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

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

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

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

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

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

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

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)

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

Recommended