Logo Khaganat

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:tag:informatique:ryzom_core:start [2016/11/13 20:57] – [Le serveur de jeu] YannKfr:tag:informatique:ryzom_core:start [2023/06/30 21:26] (Version actuelle) YannK
Ligne 1: Ligne 1:
-====== Ryzom Core ======+====== OpenNeL /Ryzom Core ======
  
 {{ :fr:tag:informatique:ryzom_core:ryzom_core.jpg?400 |}} {{ :fr:tag:informatique:ryzom_core:ryzom_core.jpg?400 |}}
  
-Le moteur de jeu utilisé pour créer le [[fr:tag:informatique:mmorpg:start|MMORPG]] de [[um1>Khanat]]. Il s'agit d'un moteur libre avec client de jeu en 3D, dont le rendu graphique est assuré par le moteur NeL.+Le moteur de jeu utilisé pour créer le [[fr:tag:informatique:mmorpg:start|MMORPG]] de [[um1>Khanat]]. Il s'agit d'un moteur libre avec systèmes serveur et client de jeu en 3D, dont le rendu graphique est assuré par le moteur [[fr:tag:graphisme:3d:nel:start|NeL]]. Nous avons abandonné l’usage du client pour en développer un avec le [[fr:godot:start|Godot Engine]]. Nous conservons néanmoins toute la partie serveur.
  
 {{INLINETOC}} {{INLINETOC}}
  
-===== Présentation générale du système Ryzom Core =====+===== Présentation générale du système OpenNeL / Ryzom Core =====
  
-Ryzom Core se base sur une architecture de serveur et de clients. Les clients sont installés par les joueurs sur leur ordinateur, et le serveur désignant l’ensemble des services qui permettent de mettre tous ces clients en relation.+OpenNeL / Ryzom Core se base sur une architecture de serveur et de clients. Les clients sont installés par les joueurs sur leur ordinateur, et le serveur désignant l’ensemble des services qui permettent de mettre tous ces clients en relation.
  
-==== Le client ====+<WRAP center round info 60%> 
 +Lisez aussi [[fr:ryzom_data|cette présentation synthétique]] de l'organisation technique de OpenNeL / Ryzom Core. 
 +</WRAP> 
 + 
 +==== Le client (abandonné par Khaganat) ====
  
 Il est composé de plusieurs éléments : Il est composé de plusieurs éléments :
Ligne 26: Ligne 30:
 Parmi les données graphiques, on trouve surtout des .shape, des .ig et des .dds. Les deux premiers sont des fichiers 3D utilisés par le moteur de rendu du jeu (NeL), et le troisième est un format optimisé pour le rendu des jeux en 3D (on peut également utiliser du .png - ou du targa). Parmi les données graphiques, on trouve surtout des .shape, des .ig et des .dds. Les deux premiers sont des fichiers 3D utilisés par le moteur de rendu du jeu (NeL), et le troisième est un format optimisé pour le rendu des jeux en 3D (on peut également utiliser du .png - ou du targa).
  
