1 / 50

Architecture Logicielle d’un jeu vidéo

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:

amity
Télécharger la présentation

Architecture Logicielle d’un jeu vidéo

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Agenda • 3D Engine • Physic Engine • Network Engine & plateforme serveur

  3. Physic Engine Game Engine 3D Engine Network Engine Vue d’ensemble Architecture simpliste d’un jeu moderne

  4. 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)

  5. Direct 3D • Historique • DOS -> Hack de perf • Windows -> Pas content • MS dit: API rapide qui simplifie tout ça

  6. Mode protégé / réel Mémoire physique Process 1 Process 2

  7. Mode protégé / réel Mémoire physique Adressage virtuelle Adressage virtuelle Process 1 Process 2

  8. 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)

  9. Direct 3D • HAL • Hardware Abstraction Layer • API • Nouvel API de plus haut niveau • Simplification de l’écriture de code 3D

  10. 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

  11. 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)

  12. 3D Pipeline Buffer Buffer Index Buffer Texture Texture Vertex Buffer Vertex shader Pixel shader Rasterizer Output Merger Input Assembler

  13. 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…

  14. Level of Details • Performances liées au nombre de points à afficher

  15. Smooth • C’est l’inverse du LoD, on ajoute des points en subdivisant la surface

  16. Ombre Shadow map • Shadow casting

  17. Texture Pour définir de manière précise la couleur d’un objet en différent endroit, on utilise une texture

  18. 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

  19. Filtrage des textures Filtrage anisotropique Filtrage anisotropique

  20. Anti-aliasing • Crénelage du à la rastérisation • Inesthétique • Crée une sorte de scintillement (arbre)

  21. Mip mapping • Pre calcul du re-échantillonnage des textures • Sélection de la texture idéale • Interpolation entre les textures correspondantes

  22. Agenda 3D Engine Physic Engine Network Engine & plateforme serveur

  23. 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

  24. Intégration numérique • Besoin de réalisme • Utilisation des équations différentielles physiques • ex (RFD): • Besoin de résoudre ces équations numériquement

  25. Intégration numérique • Différents algorithmes de résolution numérique d’équations différentielles • Runge-Kutta

  26. 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

  27. Résolution de collisions • Performances dépendent du nombre de points des meshs de la scène • Heuristiques • Bounding Box

  28. Champs d’application • Tous ne peux pas être simuler de cette manière

  29. 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

  30. Animation Animation de squelette (Bones) • Association de sommet avec des bones • Définition de l’animation au niveau des jointures

  31. Motion capture • Capture du mouvement de vraie personne • Strictement équivalent à l’animation classique

  32. Compromis: la cinématique inverse • Mélange d’animation pré calculée et d’animation procédurale

  33. 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

  34. Agenda 3D Engine Physic Engine Network Engine & plateforme serveur

  35. Réseau • Popularisation des jeux en ligne • Multiplayer en LAN • Multiplayer online • MMO à personnage persistent • L’avenir: MMO à univers persistent

  36. 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

  37. Diffusion de données • Nouvelles perspectives pour délivrer: • Du contenu • Des mises à jour • Avantages: • Peer to peer • Streaming • LoD (Level of Details)

  38. 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

  39. 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

  40. Routage • Point d’entrée à la plateforme • Routage: • en fonction du type de message • en fonction de la charge

  41. 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

  42. 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

  43. 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

  44. 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

  45. 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

  46. 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

  47. 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

  48. 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

  49. 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)

  50. 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

More Related