Dans l'inventaire de jeu, on visualise son matériel par le biais d'icônes qui s'entassent et/ou s'empilent dans son inventaire : Ces icônes sont fabriquées par le système qui assemble plusieurs éléments (quantité, qualité, couleur de fond etc.).
Les informations ici sont génériques.
Nous avons une procédure dédiée à Khanat de génération des éléments d'interface : Génération des graphismes d'interface de Khanat
Il existe un répertoire dans les assets libérés qui recense tous les objets équipables, du moins leurs icônes dans database/interfaces.
Nous nous focalisons donc déjà sur les objets du type de “AR_pantabotte.png” dans l'exemple ci-dessus. Il suffit de se baser sur ces exemples pour en créer un nouveau. Le motif final devra être sous format .PNG, avec un fond transparent et d'une taille de 40×40 pixels.
Les images utilisées pour l'interface sont assemblées en un seul fichier, nommé “new_texture_interfaces_dxtc” dans la version de Ryzom Core (le nom d'appel pouvant être changé, le nom du fichier aussi) auquel correspond un fichier texte descriptif “new_texture_interfaces_dxtc.txt”. Il concentre une grande partie de ce qu'il faut pour générer les icônes.
Pour créer ces deux fichiers, il existe un binaire compilé dans les outils Ryzom Core : build_interface
USAGE : build_interface [-s<existing_uv_txt_name>] <out_tga_name> <path_maps1> [path_maps2] [path_maps3] .... -s : build a subset of an existing interface definition while preserving the existing texture ids, to support freeing up VRAM by switching to the subset without rebuilding the entire interface
Il suffit donc d'entrer la commande en indiquant quel nom on veut donner à nos fichiers de sortie (un image et un d'index) et on indique chacun des répertoires à inclure dans l'image finale :
$ build_interface mes_images_d_interface icones/outils icones/armes icones/armures icones/nourriture
permet donc d'aller chercher toutes les images dans les sous-sous-répertoires de “icones” indiqués (l'outil ne parcourt pas les sous-répertoire par lui-même) et génère l'output suivant :
\\ Writing tga file : mes_images_d_interface.tga \\ Writing UV file : mes_images_d_interface.txt
Ces deux fichiers seront à fournir dans les .bnp du client.
Il faut donc rassembler toutes les icônes dont on a besoin dans des sous-répertoire d'un répertoire interface et recréer cette image globale d'interface à chaque fois qu'on crée une nouvelle icône.
Ensuite, il ne reste qu'à appeler depuis le Datasheet le nom du fichier .png de l'icône de l'objet que l'on souhaite. Dans l'exemple ci-dessus, ce serait donc “AR_pantabotte.png”.
Si jamais nous voulons retrouver les images d'un tel fichier composite, voici un petit script perl qui recrée automatiquement ces images icônes partir du fichier texture :
Utilisation :
Lancez la commande dans le dossier où vous voulez recréer les icônes. Exemple, sur mon poste le fichier texture “texture_interfaces_v3.tga” ainsi que le fichier listant le icônes “texture_interfaces_v3.txt” sont dans le dossier “~/lirria/user/interface”. la texture tga fait 1024×1024 pixels de largeur et de hauteur.
$ mkdir mes_icones $ cd mes_icones $ ./extractor.pl ~/lirria/user/interface/texture_interfaces_v3.tga ~/lirria/user/interface/texture_interfaces_v3.txt 1024 1024
Attention, il faut que l'outil “convert” du paquet imagemagick soit installé sur le poste.
Note : En plus des icones tga, il peut créer des fichiers spéciaux du à la présence de lignes avec des nom de fichiers bizarres et des tailles d'icônes nulles :
r2ed_tool_draw_region_over.psd 0.000000000000 0.000000000000 0.000000000000 0.000000000000 r2ed_tool_split_road_over.psd 0.000000000000 0.000000000000 0.000000000000 0.000000000000 road_flag.max 0.000000000000 0.000000000000 0.000000000000 0.000000000000 road_flag.shape 0.000000000000 0.000000000000 0.000000000000 0.000000000000
Note : Il semble que ces lignes soient des erreurs, des fichiers “psd”(photoshop) ou des modèles 3d (.max et .shape) qui devaient traîner dans les dossiers des images lors de la création de la texture. Cela explique aussi les coordonnées 0 0 0 0, car l'outil n'arrivait pas à lire ces formats. Ces fichiers peuvent donc être supprimés.