Table des matières

Datasheets

Toute les informations sur l'univers de jeu sont générées à partir de formulaires de données écrits sous l'aspect de fichiers xml. Ils sont généralement édités par le biais de Georges Editor mais peuvent également être modifiés par un simple éditeur de texte, comme n'importe quel fichier xml1). Pour se familiariser avec l'aspect de ces données, il est possible d'aller consulter ceux qui sont fournis avec les sources du serveur Ryzom Core dans votre arborescence dans :

code/ryzom/common/data_leveldesign/leveldesign


Les fichiers .dfn et .typ sont dans le sous-répertoire DFN.

Les formulaires FORM

Un formulaire contient des éléments formels obligatoires.

Exemple

default.sample_config
<?xml version="1.0"?>
<FORM Version="0.0" State="modified">
        <STRUCT>
                <ATOM Name="TestVal1" Value="1"/>
                <ARRAY Name="TestArray">
                        <ATOM Value="Array Val 1"/>
                        <ATOM Value="Array Val 2"/>
                </ARRAY>
                <ARRAY Name="CoolFilesInfo">
                        <STRUCT>
                                <ATOM Name="ShortName" Value="Tiger Attack"/>
                                <ATOM Name="Ranking" Value="55"/>
                        </STRUCT>
                        <STRUCT>
                                <ATOM Name="ShortName" Value="Crazy Car Jump"/>
                                <ATOM Name="Ranking" Value="40"/>
                        </STRUCT>
                </ARRAY>
                <STRUCT Name="PositionData">
                        <ATOM Name="x" Value="1"/>
                        <ATOM Name="y" Value="1"/>
                        <ATOM Name="z" Value="2"/>
                </STRUCT>
        </STRUCT>
</FORM>

La première chose à indiquer est le type de fichier :

<?xml version="1.0"?>

Il faut ensuite,dans l'ordre :

Pour pouvoir créer des formulaires, on va se baser sur un système de parentage et d'héritage.
Un formulaire nécessite un fichier de définition au minimum (.dfn), la première définition chargée se basant sur l'extension du nom du formulaire.
Exemple
Si vous créez un formulaire qui s'appelle exemple.config_data, Georges chargera la définition config_date.dfn (et donc toutes les définitions et types qu'elle contient) avant d'exécuter ce formulaire de données.
Commençons donc par voir comment établir les Définitions (fichiers .dfn) et les Types (fichiers .typ).

Les deux types de base : .typ et .dfn

Il existe deux types essentiels : les .typ (type) et les .dfn (définition).
Les Définitions s'expriment elles-mêmes à l'aide de Types.

Les fichiers .dfn et .typ les plus basiques sont classés dans les sources de Ryzom Core dans :
/code/ryzom/common/data_leveldesign/leveldesign/DFN/basics

Les Types .typ

Les Types sont les plus petits blocs d'information qui puissent être enregistrés dans un formulaire Georges. Avant de pouvoir définir des données plus complexes, il est essentiel de mettre en place les types les plus basiques. Créer de tels documents manuellement permet de mieux en comprendre le fonctionnement.

Exemple 1 : int.typ, entier

int.typ
<?xml version="1.0"?>
<TYPE Type="SignedInt" UI="EditSpin" Default="0" Min="-9223372036854775808" Max="9223372036854775807">
</TYPE>

Exemple 2 : boolean.typ, booléen

boolean.typ
<?xml version="1.0"?>
<TYPE Type="String" UI="NonEditableCombo" Default="false">
  <DEFINITION Label="true" Value="true"/>
  <DEFINITION Label="false" Value="false"/
</TYPE>

On le voit dans ces deux exemples, le formulaire Georges .typ contient tout d'abord :

<?xml version="1.0"?>