-Il y a ensuite tout un tas de fichiers de gameplay, ce sont les Data Sheets (qui sont sous forme binarisée pour éviter les exploits) et les Primitives. Ces derniers sont les éléments de base qui permettent de construire le monde, on y définit tout. Il y a un script qui fait une sorte de compilation des Data Sheets. Ceux-ci sont des fichiers xml très hiérarchisés et standardisés qui permettent de créer les données pour gérer tous les aspects du monde par le serveur et/ou le client. On y trouve toutes les créatures décrites, toutes les compétences, tous les objets etc. Rien que dans les fichiers de définition, il y en plusieurs centaines. Un jeu comme Ryzom peut représenter des milliers de Data Sheets au final. Il est nécessaire de générer une DS pour chaque type de matière première, de chaque qualité, de chaque pays (par exemple). Ça constitue comme une vaste encyclopédie de ce qui est possible. Les Primitives constitueraient plutôt l’atlas de ce qui existe. Elles se basent bien sûr sur les DS mais elles décrivent exactement quoi est où et comment il doit réagir/interagir. C’est là qu’on code les missions, les PNJs, les groupes de mob, les dépôts de matières premières, les conditions d’exploitation etc.+Il y a ensuite tout un tas de fichiers de gameplay, ce sont les Data Sheets ("DS", qui sont sous forme binarisée pour éviter les exploits faciles) et les Primitives. Ces derniers sont les éléments de base qui permettent de construire le monde, on y définit tout. Il y a un script qui fait une sorte de compilation des Data Sheets. Ceux-ci sont des fichiers xml très hiérarchisés et standardisés qui permettent de créer les données pour gérer tous les aspects du monde par le serveur et/ou le client. On y trouve toutes les créatures décrites, toutes les compétences, tous les objets etc. Rien que dans les fichiers de définition, il y en plusieurs centaines. Un jeu comme Ryzom peut représenter des milliers de Data Sheets au final. Il est nécessaire de générer une DS pour chaque type de matière première, de chaque qualité, de chaque pays (par exemple). Ça constitue comme une vaste encyclopédie de ce qui est possible. Les Primitives constitueraient plutôt l’atlas de ce qui existe. Elles se basent bien sûr sur les DS mais elles décrivent exactement quoi est où et comment il doit réagir/interagir. C’est là qu’on code les missions, les PNJs, les groupes de mob, les dépôts de matières premières, les conditions d’exploitation etc.
  
 ==== Le serveur ==== ==== Le serveur ====
Ligne 32: Ligne 36:
 La [[fr:serveur_tour|liste des services distribués]] est disponible. La [[fr:serveur_tour|liste des services distribués]] est disponible.
  
