![Page 2: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/2.jpg)
2
Plan du cours
l Introduction l Intergiciels généralistes
– RPC, RMI, CORBA, ICE l Intergiciels spécifiques
– Direct Play, XNA, TorqueNL, Raknet, Unreal – HLA, Openskies, Vega Prime, Delta 3D – Multiverse, 3DVIA Virtools, Unity 3D… – NeL, BigWorld, Hero Engine
l Conclusion
![Page 3: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/3.jpg)
3
Introduction
l Middleware/Intergiciel : couche logicielle qui se place entre l’application et le système d’exploitation
l Comme le SE, il offre des services utilisables par plusieurs applications
l Comme une application, il n’est pas indispensable à toutes les applications et il s’appuie sur des fonctionnalités du SE
3
![Page 4: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/4.jpg)
4
Introduction
l Il existe plusieurs types d’intergiciels (SGBD, communication, graphique...)
l Ici : intergiciels réseaux l En général : ils utilisent les sockets (et
éventuellement les threads et la synchronisation du SE) pour offrir des services de plus haut niveau
4
![Page 5: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/5.jpg)
5
Introduction
l Exemples de services offerts – Appels de procédures/méthodes à distance – Nommage/localisation/découverte – Migration/Equilibrage des charges – Transferts de messages/événements/notifications
5
![Page 6: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/6.jpg)
6
RPC : Remote Procedure Call
l Modèle client/serveur l Appel de procédures à distance entre un client et un serveur
– Le client appelle une procédure locale (souche – stub – ou proxy) – La procédure locale utilise une connexion socket pour envoyer un identifiant
de procédure et les paramètres au serveur – Le serveur reçoit la requête grâce à un socket, extrait l’id de procédure et les
paramètres (ceci est fait par un squelette – skeletton) – Le squelette exécute la procédure et renvoie le résultat via le socket
l Outil rpcgen – Génère la souche et le squelette à partir d’un fichier présentant l’interface
des méthodes dans un format indépendant du langage (RPCL : RPC Language)
![Page 7: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/7.jpg)
7
RPC : Remote Procedure Call
l Couche de présentation XDR (eXternal Data Representation) – Format pivot de représentation des données de types primitifs et structurés (tableaux,
tableaux de taille variable, structures…) – Indépendant de
l L’architecture (little endian/big endian) l Le langage (ordre ligne/colonne dans les tableaux C et Fortran) l Le système (ASCII, EBCDIC)
l Limitation : – Pas de gestion des concepts objets (encapsulation, héritage, polymorphisme) – Pas de services évolués : nommage …
l Successeurs : – RMI : mono langage, multi plateforme – CORBA : multi langage, multi plateforme – COM : multi langage, mono plateforme (multi pour DCOM) – SOAP / .NET / web services : multi langage, multi plateforme
![Page 8: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/8.jpg)
8
RMI : Remote Method Invocation
l RPC en Java – Invocation de méthodes sur des objets distribués – Très lié au langage => simple à mettre en œuvre
l Outils – Génération des souches/squelettes – Service de nommage simple (précise la machine d’exécution) – Activation
l Mono langage et multi plateforme : de JVM à JVM l Orienté objet : utilisation de la sérialisation l Dynamique : téléchargement des classes des souches et des paramètres
via HTTP (http://) ou NFS/SMB (file:/) l Sécurisé : SecurityManager et fichier de sécurité .policy
![Page 9: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/9.jpg)
9
CORBA : Common Object Request Broker Architecture
l RPC orientés objets + nombreux services – Invocation de méthodes sur des objets distribués – Indépendant du langage => utilisation d’un IDL (Interface Definition
Language) l Outils
– Génération des souches/squelettes depuis l’IDL – Service de nommage complet, service de trading (annuaire page jaunes) – Gestion des événements, de la persistance, du temps-réel, du streaming...
l Multi-langage et multi-plateforme l Interopérabilité entre plusieurs ORBs : GIOP/IIOP
![Page 10: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/10.jpg)
10
ICE - Internet Communications Engine
l Middleware similaire à CORBA (basé sur un IDL, multiplateforme et multi-langage) mais beaucoup plus simple à déployer, à utiliser et très efficace
l Multi-langage : C++, Java (y compris sur Android), .NET, Python, PHP, Ruby, et Objective-C (y compris sur iPhone)
l Multiplateforme: Win, Linux, OS X, Solaris, Android, iOS l Gère des communications TCP, UDP, UDP multicast, SSL
en IPv4 et IPv6
![Page 11: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/11.jpg)
11
ICE - Internet Communications Engine
l Services : RPC synchrones, asynchrones, unidirectionnelles (oneway), à traitement par lot, invocation dynamique, retransmission de RPC, traversée des firewall et NATs, persistance des objets dans une base de donnée, évènements, auto-patcher, compression, gestion des versions…
l A été utilisé pour faire un MMO (Wish de Mutable Realms – annulé avant la sortie)
l Disponible sous GPL à : http://www.zeroc.com/
![Page 12: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/12.jpg)
12
Direct Play
l Fait partie de Direct X (v3 – v9 - abandon : v10 => XBox Live, Games for Windows Live et XNA)
l Support de 2 architectures – Egal à égal totalement connecté – Client/Serveur
l Filtrage par groupes géré par le serveur
12
![Page 13: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/13.jpg)
13
Direct Play : architectures
13
![Page 14: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/14.jpg)
14
Direct Play
l Audio-conférence multi-utilisateur l Outils de test
– Netmon (monitoring temps-réel) – Dp8Sim (simulation de bande passante limitée et de
pertes)
14
![Page 15: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/15.jpg)
15
Direct Play : architecture en couches
15
Application
IPX SP Modem SP
Serial SP
API / Core
Transport Protocol
API Calls
DirectPlay8
Call-backs
IPv6 SP
IPv4 SP
![Page 16: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/16.jpg)
16
XNA Game Studio
l Multiplateforme : (Win), Xbox, (Windows Phone) l Langage : C# l Lobby avec Games 4 Windows/Xbox LIVE
– Création de parties, recherche de parties, mise en relation des applications, profils utilisateur, scores…
l Mode de jeu : local (écran partagé), en réseau local ou sur Internet via Xbox LIVE
l Architectures répartie : P2P et C/S avec un hôte responsable de la connexion LIVE
16
![Page 17: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/17.jpg)
17
XNA Game Studio
l Gestion QOS : best effort, ordonné, fiable, les 2, données de chat (indépendant du reste et non crypté)
l Gestion de la voix l Simulation de bande passante, perte et latence incluse dans
XNA l Gratuit pour les jeux sous Windows (mais pas réseau),
payant ($99) pour développer sur Xbox LIVE (Indie) ou Windows Phone (mais pas réseau)
l Infos et téléchargement : http://create.msdn.com/
17
![Page 18: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/18.jpg)
18
TorqueNL
l Issu des jeux “Starsiege: TRIBES” et TRIBES 2 l Architecture Client/Serveur orientée FPS
– Compression des données à envoyer l Au niveau du bit (booléens, entiers en précisant le nombre de
chiffres, flottants en précisant la précision) – Plusieurs QoS
l Ordre et fiabilité l Fiabilité seule l Non fiable l Dernière version uniquement (lors des ré-émission on envoie la
version à jour) l Aussi vite que possible (données ré-émises jusqu’à acquittement) 18
![Page 19: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/19.jpg)
19
TorqueNL
– Interpolation/Extrapolation et Dead-Reckoning – Filtrage des données non intéressantes pour un client (l’application
peut préciser si un objet est visible ou non visible d’un client) – Gestion de priorités pour les mise à jour d’objets – Emission des données statiques à la connexion – RPC – Cryptage symétrique et asymétrique – Gestion des firewall et des NAT – Gestion d’un serveur maître pour rechercher des parties
l C++ sous GPL ou en version commerciale (?) l Disponible à http://opentnl.sourceforge.net/ et
https://github.com/nardo/tnl2 (v2) 19
![Page 20: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/20.jpg)
20
Raknet
l Client/Serveur ou Peer to Peer l Multiplateforme : Windows, Linux, OS X, iOS,
Xbox et PS3 l Fonctionnalités :
– Compression des messages – Plusieurs QoS (fiable, séquence, ordre) – Cryptage – Gestion des mises à jour (auto patcher) – Gestion de la voix sur IP (compression ~ 2 kbps)
20
![Page 21: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/21.jpg)
21
Raknet
– Système de réplication d’objets (sérialisation) – RPC – Evènements en réseau (signaux et slots) – Emulation de réseaux (latence, bande passante limitée) – Serveur maître/lobby spécifique ou utilisation de Steam,
Xbox LIVE ou PlayStation Network – Gestion des firewall/NAT
l C++/C# - License Indie gratuite + licence commerciale l http://www.jenkinssoftware.com/
21
![Page 22: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/22.jpg)
22
Unreal
l Moteur de jeu de Unreal l Client/serveur FPS
– Réplication d’objets avec priorités – QoS multiples – Filtrage des objets non visibles (lien avec arbre BSP) – RPC – Quantification pour compresser les données – Interpolation/Extrapolation
l Utilisable avec UnrealScript (gratuit pour les mods) l Licence commerciale l Doc : http://unreal.epicgames.com/Network.htm 22
![Page 23: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/23.jpg)
23
HLA (High Level Architecture)
l Motivations – Permettre l’interopérabilité et la réutilisabilité des simulations
existantes et futures – Définir une architecture fonctionnelle qui puisse s’implémenter sur
plusieurs architecture matérielles, logicielles et réseaux – Tenter de résoudre les problèmes des standards précédents comme
DIS l Disponibilité
– Documentation disponible à : http://hla.dmso.mil/ – Version opensource du logiciel :
http://savannah.nongnu.org/projects/certi/
23
![Page 24: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/24.jpg)
24
HLA (High Level Architecture)
l Composants – Règles de fédération : principes généraux qui doivent être appliqués
lors du développement d'une fédération compatible avec HLA – RTI (Run-Time Infrastructure) : une infrastructure d'exécution
distribuée qui gère toutes les communications dans une fédération – OMT (Object Modeling Template) : modèle orienté-objet générique
qui permet de définir les composants d'une fédération
24
![Page 25: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/25.jpg)
25
HLA (High Level Architecture)
l Exemple d’architecture (CERTI)
25
TCP Socket
Federate 1
libRTI
RTIA
RTIG
Federate 2
libRTI
RTIA
Federate n
libRTI
RTIA
WAN
LAN
UNIX Socket
HLA interface
![Page 26: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/26.jpg)
26
HLA (High Level Architecture)
l La bibliothèque de classes (libRTI) – Offre des services aux fédérés – Le fédéré communique avec les RTIA, RTIG et les autres fédérés au
travers de l’appel de méthodes de libRTI – Ecrite en C++ (pour CERTI)
26
Code du Fédéré
Fédéré
CLR
Les Composants Locaux de la RTI (CLR) offrent des fonctionnalités externes spécifiées dans IFSpec
Ambassadeur du Fédéré
Ambassadeur de la RTI
Le code d’un fédéré doit définir la classe abstraite FederateAmbassador
Le CLR contient le code de la classe RTIAmbassador
![Page 27: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/27.jpg)
27
HLA (High Level Architecture)
27
Fédéré Blanc Fed. Code
LRC
L’utilisateur démarre son Fédéré
2
Le Fédéré crée la Fédération
3
Les autres Fédérés rejoignent
la Fédération Fédéré Mauve Fed. Code
LRC
Fédéré Vert Fed. Code
LRC
RTIG L’utilisateur démarre
la RTI 1
RTIA
RTIA RTIA
Le RTIA est démarré automatiquement
![Page 28: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/28.jpg)
28
HLA (High Level Architecture)
l Exemple de base du code d’un fédéré – 1. Créer une fédération si elle n’existe pas – 2. Rejoindre la fédération – 3. Déclarer les données de la fédération qui doivent être publiées et
celles auxquelles on veut s’abonner – 4. Envoyer et recevoir des données vers/depuis les autres fédérés – 5. Quitter la fédération – 6. Détruire la fédération si elle est vide
l Autres RTI (commerciales) – pRTI de pitch.se – Mäk RTI de Mäk (mak.com) 28
![Page 29: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/29.jpg)
29
Openskies
l Plusieurs API – bas niveau : HLA (RTI) – IET (Import Export Table) génère le code HLA pour mettre à jour
des objets – P2PS (Point to Point Switch Messaging Interface) permet d’envoyer
des messages d’un objet à un autre objet quelque soit leur localisation et même s’ils ne sont pas encore créés (bufferisation)
29
![Page 30: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/30.jpg)
30
Openskies
l Architectures – Architecture Peer to Peer ou client/multi-serveur – Serveurs linux dédiés (distribution linux spéciale) – 3 types de serveurs
l LobbyManager (point d’entrée - authentifie - permet de trouver un FedHost)
l FedHost (s’occupe du routage des messages entre fédérés) – Chacun gère jusqu’à 500 fédérés
l Game Server (s’occupe du jeu : IA...) – Un ou plusieurs – Codés comme des fédérés
30
![Page 31: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/31.jpg)
31
Openskies
31
![Page 32: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/32.jpg)
32
Openskies
– API FedHost pour développer des modules de filtrage (culling) l Utilisation possible d’une grille 2D pour filtrer sur la position
32
![Page 33: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/33.jpg)
33
Openskies
l C++ - Windows pour les fédérés l Licence de développement gratuite, licence commerciale. l http://www.openskies.net/
33
![Page 34: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/34.jpg)
34
Vega Prime (HLA/DIS mod) l Vega Prime
– Application graphique pour générer des simulateurs 3D temps-réel sans codage
– Nombreux modules (marine, effets atmosphériques, infra-rouge, radar...)
l HLA/DIS module – Permet de rajouter la distribution avec HLA en utilisant le RPR
FOM (équivalent de DIS pour HLA) ou avec DIS – Sans codage – Basé sur VR-Link de Mâk (plate-forme de répartition fonctionnant
avec DIS, HLA ou TENA) l http://www.presagis.com/products/multigen_paradigm/
details/vegaprime/ 34
![Page 35: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/35.jpg)
35
Delta 3D
l “Clone” opensource de Vega Prime l Basé sur de nombreux toolkits
– Open Scene Graph (3D) – Open Dynamics Engine (ODE - moteur physique) – Open AL (audio)
l Classes de haut niveau – Toolkit Réseau spécifique – Encapsulation de HLA (RTI spécifique mais adaptable)
l Outil graphique pour gérer des simulations 3D temps-réel
35
![Page 36: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/36.jpg)
36
Multiverse
l Environnement Client/Serveur(s) complet pour faire des MMORPG (?)
– Gestion de quêtes, de compétences, combat, communication, inventaire et échanges, artisanat, économie, IA, facturation...
– Outils pour concevoir le monde virtuel – World Browser (pour trouver les mondes)
l APIs pour customiser le client et le serveur l Licence commerciale (10% des revenus du jeu) l http://multiverse.net/
36
![Page 37: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/37.jpg)
37
Multiverse
37
![Page 38: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/38.jpg)
38
Multiverse
l Client écrit en C++ avec Ogre3D et customisable en Python (y compris l’interface graphique)
l Serveur écrit en Java l JDBC pour la persistance l architecture à plug-ins
– plug-ins standards (tous optionnels) – API pour développer des plug-ins spécifiques
38
![Page 39: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/39.jpg)
39
Multiverse
39
![Page 40: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/40.jpg)
40
Multiverse
l Outils – ModelViewer – Terrain Generator – WorldBuilder
40
![Page 41: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/41.jpg)
41
3DVIA Virtools
l Virtools est un générateur d’applications 3D temps-réel
l http://www.3ds.com/products/3dvia/3dvia-virtools/
41
![Page 42: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/42.jpg)
42
Virtools Multiuser Server
l Virtools est un générateur d’applications 3D temps-réel
l http://www.virtools.com/
42
![Page 43: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/43.jpg)
43
3DVIA Virtools
l Fonctionnalités – Importation d’objets – Gestion des animations – Création de scripts graphiques (building blocks et flux) – SDK pour développer des bb ou une application complète – plugin pour le web
l Multiuser Server – Permet de gérer les aspects répartis – Architecture : peer server (un client gère les aspects serveur) ou
client/serveur – Gère du dead-reckoning – Peu de détails sur l’implémentation 43
![Page 44: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/44.jpg)
44
Unity 3D et équivalents
l De nombreux équivalents à Virtools existent. La plupart utilisent un langage de script à la place du visual programming :
– Unity 3D : utilise C# ou javascript, pour Mac, PC, iPhone, Android, Wii, gratuit pour des jeux indépendants, licence commerciale ($~1500) pour certaines options (ombres temps-réel, fonctionnement sur téléphone...)
– Shiva 3D : utilise lua, environnement de dev pour PC, exec sur PC, Mac, Linux, iPhone, Wii, version gratuite pour s’entrainer, licence commerciale (€~3000)
– Quest3D, Nova (Vertice), WorldWiz...
44
![Page 45: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/45.jpg)
45
Ryzom Core/NeL
l Moteur pour MMO l Développé pour le jeu Ryzom (http://www.ryzom.com) l Toutes les bibliothèques sont en AGPL v3
– 3D, réseau, IA, moteur physique simple… l Toutes les ressources 3D et sons sont en Creative Commons l NelNet
– Propose une architecture à “shards” typique – Chaque shard a un serveur d’administration et 1 ou
plusieurs serveurs de jeu qui font fonctionner un ensemble de services (persistance, IA, sessions, proxy…) 45
![Page 46: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/46.jpg)
46
Ryzom Core/NeL
l C++ pour Linux/Windows (serveur) et Linux/windows/OS X (client)
l http://dev.ryzom.com/wiki/ryzom/NeL_Net
46
![Page 47: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/47.jpg)
47
BigWorld
l Moteur de MMO clé en main l Livré avec un MMO complet à customiser l Adopté par un grand nombre de MMO en
développement comme World of Tanks l Côté serveur
– équilibrage des charges dynamique – re-découpe les zones selon la charge – gère de la tolérance aux pannes – permet de gérer des instances et des shards voire
plusieurs jeux sur un même cluster 47
![Page 48: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/48.jpg)
48
BigWorld
48
![Page 49: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/49.jpg)
49
BigWorld
– Permet d’ajouter et retirer dynamiquement des serveurs au cluster – Gère des priorités et des niveaux de détails (quantification ?) pour
les données à transférer de façon à gérer au mieux la bande passante disponible
– Codé en C++ mais contrôlable via Python – Offre des outils de monitoring
l Côté client – Gestion de Windows et Xbox 360 (?) – Moteur 3D spécifique de bon niveau
l Outils pour produire du contenu l http://www.bigworldtech.com/
49
![Page 50: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/50.jpg)
50
BigWorld
l Outils pour produire du contenu – Editeur de mondes : terrain, flore, construction de
bâtiments simplifiée. Outil collaboratif. – Editeur de modèle : voir des modèles exportés avec le
moteur de jeu, éditer les animations – Editeur d’effets de particules
l Licence commerciale (plusieurs centaines de milliers de dollars), Indie ($299/an sans C++, $2999 avec C++), education ($299/an sans C++)
l http://www.bigworldtech.com/ 50
![Page 51: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/51.jpg)
51
Hero Engine
l Solution similaire à BigWorld l Outils similaires mais plus interactifs/collaboratifs l On édite le MMORPG en utilisant le client du MMORPG l Langage de script HSL l Utilisé pour Star Wars: The Old Republic de BioWare l On peut se connecter gratuitement à une Sandbox pour tester
le moteur l http://www.heroengine.com/
51
![Page 52: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/52.jpg)
52
Hero Engine
52
l Les machines serveur font tourner un ensemble de processus qui sont soit : – Uniques : compilateurs de scripts, gestion des stats,
coordinateur, annuaire des services, gestion de login… – Multiples : serveurs de zones, proxies, simu physique
(PhysX), contenu… l Voir schéma dans le wiki: http://hewiki.heroengine.com/ l Minimum : 1 serveur CentOS avec Oracle (Quad Core Xeon
2GHz, 8 Go RAM, 4 To) + 1 serveur Win Server 2k8 pour le reste (Quad Core Xeon 2 GHz, 8 Go RAM, 1 To)
![Page 53: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/53.jpg)
53
Hero Engine
l HeroCloud – La société gère les serveurs – ~ $5000 par équipe (max 25 dev) – ~$2000/an (1ère année offerte) – 15% de Royalties
l Achat complet possible (probablement au même prix que BigWorlds)
53
![Page 54: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/54.jpg)
54
Jeux et chatworld customisables
l Jeux customisables – Quake (réalité augmentée : ARQuake, IA : bots - idem
Unreal) – ORTS (moteur de RTS pour tester des algos d’IA) – Neverwinter Nights (enseignement de l’Anglais et des
maths en Angleterre, du journalisme aux USA et pour des recherches en IA)
l Chatworld customisable – Second Life (utilisé pour des études médicales,
sociologiques et pour l’enseignement) – OpenGrid (version Open Source des serveurs SL) 54
![Page 55: Intergiciels pour les Jeux en Réseauxtorguet.net/cours/RVD/MiddlewareRVDJxRx.pdf · 2011-01-24 · 3 Introduction ! Middleware/Intergiciel : couche logicielle qui se place entre](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc53dfad6a402d6666f28b/html5/thumbnails/55.jpg)
55
Conclusion
l Intergiciels généralistes – Peu adaptés sauf pour des applications avec peu d’utilisateurs (car trop
« fiables » et trop « génériques ») – Corba 3 avec ses extensions TR ou ICE pourraient être plus
intéressants l Intergiciels spécifiques
– Plus ils sont de haut niveau, plus ils sont spécifiques à un type d’application (FPS ou MMO)
– Peu utilisés pour les jeux à gros succès (sauf Unreal Engine) – Très intéressants pour s’entraîner (développer son premier jeu en
réseau), pour les indépendants ou pour la recherche (en IA, en 3D, en psycho, socio...) 55