Logo Khaganat
Traductions de cette page?:

Ceci est une ancienne révision du document !


FIXME Cette page n'est pas encore traduite entièrement. Merci de terminer la traduction
(supprimez ce paragraphe une fois la traduction terminée)

Ryzom Data

Parce que je trouve que ce texte est une bonne introduction à la compréhension des donnée dans RyzomCore jet que je ne l'ai vu nul part (et aucun lien vers lui) avant de tomber dessus par accident je le met ici et le traduit en français par la même occasion.

Osquallo

Texte de Matt Raykowski (sfb) sur ryzomcore.org

(Note du traducteur: les termes tel que “Shard”, “domains”, “George sheets”,.. sont laissé en anglais car ils seront, très souvent, utilisés en anglais et je les considèrent donc comme des termes techniques et ne souhaite pas embrouillé les lecteurs en utilisant des mots fr qui n'auront plus aucun lien avec les éléments concrets utiliser ensuite.)

Ryzom Core: Les données sont partout!

(05 Février 2013)

Ryzom Core possède une énorme quantité de données pour faciliter le monde et son fonctionnement général. Cependant la nature des données de Ryzom Core embrouille souvent les nouveau utilisateur de la plateforme. Beaucoup voient la procédure de création MySQL et sans faute supposent que tout est contenu ici. En réalité les très peu de données sont vraiment contenue dans MySQL puisque la plateforme Ryzom Core a été développé à une époque avant que MySQL puissent été utilisé, de manière sure, pour une charge directe de travail tel que requis pour Ryzom.

Alors où les donnée sont-elles stockées dans RyzomCore ? Il y à une multitude de type et d'endroits. Il y à beaucoup de scénario unique également mais les éléments principaux sont:

  • MySQL pour l'administration du “shard”, les applications “WebIG” les comptes utilisateurs.
  • Georges Sheets pour les données statiques.
  • Primitives pour le contenu du monde et sa disposition.
  • PDR pour la persistance.

Le stockage des données MySQL

La base de données MySQL est uniquement utilisé par les services d'administration générale du shard. C'est la que les services du “shard” et les “domains” sont définis et comment AS (Admin Service / Service d'administration) sais ce qui dois être lancé et où. MySQL est aussi typiquement l'endroit ou toutes les application “Ryzom API” vont stocker leurs données persistantes qui ne sont pas directement lié aux données en jeu. Par exemple une application “boite mail” stockera très probablement les emails dans une base de données MySQL. Quand vous créer un compte pour Ryzom soit par un formulaire d'enregistrement personnalisé ou via la génération automatique activé par défaut votre compte utilisateur et vos privilèges sont stocké dans une base de données MySQL. Ce sont uniquement les informations de base comme le nom le mot de passe, le serveur auquel vous avez accès et avec quels privilèges ( tel que GM ou CSR ).

Georges Sheets

Pour comprendre ce que sont les “Georges Sheets” il faut comprendre ce que Ryzom définit comme “données statiques” à l'opposé du contenu du monde. Alors que les primitives, expliqués ensuite, ne contiennent pas d'informations persistantes et déposent le monde dans sa forme initiale. Les “Georges Sheets” ( qui sont compilé en “Packed sheet” un sujet plus complexe mais essentielement une version binaire compressée des “sheets”) contiennent toutes les données statiques qui définissent des choses comme la faunes, les objects, les sort, et toutes les autre éléments de ce genre. Ces “sheets” définissent els caractéristiques qui mette en place une créatures ou un PNJ mais ne contiennent en fait aucune données specifiques concernent cette créature ou ce PNJ. Ce sont les données de bases utiliser pour mettre le monde en place. Les “Shhets” contiennents également ls autre objets statiques tel que des listes de titres, des éléments définissants les animations et les ensembles d'animation, les continents, les caractèristique de départs des joueurs, et bien plus. Toutes ses données sont contenues dans le dossier code/ryzom/common/data_leveldesign/leveldesign. On modifie ces “sheets” avec l'outils “George Editor” et sont essentielement des fichier XML avec une capacité de relation parent/héritage.

Primitives

While you can go into Georges Editor and create an NPC creature sheet that doesn't put that NPC anywhere on the map. In fact it doesn't necessary describe a specific NPC. Primitives, edited by the World Editor tool, define what the base version of the world, untouched by players, looks like. The layout defined in the primitives is what the world will look like when the shard is first started. To illustrate the differences between primitives and sheets when you add a new NPC you provide all of the details regarding that NPC including the ability to change its equipment and color. One of the things you do when defining an NPC is choose the sheet that defines them. This means that you create one NPC creature sheet as a template and then are able to layout actual NPCs with defined characteristics throughout the world.In Ryzom Core you cannot place a specific mob (fauna) - as mobs and NPCs are distinctly different things. Instead you define what their patterns are and let the AI take over spawning, migration and so on. In the primitive you can configure this behavior but your primitive content will always reference a sheet which defines the basic characteristcs of the fauna as a template.You can see the pattern now - Georges sheets provide the template, primitives provide the layout and structure and players provide the evolution. But since neither Georges or primitives store the world state that brings us to the next part.All of these are located in code/ryzom/common/data_leveldesign/primitives. You edit these sheets with the World Editor tool and they're essentially an XML format (called Ligo).

PDR Data Stores

So if MySQL, Georges and Primitives aren't keeping track of characters, equipment, guilds and other such things that persist through shard reboots what is? The Ryzom Core supporting framework, NeL (Nevrax Library) has a rich and sophisticated serialization system. Nearly any object in Ryzom Core can be serialized into a stream to be transmitted over the wire or saved to a file. This means instead of having to translate a character object into MySQL insert/update statements Ryzom Core is able to simple pass the character object to a NeL file object and save it to disk or read it from disk.The Ryzom Core service infrastructure takes this one step further with the PDR or Persistent Data Record system. This sophisticated system is able to replicate changes to other services in the shard and is maintained to disk through a master/slave backup service. This is the real source of runtime persistence in Ryzom Core. Where the data is stored is in the shards saveshard folder and depends on the type of data.For example lets use characters. Characters are stored in code/ryzom/server/saveshard/characters in a pattern that the services determine. The actual file names are something like code/ryzom/server/saveshard/characters/001/account10pdr.bin where the 001 is simply a mechanism the services use to break up accounts into multiple folders (so you don't end up with 100k files in a single folder), the other two numbers (1 and 0) refer to account ID and character slot, respectively.You can view the contents of the PDR bins using the pdr_util. While not encouraged as this is typically internal Ryzom Core data you can extract a PDR into XML, modify it and then re-assemble it using this tool. This would be helpful if you were, for example, writing a script to mass update characters for some reason.

Source: Text from Matt Raykowski (sfb) on ryzomcore.org

CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/ryzom_data.1485764239.txt.gz · Dernière modification : 2021/12/03 19:18 (modification externe)

Licences Mentions légales Accueil du site Contact