Outils du site

fr:mises_a_jour_des_donnees_de_jeu

Mises à jour des données de jeu pour le serveur Lirria

Tutoriel en cours de rédaction Il faut corriger dasn ce tuto le contenu des scripts qui font désormais appel à Git et plus Mercurial

Pour simplifier le déploiement de nouvelles données auprès du client (fichiers image, son), du serveur (certaines primitives) voire des deux (fichiers de traduction, datasheets), il peut être intéressant de créer des scripts qui font l'opération rapidement.

C'est ce que nous avons fait pour nos serveurs, à l'aide de trois scripts qui gèrent plusieurs cas de figures. Attention, ceux-ci ne vous sont présentés que comme référence, car il sera peut-être nécessaire de les adapter à vos besoins/votre environnement.

L'architecture sur laquelle se basent ces scripts est celle détaillée dans Installation d'un serveur de patchs. Tous les noms commencent par script_ pour qu'ils soient listés les uns à côté des autres.

Grâce à ces scripts, nous pouvons :

Préparation de données clients Lirria pour un patch futur

Ce script prend les data du client organisées dans un dépôt git dédié pour le client Lirria (khanat-data-client), où elles sont classées par répertoire futur de destination (lorsque nous travaillerons pour un serveur stable).

Pour l'heure, nous nous contentons de mettre à jour les .bnp des data mais bientôt tous ce mettera à jour (client compris).

script_regenerer_bnps_client.sh
#!/bin/bash
# Script pour récupérer les data du dépôt
# Puis en faire des .bnp 
# Dans le serveur de patch, prêt pour la
# génération du patch suivant
 
# On récupère les dernières datas du dépôt dans le répertoire, sur la branche lirria
cd ~/patch_service/khanat-data-client
git pull
git checkout lirria
 
# On va dans le répertoire de patch
cd ~/patch_service
 
# On copie les données récupérées
for folder in ~/patch_service/khanat-data-client/data/
    do cp -R $folder/fonts patch_lirria/
    done
 
