Le serveur de patchs nécessite d'être configuré à l'aide d'un fichier xml. Cela permet de savoir quels fichiers bnp il doit traiter, et comment il doit le faire.
Reprenons comme exemple notre fichier :
<xml> <_Categories> <_Category> <_Name type="STRING" value="khanat_lirria"/> <_IsOptional type="SINT32" value="0"/> <_IsIncremental type="SINT32" value="1"/> <_Files type="STRING" value="aaa_lirria.bnp"/> <_Files type="STRING" value="fonts.bnp"/> <_Files type="STRING" value="kh_characters_maps_body.bnp"/> <_Files type="STRING" value="kh_characters_maps_clothes.bnp"/> <_Files type="STRING" value="kh_characters_shapes.bnp"/> <_Files type="STRING" value="kh_characters_skeletons.bnp"/> <_Files type="STRING" value="kh_construction.bnp"/> <_Files type="STRING" value="kh_environnement_bank.bnp"/> <_Files type="STRING" value="kh_environnement_maps.bnp"/> <_Files type="STRING" value="kh_fauna_animation.bnp"/> <_Files type="STRING" value="kh_fauna_maps.bnp"/> <_Files type="STRING" value="kh_fauna_shape.bnp"/> <_Files type="STRING" value="kh_fauna_skeletons.bnp"/> <_Files type="STRING" value="kh_font.bnp"/> <_Files type="STRING" value="kh_handled_item.bnp"/> <_Files type="STRING" value="kh_interfaces.bnp"/> <_Files type="STRING" value="kh_outgame.bnp"/> <_Files type="STRING" value="kh_server.bnp"/> <_Files type="STRING" value="kh_sfx.bnp"/> <_Files type="STRING" value="kh_sky.bnp"/> <_Files type="STRING" value="kh_sound.bnp"/> <_Files type="STRING" value="kh_translate_de.bnp"/> <_Files type="STRING" value="kh_translate_en.bnp"/> <_Files type="STRING" value="kh_translate_es.bnp"/> <_Files type="STRING" value="kh_translate_fr.bnp"/> <_Files type="STRING" value="kh_translate_ru.bnp"/> <_Files type="STRING" value="kh_translate_wk.bnp"/> <_Files type="STRING" value="ryz_characters_animations.bnp"/> <_Files type="STRING" value="ryz_characters_maps_body.bnp"/> <_Files type="STRING" value="ryz_characters_maps_clothes.bnp"/> <_Files type="STRING" value="ryz_characters_maps_hair.bnp"/> <_Files type="STRING" value="ryz_characters_maps_underwear.bnp"/> <_Files type="STRING" value="ryz_characters_shapes.bnp"/> <_Files type="STRING" value="ryz_characters_skeletons.bnp"/> <_Files type="STRING" value="ryz_construction.bnp"/> <_Files type="STRING" value="ryz_environnement_bank.bnp"/> <_Files type="STRING" value="ryz_environnement_displaces.bnp"/> <_Files type="STRING" value="ryz_environnement_ig.bnp"/> <_Files type="STRING" value="ryz_environnement_lightmaps.bnp"/> <_Files type="STRING" value="ryz_environnement_maps.bnp"/> <_Files type="STRING" value="ryz_environnement_pacs_prim.bnp"/> <_Files type="STRING" value="ryz_environnement_shapes.bnp"/> <_Files type="STRING" value="ryz_environnement_tiles.bnp"/> <_Files type="STRING" value="ryz_environnement_vegetables.bnp"/> <_Files type="STRING" value="ryz_environnement_vegetable_sets.bnp"/> <_Files type="STRING" value="ryz_environnement_zones.bnp"/> <_Files type="STRING" value="ryz_fauna_maps.bnp"/> <_Files type="STRING" value="ryz_fauna_shape.bnp"/> <_Files type="STRING" value="ryz_fauna_skeletons.bnp"/> <_Files type="STRING" value="ryz_handled_item.bnp"/> <_Files type="STRING" value="ryz_help.bnp"/> <_Files type="STRING" value="ryz_indoors_ig.bnp"/> <_Files type="STRING" value="ryz_indoors_lightmaps.bnp"/> <_Files type="STRING" value="ryz_indoors_pacs.bnp"/> <_Files type="STRING" value="ryz_indoors_shapes.bnp"/> <_Files type="STRING" value="ryz_interfaces.bnp"/> <_Files type="STRING" value="ryz_packedsheets.bnp"/> <_Files type="STRING" value="ryz_ring.bnp"/> <_Files type="STRING" value="ryz_sfx.bnp"/> <_Files type="STRING" value="ryz_sky.bnp"/> <_Files type="STRING" value="ryz_translate.bnp"/> <_Files type="STRING" value="ryz_zzz_bazaar.bnp"/> </_Category> </_Categories> <_IndexFileName type="STRING" value="ryzom.hist"/> <_PatchDirectory type="STRING" value="patch_game/patch/"/> <_BnpDirectory type="STRING" value="patch_game/bnp/"/> <_RefDirectory type="STRING" value="patch_game/ref/"/> <_NextVersionFile type="STRING" value="patch_game/Lirria.version"/> <_ClientIndexFileName type="STRING" value="ryzom"/> </xml>
La première partie entre <_Categories> et </_Categories> contient des <_Category></_Category> qui permettent de créer des ensembles de bnp que l'on traite à chaque fois selon les instructions données. On peut créer autant d'ensemble qu'on le souhaite, avec le nombre de fichiers bnp dans chaque que l'on désire.
<_Name type=“STRING” value=“**”/>
On indique dans “value” le nom qu'on donne à cette section, cela permet de s'organiser. C'est une indication obligatoire.
<_IsOptional type=“SINT32” value=“0”/>
On met value à “1” si l'utilisateur peut décider de ne pas appliquer le patch sur cette section, et “0” si il n'a pas le choix. C'est une indication obligatoire.
<_CatRequired type=“STRING” value=“interface”/>
On indique dans value le nom de la catégorie dont dépend cette section. Si la catégorie mère n'est pas activée, celle-ci ne le sera pas non plus. Cela permet de désactiver des ensembles de fichiers pour la création de nouveaux patchs. C'est une indication facultative.
<_Hidden type=“SINT32” value=“1”/>
Mettre cette valeur à 1 permet de ne pas tenir compte de cette section, de façon à désactiver les patchs pour un certain temps. Cela affectera aussi les sections qui héritent de cette section (voir ci-dessus). Si on passe à “0” cela réactive, et c'est le comportement par défaut si on n'indique rien. Cette indication est facultative.
À vérifier
<_IsIncremental type=“SINT32” value=“1”/>
On met à “0” si on ne souhaite pas que le fichier puisse être incrémenté mais transféré seulement intégralement. On met sur “1” dans le cas contraire. C'est une indication obligatoire.
<_UnpackTo type=“STRING” value=“./user/”/>
Permet d'indique un répertoire dans lequel décompresser le(s) fichier(s) bnp. L'adresse se fait avec “./” pour indiquer le répertoire où se trouve l'exécutable et doit se terminer par un “/”. Si on omet cette indication, le bnp sera juste transféré dans le sous-répertoire “data”, sans être décompressé.
<_Files type=“STRING” value=“leveldesign.bnp”/>
On indique là le nom du fichier bnp qui doit être traité. Il peut y en avoir plusieurs indiqués, chacun dans une nouvelle ligne du type <_Files type=“STRING” value=“xxx.bnp”/>
<_IndexFileName type=“STRING” value=“ryzom.hist”/>
On indique dans value le nom du fichier qui va contenir l'historique. Sans chemin indiqué, il sera au même niveau que ryzom.xml.
<_PatchDirectory type=“STRING” value=“patch_game/patch/”/>
Le chemin du répertoire dans lequel le système va générer les patchs. Il faut l'indiquer depuis le répertoire racine, donc au-dessus de ryzom.xml, avec patch_game
en premier, qui contient ce xml.
<_BnpDirectory type=“STRING” value=“patch_game/bnp/”/>
Le chemin du répertoire dans lequel le système stocke les fichiers bnp qui lui servent à générer les patchs. Comme ci-dessus, c'est par rapport à la racine du système de patch qu'il faut l'indiquer.
<_RefDirectory type=“STRING” value=“patch_game/ref/”/>
Le chemin du répertoire dans lequel le système stocke les fichiers diff qui lui servent à générer les patchs. Comme ci-dessus, c'est par rapport à la racine du système de patch qu'il faut l'indiquer.
<_NextVersionFile type=“STRING” value=“patch_game/Lirria.version”/>
Le nom du fichier qui contient le numéro de la version suivante du patch, qu'il incrémente automatiquement. Là encore, il faut indiquer le chemin depuis la racine du système de patch.
<_ClientIndexFileName type=“STRING” value=“ryzom”/>
Le début du nom de fichier de type idx
qui sera généré par le système et utilisé par les clients pour suivre les versions de ses fichiers. Si on indique, comme ici, “ryzom”, les fichiers seront de la forme “ryzom_00000.idx”.