Puis un élément “TYPE”, qui doit être unique, s'ouvrant par <TYPE> et se fermant par </TYPE>.
Il contient lui-même éventuellement un ou plusieurs éléments “DEFINITION”, : <DEFINITION Label=“” Value=“”/>
Il est possible d'ajouter également un élément “COMMENT” pour donner des indications générales et/ou “LOG” pour garder trace des changements.

Les TYPEs peuvent avoir les caractéristiques suivantes :

Le genre de données renvoyé peut avoir plusieurs valeurs possibles :

Les UI reconnues par Georges et pour lesquelles il saura traiter les données sont :

Chaque élément DEFINITION possède :

Notre fichier .typ de base doit donc ressembler à ça :

base.typ
<?xml version="1.0"?>
<TYPE Type="UnsignedInt/SignedInt/Double/String" UI="Edit/EditSpin/NonEditableCombo/FileBrowser/BigEdit/ColorEdit" [Default=""] [Min=""] [Max=""] [Increment=""]>
  <DEFINITION Label="" Value=""/>
  <DEFINITION Label="" Value=""/>
    <COMMENTS></COMMENTS>
  <LOG>Mon Jan 01 00:00:00 0000 (god) Light, please !</LOG>
</TYPE>

Les Définitions .dfn

Les Définitions indiquent les STRUCT (structures), ARRAY (tableaux) et ATOM (atomes) utilisables dans les formulaires et le type d'information qu'elles fournissent.

UN fichier .dfn se compose de deux éléments :

Exemple

sample_config.dfn
<?xml version="1.0"?>
<DFN>
        <ELEMENT Name="TestVal1" Type="Type" Filename="int.typ" Default="0"/>
        <ELEMENT Name="TestVal2" Type="Type" Filename="int.typ" Default="0"/>
        <ELEMENT Name="WriteVal" Type="Type" Filename="int.typ" Default="0" />
        <ELEMENT Name="TestArray" Type="Type" Filename="string.typ" Array="true"/>
        <ELEMENT Name="CoolFilesInfo" Type="Dfn" Filename="coolfilesinfo.dfn" Array="true"/>
        <ELEMENT Name="TestByBracket" Type="Type" Filename="boolean.typ" Array="true"/>
        <ELEMENT Name="PositionData" Type="Dfn" Filename="positiondata.dfn" Array="false" />
</DFN>

Là encore, le formulaire Georges .dfn contient tout d'abord :

<?xml version="1.0"?>

Puis on voit <DFN></DFN> qui encadra des <ELEMENTS […] />

Les ELEMENTS sont les parties les plus sensibles d'une définition car ils varient grandement selon le type de données qu'ils peuvent contenir. Ils contiennent à la base :

Le type peut être :

Les différents ELEMENT possibles

Pour définir des ATOM, Atomes, les plus simples

Une ligne de ce genre donnera donc :

<ELEMENT Name="TestVal1" Type="Type" Filename="int.typ" Default="0"/>
Pour définir des STRUCT, Structures

Une ligne de ce genre donnera donc :

<ELEMENT Name="PositionData" Type="Dfn" Filename="positiondata.dfn" Array="false" />
Pour définir des ARRAY d'ATOM, Tableaux d'Atomes

Une ligne de ce genre donnera donc :

<ELEMENT Name="TestArray" Type="Type" Filename="string.typ" Array="true"/>
Pour définir des ARRAY de STRUCT, Tableaux de Structures

Une ligne de ce genre donnera donc :

<ELEMENT Name="CoolFilesInfo" Type="Dfn" Filename="coolfilesinfo.dfn" Array="true"/>

ATOM, Atomes, ARRAY, Tableaux et STRUCT, Structures

Le fichier sample_config.dfn tel qu'il a été mis en place permettra donc au fichier default.sample_config (présenté au début de cette page) de fonctionner car il définit les ATOM, STRUCT et ARRAY que ce Formulaire utilise.

1)
Cette page est une traduction/adaptation de http://dev.ryzom.com/projects/ryzom/wiki/CreatingABasicForm.