-On trouve par exemple un service qui gère les Intelligences Artificielles par continent. Le système peut déporter plein de services sur des machines annexes, il a été conçu voilà 15 ans, à un moment où les ordinateurs étaient bien moins puissants. Par ailleurs, le système a été conçu pour minimiser les échanges de données. On peut jouer sans souci avec une clé 3G. C’est cette légèreté qui permet ce que même des très gros jeux ne gèrent pas toujours bien : des événements à plus de 200 joueurs en contact visuel.+On trouve par exemple un service qui gère les Intelligences Artificielles par continent. Le système peut déporter plein de services sur des machines annexes, il a été conçu voilà 15 ans, à un moment où les ordinateurs étaient bien moins puissants. Cela permet aussi une meilleure montée en charge. Par ailleurs, le système a été conçu pour minimiser les échanges de données. On peut jouer sans souci avec une clé 3G. C’est cette légèreté qui permet ce que même des très gros jeux ne gèrent pas toujours bien : des événements à plus de 200 joueurs en contact visuel.
  
 Le serveur se base sur les Primitives et les Data Sheets pour gérer les interactions avec joueurs, mais lui a les données non binarisées, et il en a plus, beaucoup plus. Alors que le client n'a que les infos "statiques" (l'emplacement des bâtiments par exemple), le serveur a aussi les données de ce qui va changer (l'endroit où apparaissent les créatures par exemple).  Il intègre aussi des fichiers de traduction dédiés, qui lui permettent de construire des phrases de façon dynamique, maîtrisant très bien la localisation. Le serveur se base sur les Primitives et les Data Sheets pour gérer les interactions avec joueurs, mais lui a les données non binarisées, et il en a plus, beaucoup plus. Alors que le client n'a que les infos "statiques" (l'emplacement des bâtiments par exemple), le serveur a aussi les données de ce qui va changer (l'endroit où apparaissent les créatures par exemple).  Il intègre aussi des fichiers de traduction dédiés, qui lui permettent de construire des phrases de façon dynamique, maîtrisant très bien la localisation.
Ligne 38: Ligne 42:
 Il existe un certain nombre de commandes qu’on peut rentrer sur le terminal de gestion du shard mais aussi des commandes qu’on peut rentrer dans son chat en jeu, comme la commande “/emote”. Si on a les privilèges suffisant, ça permet de faire des opérations de MJ/DEV : se téléporter, faire apparaître des créatures, des objets etc. Ce sont ces commandes qu’utilisent les CSR et Anim et que Winch Gate remplace peu à peu par des scripts Arkitect. Cela permet de gérer un peu le gameplay en direct pour des choses pas trop complexes. Pour les choses qui doivent durer ou être bien gérées, il faut créer une Primitive. Il existe un certain nombre de commandes qu’on peut rentrer sur le terminal de gestion du shard mais aussi des commandes qu’on peut rentrer dans son chat en jeu, comme la commande “/emote”. Si on a les privilèges suffisant, ça permet de faire des opérations de MJ/DEV : se téléporter, faire apparaître des créatures, des objets etc. Ce sont ces commandes qu’utilisent les CSR et Anim et que Winch Gate remplace peu à peu par des scripts Arkitect. Cela permet de gérer un peu le gameplay en direct pour des choses pas trop complexes. Pour les choses qui doivent durer ou être bien gérées, il faut créer une Primitive.
  
-==== Les outils Ryzom Core ====+==== Les outils OpenNeL / Ryzom Core ====
 Historiquement il existait 3 outils : Object Viewer pour tout ce qui avait trait aux graphismes (création et gestion des systèmes de particules, de la microvégétation etc.), Georges Editor pour les Datasheets et World Editor pour les Primitives. Plus un plugin dédié à 3DSMax pour créer les objets 3D (.ig et shape) mais aussi et surtout créer les paysages (.zone) que ce soient des éléments de briques LIGO (donc pouvant ensuite être assemblés dynamiquement comme des LEGOs justement) ou utilisés tels quels (comme Pyr sur le monde d’Atys par exemple). Historiquement il existait 3 outils : Object Viewer pour tout ce qui avait trait aux graphismes (création et gestion des systèmes de particules, de la microvégétation etc.), Georges Editor pour les Datasheets et World Editor pour les Primitives. Plus un plugin dédié à 3DSMax pour créer les objets 3D (.ig et shape) mais aussi et surtout créer les paysages (.zone) que ce soient des éléments de briques LIGO (donc pouvant ensuite être assemblés dynamiquement comme des LEGOs justement) ou utilisés tels quels (comme Pyr sur le monde d’Atys par exemple).
  
-Les gens de Ryzom Core ont fini par créer un super outil (basé sur une version QT de Object Viewer au départ), qui s’appelle désormais Ryzom Core Studio. Il est conçu comme un coeur avec des plugins. Il y a donc un plugin Object Viewer, un autre World Editor, un autre Georges mais pas seulement. Ils ont ajouté un éditeur d’interface, un gestionnaire de paquets .bnp, un gestionnaire de traduction…+Les gens de Ryzom Core ont fini par créer un super outil (basé sur une version QT de Object Viewer au départ), qui s’appelle désormais Ryzom Core Studio. Il est conçu comme un cœur avec des plugins. Il y a donc un plugin Object Viewer, un autre World Editor, un autre Georges mais pas seulement. Ils ont ajouté un éditeur d’interface, un gestionnaire de paquets .bnp, un gestionnaire de traduction…
  
 ==== Les sources ==== ==== Les sources ====
Ligne 55: Ligne 59:
 On a ensuite les données de jeu : data sheets et primitives. Si les data sheets sont modifiées on doit les recompiler pour le client et les replacer dans le serveur puis le relancer (et le fournir aux clients bien sûr). Donc chaque fois qu’on veut créer un nouvel objet, une nouvelle compétence…, il faut les recompiler rapidement et tout relancer, puis patcher les clients. Le système de patchlet de Ryzom est quasiment opérationnel (il n’est pas encore intégralement déployé en raison de soucis de compatibilité de la dernière version LUA avec Windows, quand ce sera bon, elle sera implémentée). Les primitives sont plus souples, il semble qu’on puisse plus facilement les recharger sans devoir relancer tout le shard. On a ensuite les données de jeu : data sheets et primitives. Si les data sheets sont modifiées on doit les recompiler pour le client et les replacer dans le serveur puis le relancer (et le fournir aux clients bien sûr). Donc chaque fois qu’on veut créer un nouvel objet, une nouvelle compétence…, il faut les recompiler rapidement et tout relancer, puis patcher les clients. Le système de patchlet de Ryzom est quasiment opérationnel (il n’est pas encore intégralement déployé en raison de soucis de compatibilité de la dernière version LUA avec Windows, quand ce sera bon, elle sera implémentée). Les primitives sont plus souples, il semble qu’on puisse plus facilement les recharger sans devoir relancer tout le shard.
  
-Enfin, les sources pour les exécutables sont très volumineuses. On y trouve aussi bien les sources (codé en c++) du client, du serveur que du moteur de jeu 3D, créé spécifiquement, appelé NeL que les sources pour les outils (Ryzom Core Studio mais aussi un certain nombre d’utilitaires en ligne de commande), et même pour le plugin 3SMax. Tout y est. Quand on fait une compilation, ça dépose les résultats dans divers répertoires, de façon intriquée selon les options indiquées par le compilateur.+Enfin, les sources pour les exécutables sont très volumineuses. On y trouve aussi bien les sources (codé en c++) du client, du serveur que du moteur de jeu 3D, créé spécifiquement, appelé [[fr:tag:graphisme:3d:nel:start|NeL]] que les sources pour les outils (Ryzom Core Studio mais aussi un certain nombre d’utilitaires en ligne de commande), et même pour le plugin 3DSMax. Tout y est. Quand on fait une compilation, ça dépose les résultats dans divers répertoires, de façon intriquée selon les options indiquées par le compilateur.
  
-Nous mettons à disposition toutes les données de Khanat via [[https://git.khaganat.net/|un service GitLab]]. +Nous mettons à disposition toutes les données de Khanat via [[gitlab>/|un service GitLab]]. 
 \\ Nous avons réalisé une présentation avec des informations sur [[fr:principe_de_developpement_sur_khaganat|la façon dont nous organisons nos dépôts et contributions]]. \\ Nous avons réalisé une présentation avec des informations sur [[fr:principe_de_developpement_sur_khaganat|la façon dont nous organisons nos dépôts et contributions]].
  
Ligne 84: Ligne 88:
 ==== Le serveur de jeu  ==== ==== Le serveur de jeu  ====
   * [[fr:shard|Installer un serveur de jeu]]   * [[fr:shard|Installer un serveur de jeu]]
-  * [[fr:commandes_temp|Les commandes du moteur Ryzom Core]] +  * [[fr:commandes_temp|Les commandes du moteur OpenNeL / Ryzom Core]] 
-  * [[fr:shard_commands|La gestion d'un 'shard' Ryzom Core]]+  * [[fr:shard_commands|La gestion d'un 'shard' OpenNeL / Ryzom Core]]
   * [[fr:ds:rcskillcodes|Les codes des Compétences (Skills)]]   * [[fr:ds:rcskillcodes|Les codes des Compétences (Skills)]]
-  * [[fr:informations_hardcodees|Les informations hardcodées en C++ dans le serveur Ryzom Core]]+  * [[fr:informations_hardcodees|Les informations hardcodées en C++ dans le serveur OpenNeL / Ryzom Core]]
   * [[fr:creer_un_univers|Créer un univers de jeu]]   * [[fr:creer_un_univers|Créer un univers de jeu]]
   * [[fr:creation_nouveau_continent|Création d'un nouveau continent]]   * [[fr:creation_nouveau_continent|Création d'un nouveau continent]]
Ligne 99: Ligne 103:
  
  
-==== Le client Ryzom Core ==== +==== Le client OpenNeL / Ryzom Core ’abandonné par Khaganat) ==== 
-  * [[fr:jouer|Utiliser le client Ryzom Core version Khanat]]+  * [[fr:jouer|Utiliser le client OpenNeL / Ryzom Core version Khanat]]
   * [[fr:debugmode|La version DebugMode du client]]   * [[fr:debugmode|La version DebugMode du client]]
   * [[fr:client_config|Les fichiers de configuration du client]]   * [[fr:client_config|Les fichiers de configuration du client]]
Ligne 107: Ligne 111:
   * [[fr:creer_icone_objet|Création des icônes d'inventaire pour le client]]   * [[fr:creer_icone_objet|Création des icônes d'inventaire pour le client]]
   * [[fr:creer_background_lancement|Création des images de lancement du client]]   * [[fr:creer_background_lancement|Création des images de lancement du client]]
-  * [[fr:error|Les erreurs au lancement du client Ryzom Core]]+  * [[fr:error|Les erreurs au lancement du client OpenNeL / Ryzom Core]]
   * [[fr:capture_video_ig|Comment faire des captures vidéo avec le client]]   * [[fr:capture_video_ig|Comment faire des captures vidéo avec le client]]
   * [[fr:commandes_client_temp|Les commandes du client]]   * [[fr:commandes_client_temp|Les commandes du client]]
   * [[fr:chat_ig|Le Chat InGame]]   * [[fr:chat_ig|Le Chat InGame]]
  
-==== Outils Ryzom Core /NeL3D /divers ====+==== Outils OpenNeL / Ryzom Core / Divers ====
   * [[fr:principe_de_developpement_sur_khaganat|Récupérer les données de Khanat]]   * [[fr:principe_de_developpement_sur_khaganat|Récupérer les données de Khanat]]
-  * [[fr:outils_rc|Les outils Ryzom Core]]+  * [[fr:outils_rc|Les outils OpenNeL / Ryzom Core]]
   * [[fr:linux_pipeline|Le pipeline de génération graphique NeL sous Linux]]   * [[fr:linux_pipeline|Le pipeline de génération graphique NeL sous Linux]]
   * [[fr:pluginblender|Réflexion sur la réalisation d'un plugin d'export depuis Blender vers NeL3D]]   * [[fr:pluginblender|Réflexion sur la réalisation d'un plugin d'export depuis Blender vers NeL3D]]
Ligne 121: Ligne 125:
   * [[fr:nel_texture|La gestion des textures par le moteur graphiques NeL3D]]   * [[fr:nel_texture|La gestion des textures par le moteur graphiques NeL3D]]
   * [[fr:multitexturage|Multitexturage d'un objet NeL3D]]   * [[fr:multitexturage|Multitexturage d'un objet NeL3D]]
-  * [[fr:lexique|Lexique de termes du moteur Ryzom Core]]+  * [[fr:lexique|Lexique de termes du moteur OpenNeL / Ryzom Core]]
  
-==== Tous les articles Ryzom Core ====+==== Tous les articles OpenNeL / Ryzom Core ====
 <wrap info> <wrap info>
 Ceci est une liste automatique de tous les articles portants le tag **Ryzom Core**. Ceci est une liste automatique de tous les articles portants le tag **Ryzom Core**.
Ligne 135: Ligne 139:
 ~~NOCACHE~~ <catlist -noHead -noAddPageButton > ~~NOCACHE~~ <catlist -noHead -noAddPageButton >
  
-{{tag>informatique}}+{{tag>informatique client_rc_obsolete  Obsolète}}
  
CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/tag/informatique/ryzom_core/start.1479067036.txt.gz · Dernière modification : 2021/12/03 19:18 (modification externe)

Licences Mentions légales Accueil du site Contact