for folder in ~/patch_service/khanat-data-client/data/
    do cp -R $folder/kh/* patch_lirria/
    done
 
for folder in ~/patch_service/khanat-data-client/data/
    do cp -R $folder/ryz/* patch_lirria/
    done
 
# On génère patch_lirria.bnp et on le met à sa place
for i in patch_lirria/* ; do bnp_make -p $i ; done
#rm ~/patch_service/patch_game/bnp/
for folder in ~/patch_service
    do cp $folder/patch_lirria/*.bnp ~/patch_service/patch_game/bnp/
    done
 
# On nettoie le répertoire de transit temporaire
rm -Rf patch_lirria/*
 
 
# On retourne à la racine du home
cd ~

Création et activation d'un patch

On doit avoir préparé un lot préalables de données clients (via le script ci-dessus Préparation de données clients Lirria pour un patch futur) qu'on souhaite désormais rendre disponibles via un patch avec ce script.

Si jamais on souhaite également mettre à jour des primitives, datasheets ou des données serveur, il faut préférer exécuter le script suivant : Création des données serveur d'un patch et activation de celui-ci.

Il suffira de remplir la release note si on le souhaite, puis, surtout, d'incrémenter de 1 le numéro de version de patch de Lirria.

script_creation_patchs_simple.sh
#!/bin/bash
set -o verbose
 
# ===================  IMPORTANT ===================
#
# Il faut juste incrémenter de 1 l'indice comme habituellement
# Cela est proposé automatiquement à la fin, après
# le patch-release
#
### VERIFIER QU'ON A BIEN LISTE TOUS LES NOUVEAUX BNP DANS $PATCH_CLIENT_SYSTEM/patchgame/ryzom.xml
### DANS LE CAS OÙ ON A DÉCIDÉ DE PATCHER D'AUTRES BNP QUE CEUX GÉNÉRÉS AUTOMATIQUEMENT PAR
### LES DEUX SCRIPTS :
# * script_mise_a_jour_data_serveur.sh
# * script_regenerer_bnps_client.sh
# Il faut alors modifier comme ci-dessous :
# nano $PATCH_CLIENT_SYSTEM/patchgame/ryzom.xml
# Ligne ajoutée pour les données issues du serveur :
#    			<_Files type="STRING" value="dataserver.bnp"/>
 
# On va dans le bon répertoire
cd ~/patch_service
 
# On génère un nouveau patch
patch_gen updateProduct patch_game/ryzom.xml
 
# On peut éditer la release note à cette occasion :
nano patch_game/patch/index.php
 
# On peut activer la mise à disposition du patch
# Il suffit d'incrémenter de 1 les deux chiffres du fichier Lirria.version ci-dessous
nano patch_game/patch/Lirria.version
 
# On revient au départ
cd ~

Création des données serveur d'un patch et activation de celui-ci

Ce script réalise la même opération que le script Création et activation d'un patch mais il effectue au préalable la mis à jour des données au niveau du serveur et d'éventuelles données communes au client et au serveur.

Il se sert d'un fichier kh_server.bnp et les kh_translate_*.bnp généré automatiquement à partir des données des dépôts correspondant et des fichiers calculés pour le serveur de jeu.

Attention ce script stoppe le serveur de jeu le temps de recalculer les fichiers .packed_sheets, sheet_id.bin et visual_slot.tab. Il le relance à la fin de la procédure.

Il suffira de remplir la release note si on le souhaite, puis, surtout, d'incrémenter de 1 le numéro de version de patch de Lirria.

script_mise_a_jour_data_serveur.sh
#!/bin/bash
set -o verbose
 
# ===================  IMPORTANT ===================
# Ce script stoppe et relance le shard tout seul
#
# Il sert à recalculer les packed_sheets, sheet_id.bin et
# visual_slot.tab après que des changements de datasheets dans 
# khaganat-data aient été pullés.
# Il est donc nécessaire de faire un patch client
# qui est automatiquement mis en place à la fin du script
#
# Il faut juste incrémenter de 1 l'indice comme habituellement
#
# Cela est proposé automatiquement à la fin, après
# l'éventuelle modification de la patch-release
# 
# ------------- Editer ces variables ---------------
 
 
# indiquer ici le dossier d'installation des sources RC
export RYZOM_HOME=~/khanat-code
export RYZOM_DATA_HOME=~/khanat-ressources
export PATCH_CLIENT_SYSTEM=~/patch_service
 
# ------------- Fin des variables ---------------
 
# On va dans le répertoire des data
cd $RYZOM_DATA_HOME
 
# On met à jour les données avec la branche Lirria du dépot de data
git pull https://git.khaganat.net/khaganat/khanat-ressources.git
git checkout lirria
 
 
# On stoppe le shard
shard stop
 
# supprimer les anciennes packed_sheets du dossier serveur et dossier client
rm -f $RYZOM_HOME/code/ryzom/client/data/*.packed_sheets
rm -f $RYZOM_HOME/code/ryzom/server/data_shard/*.packed_sheets
rm -f $RYZOM_HOME/code/ryzom/common/data_common/visual_slot.tab
 
# regénérer le fichier sheet_id.bin
 
cd $RYZOM_HOME/code/build/bin
./make_sheet_id -o$RYZOM_DATA_HOME/leveldesign/game_elem/sheet_id.bin $RYZOM_DATA_HOME/leveldesign/game_elem $RYZOM_DATA_HOME/leveldesign/game_element $RYZOM_DATA_HOME/leveldesign/world $RYZOM_DATA_HOME/leveldesign/ecosystems $RYZOM_DATA_HOME/sound
 
# regénérer les packed_sheets
cd $RYZOM_HOME/code/ryzom/tools/sheets_packer
./sheets_packer
 
# copier le nouveau visual_slot.tab aux bons endroit
cp visual_slot.tab $RYZOM_HOME/code/ryzom/client/data/visual_slot.tab
cp visual_slot.tab $RYZOM_HOME/code/ryzom/common/data_common/visual_slot.tab
 
# On obtient dans $RYZOM_HOME/code/ryzom/client/data/ :
# - les packed_sheets du client
# - le fichier lmconts.packed
# Dans $RYZOM_HOME/code/ryzom/common/data_common/
# - le visual_slot.tab
# Dans $RYZOM_DATA_HOME/leveldesign/game_elem/
# - le sheet_id.bin
 
# On copie les données nécessaires au client dans le répertoire de création du patch.
# Cela inclue les fichiers de traduction
 
rm -Rf $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_fr/*
rm -Rf $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_en/*
rm -Rf $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_wk/*
rm -Rf $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_es/*
rm -Rf $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_de/*
rm -Rf $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_ru/*
rm -Rf $PATCH_CLIENT_SYSTEM/kh_server/*
cp $RYZOM_HOME/code/ryzom/common/data_common/database.xml $PATCH_CLIENT_SYSTEM/kh_server/
cp $RYZOM_HOME/code/ryzom/common/data_common/msg.xml $PATCH_CLIENT_SYSTEM/kh_server/
cp $RYZOM_HOME/code/ryzom/client/data/*.packed_sheets $PATCH_CLIENT_SYSTEM/kh_server/
cp $RYZOM_HOME/code/ryzom/client/data/*.packed $PATCH_CLIENT_SYSTEM/kh_server/
cp $RYZOM_HOME/code/ryzom/common/data_common/visual_slot.tab $PATCH_CLIENT_SYSTEM/kh_server/
cp $RYZOM_DATA_HOME/leveldesign/game_elem/sheet_id.bin $PATCH_CLIENT_SYSTEM/kh_server/
cp $RYZOM_DATA_HOME/translation/translated/*fr.* $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_fr/
cp $RYZOM_DATA_HOME/translation/translated/*en.* $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_en/
cp $RYZOM_DATA_HOME/translation/translated/*wk.* $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_wk/
cp $RYZOM_DATA_HOME/translation/translated/*es.* $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_es/
cp $RYZOM_DATA_HOME/translation/translated/*de.* $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_de/
cp $RYZOM_DATA_HOME/translation/translated/*ru.* $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_ru/
 
# On va dans le répertoire où on va générer le nouveau dataserver.bnp
cd $PATCH_CLIENT_SYSTEM/dataserver/
bnp_make -p kh_translate_fr
bnp_make -p kh_translate_en
bnp_make -p kh_translate_wk
bnp_make -p kh_translate_es
bnp_make -p kh_translate_de
bnp_make -p kh_translate_ru
cd $PATCH_CLIENT_SYSTEM/
bnp_make -p kh_server
rm $PATCH_CLIENT_SYSTEM/patch_game/bnp/kh_translate_fr.bnp
rm $PATCH_CLIENT_SYSTEM/patch_game/bnp/kh_translate_en.bnp
rm $PATCH_CLIENT_SYSTEM/patch_game/bnp/kh_translate_wk.bnp
rm $PATCH_CLIENT_SYSTEM/patch_game/bnp/kh_translate_es.bnp
rm $PATCH_CLIENT_SYSTEM/patch_game/bnp/kh_translate_de.bnp
rm $PATCH_CLIENT_SYSTEM/patch_game/bnp/kh_translate_ru.bnp
rm $PATCH_CLIENT_SYSTEM/patch_game/bnp/kh_server.bnp
 
mv dataserver/kh_translate_fr.bnp $PATCH_CLIENT_SYSTEM/patch_game/bnp/
mv dataserver/kh_translate_en.bnp $PATCH_CLIENT_SYSTEM/patch_game/bnp/
mv dataserver/kh_translate_wk.bnp $PATCH_CLIENT_SYSTEM/patch_game/bnp/
mv dataserver/kh_translate_es.bnp $PATCH_CLIENT_SYSTEM/patch_game/bnp/
mv dataserver/kh_translate_de.bnp $PATCH_CLIENT_SYSTEM/patch_game/bnp/
mv dataserver/kh_translate_ru.bnp $PATCH_CLIENT_SYSTEM/patch_game/bnp/
mv kh_server.bnp $PATCH_CLIENT_SYSTEM/patch_game/bnp/
 
read -p "Appuyer sur une touche pour continuer ."
# On peut éventuellement ajouter dans $PATCH_CLIENT_SYSTEM/patchgame/bnp/ les autres .bnp qui doivent être patchés
 
### VERIFIER QU'ON A BIEN LISTE TOUS LES NOUVEAUX BNP DANS $PATCH_CLIENT_SYSTEM/patchgame/ryzom.xml
# nano $PATCH_CLIENT_SYSTEM/patchgame/ryzom.xml
# Ligne ajoutée pour les données issues du serveur :
#    			<_Files type="STRING" value="dataserver.bnp"/>
 
# On génère un nouveau patch
patch_gen updateProduct patch_game/ryzom.xml
 
read -p "Appuyer sur une touche pour continuer ."
# On peut éditer la release note à cette occasion :
nano patch_game/patch/index.php
 
# On peut activer la mise à disposition du patch
# Il suffit d'incrémenter de 1 les deux chiffres du fichier Lirria.version ci-dessous
nano patch_game/patch/Lirria.version
 
# On relance le shard
shard start
fr/mises_a_jour_des_donnees_de_jeu.txt · Dernière modification: 2018/08/06 14:18 par zatalyz