510 likes | 674 Views
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:
E N D
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: • 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 Adressage virtuelle Adressage virtuelle Process 1 Process 2
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 RAM BUS PCI Express 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 GPU VRAM
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 Buffer Buffer Index Buffer Texture Texture Vertex Buffer Vertex shader Pixel shader Rasterizer Output Merger Input Assembler
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 Filtrage anisotropique Point voisin Filtrage linéaire
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
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