DAoC - Technique, interface et automatisation

Aide aux concepteurs/bidouilleurs d'UI

Répondre
Partager Rechercher
Bonjour à tous,

Ce post est ouvert à destination d'être une compilation des informations utiles pour la création/modification d'UI.

Note : Je laisse libre court à l'équipe de modération du forum pour améliorer la présentation de ce post, chose que je ne ferais qu'en dernier, préférant m'attarder dans un premier temps à la rédaction du contenu.

Note 2 : Ce post n'est pas complet, car inachevé, ni n'a vertu d'être exhaustif une fois terminé, il se contente de rassembler toutes les informations que j'ai réussi à glaner à droite et à gauche, et et donc ouvert à toute suggestion d'amélioration que vous pouvez émettre.

Note 3 : Reste à faire :
  • finir la description des différents fichiers,
  • faire une description des adaptateurs, ce qu'ils renvoient, les utilisations possibles,
  • faire une traduction des balises supportées, en essayant de tenir compte des modifications déjà survenue,
  • créer des exemples simples mettant en oeuvre templates et adaptateurs afin d'illustrer l'ensemble,
  • voir avec l'équipe de modération pour un éventuel passage du post en post-it,
  • corriger les fautes que j'ai sans doute laisser traîner,
  • ...


Généralités sur les interfaces :

Une UI c'est quoi ?


Une UI ou User Interface (Interface Utilisateur en français) et l'ensemble des fenêtres, graphismes, éléments de contrôles vous permettant d'interagir avec votre jeu favori (en l'occurence DAoC dans le cas présent).

Quels sont les éléments composant une UI ?


L'ensemble des UI se composent de deux types de fichiers :
  • Des ressources (images au format TGA, icônes, ou autre),
  • Des fichiers de définition au format XML.

XML Kesako ?

Quelques précisions supplémentaires sur le format XML, afin de ne pas vous perdre en cours de route :

Le format XML est un système de définition de données fortement verbeux (entendez par là que convertir quelque chose de simple en XML peut prendre passablement plus de temps à écrire que vous ne le pensiez dans un premier temps). Il utilise un système de balisage fortement inspiré du HTML (dont il dérive), mais est beaucoup plus strict dans son écriture (toute balise ouverte doit impérativement être fermée). Il commence systématiquement par la ligne suivante :
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
S'en suit une balise ouvrante, définissant le noeud racine, dans le cas des UI :
Code:
<XML ID="DAOCUi">
qui se ferme à la fin du document par
Code:
</XML>
J'insiste lourdement, tout oubli de fermer une balise entraîne une invalidité du fichier XML et risque donc de faire planter tout le reste.

On trouve ensuite divers noeud fils du noeud racine possédant eux aussi des noeuds fils et donc une complète et complexe hiérarchie de noeuds commence après l'écriture du
Code:
<XML ID="DAOCUi">
Je précise également que cette hiérarchie est très stricte, en effet tout noeud s'ouvrant ne peut en aucun cas se voir fermé après la fermeture d'un le comportant. Le code suivant est donc un exemple à ne pas reproduire :

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<XML ID="DAOCUi">
<Font>
<Name>button_small</Name>
<File>fonts/button_10.tga</File>
</XML>
</Font>

Derniers conseils avant de vous lancer dans la bataille


Un dernier point mérite à mon sens d'être soulevé, avant de vous attaquer à l'édition de fichier XML, un bon éditeur de texte est un plus, je vous recommande personnellement PSPad, disponible ici, il s'agit d'un freeware, disponible en français, et possédant une intégration au shell permettant une édition facile de nombreux fichier d'un seul coup.

L'utilisation de DAoC UI Editor dont vous trouverez le lien en parcourant ce forum, est également fortement recommandée, car bien qu'un peu long à charger un projet, il vous permet d'avoir un affichage de l'ensemble de ce que vous avez créer, il vous permettra également de vous affranchir d'avoir à lancer le jeu pour vérifier la validité des lignes que vous avez rédigées, tout en vous permettant également de créer directement des fenêtres sans avoir à passer de longues heures à écrire des pages et des pages de documents XML. Un passage manuel restant nécessaire lorsqu'il s'agit de fusionner les éléments en provenance de différentes interfaces.

Enfin, un bon éditeur d'image tel que GIMP est un plus pour manipuler, modifier, visualiser les ressources de type image. Le site officiel de GIMP étant ici.

Ces quelques précisions étant posée, je vous invite également à consulter le lien suivant, en anglais : http://www.camelotherald.com/article.php?id=58

Vous y retrouverez l'ensemble des balises/tag normalement valables à l'intérieur d'un fichier XML, certains sont soumis à modifications, et je vous invite à consulter également les patchs notes pour connaître les modifications apportées à cette liste (qui est là seule que j'ai pu trouver). Il contient également la liste des Adapter valides ces éléments vous permettant de choisir les informations à afficher.

Les éléments composants une UI - Partie 1 : Les Fichiers XML

Descriptions des fichiers et de ce qu'ils contiennent


Attention dans les fichiers suivants, la position d'une information dans un fichier n'est pas representative de sa position dans le rendu final puisque des définitions de position en coordonnées XY doivent être fournie pour chaque élément s'affichant.

Pour chaque élément visuel, vous définirez dans un premier temps un template composant la partie visuelle de l'interface, puis un contrôle qui s'appliquera au template en y précisant l'adaptateur utilisé.

assets.xml : de loin l'un des fichiers les plus importants, c'est lui qui défini les ressources pouvant être utilisées par votre interface en associant un nom (ex : button_small), à un fichier (ex : fonts/button_10.tga), il définit donc les polices utilisable et nomme également les pages de ressources utilisables.

clock_window.xml : définit l'horloge que vous allez afficher, vous y ferez au moins un appel à l'Adapter : time_of_day, et sans doute aussi aux Adapter timer_time, timer_text, et également aux différents performance_meter, lag_meter et framerate_meter, pour réaliser un très simple indicateur PLF.

concentration_window.xml : définit la fenêtre de concentration permettant à nos amis qui nous offrent leurs bénédictions de savoir les bénédictions qu'ils ont déjà offertes et à qui. Un appel à l'Adapter conc_list vous retournera une liste d'icônes correspondant à la liste des bénédictions posées, quand à concentration il devrait si mon interpretation est correcte vous indiquer la concentration restante.

compass.xml : définit la boussole, comme son nom le laisser à présumer, il contient donc un appel à l'Adapter : compass_heading, responsable de donner la position du combattant que vous incarnez.

minipet_window.xml : définit la fenêtre de votre familier, cette fenêtre est assez complexe car composée de nombreux contrôle que je ne reprendrais pas ici, je vous invite donc à consulter le fichier situé dans le répertoire UI/Atlantis avec votre éditeur de texte favori afin de voir lesquels sont nécessaires. Vous remarquerez ici que les adaptateurs sont ici utilisé dans les deux sens, pour transmettre des informations au jeu (ordre d'attaque par exemple), et également pour vous permettre d'avoir les informations du jeu concernant votre familier.

mount_window.xml : définit la fenêtre de votre monture, celle ou vous pouvez accéder aux sacoche de votre cheval favori.

options_window.xml : défini la fenêtre d'option, celle-ci dispose également de nombreux contrôle pour régler les distances de cliping, les effets des sorts, et tout un lot de paramètres, comme le volume sonore.

uimain.xml : encore un fichier central au niveau de l'interface, puisque celui-ci définit quels sont les fichiers à inclure lors du chargement de votre interface. Il ne contient donc, en plus des définitions habituelles de format XML que des balises d'inclusion.

realmwar_xxx.xml : ces fichiers contiennent les définitions des fenêtres de la carte RvR, Albionaise, Hibernienne, Midgardienne, et de la zone d'Agramon, l'élément _key indique ici la fenêtre comportant la légende de la carte, pour l'interpretation des forts.

summary.xml : contient le résumé de votre personnage (généralement point de vie, mana, endurance), mais on peut également y faire figurer d'autres informations (rang de royaume, ...). Il définit donc les ressources que l'on va utiliser dans le cas d'un affichage graphique, via un appel aux noms définis dans le fichier assets.xml, et contient donc les appels aux Adapter que vous choisissez d'utiliser.

Description des Adaptateurs disponibles

Voici maintenant la liste des Adapters disponibles, celle que vous souhaitiez connaître depuis un moment maintenant.

Note : Cette liste peut ne pas être à jour (elle date du 23 Octobre 2003), mais c'est la seule que j'ai trouvée, sur le site officiel, en anglais. De plus, je n'ai pas eu le temps de tester les éléments un par un, donc la description reste une extrapolation pour certains des Adapters.

Todo : préciser au début du document les conventions de notation utilisées.


Nom de l'AdapterType de donnéesDescription
timer_timeScalaireDonnées temps sans doute sous un format graphique puisqu'il ne sagit pas d'un format texte
time_of_dayScalaireDonnées temps sans doute sous un format graphique puisqu'il ne sagit pas d'un format texte
timer_textTexteDonnées temps sous format texte
interact_textTextePas trouvé ce dont il s'agissait
interact_titleTextePas trouvé ce dont il s'agissait
quest_textTexteSans doute le descriptif des quêtes, à vérifier
info_textTextePas trouvé ce dont il s'agissait
info_titleTextePas trouvé ce dont il s'agissait
mini_friens_textTexteSans doute la liste des amis connectés
group_name0 à group_name7TexteNom des joueurs du groupe (pour les heal helper, mini-groupe, ...)
group_class0 à group_class7TexteClasse des joueurs du groupe (pour les heal helper, mini-groupe, ...)
group_power0 à group_power7ScalaireMana des joueurs du groupe (pour les heal helper, mini-groupe, ...)
group_status0 à group_status7ScalaireEtat des joueurs du groupe (mezz – mort - ..., pour les heal helper, mini-groupe, ...)
group_health0 à group_health7ScalaireVie des joueurs du groupe (pour les heal helper, mini-groupe, ...)
group_endurance0 à group_endurance7ScalaireEndurance des joueurs du groupe (pour les heal helper, mini-groupe, ...)
group_color0 à group_color7CouleurCouleur des joueurs des joueurs du groupe (pour les heal helper, mini-groupe, ...)(Rarement mise en place, mais ça existe)
group_level0 à group_level7ScalaireNiveau des joueurs du groupe (pour les heal helper, mini-groupe, ...)
group_0icon0 à group_0icon29ScalaireListe des effets affectant le premier joueur du groupe (bénédiction, poison, maladie, mal de resurection, ...)(pour les heal helper, mini-groupe, ...)(et oui il y'en a 29)
group_1icon0 à group_1icon29ScalaireListe des effets affectant le second joueur du groupe (bénédiction, poison, maladie, mal de resurection, ...)(pour les heal helper, mini-groupe, ...)
group_2icon0 à group_2icon29ScalaireListe des effets affectant le premier joueur du groupe (bénédiction, poison, maladie, mal de resurection, ...)(pour les heal helper, mini-groupe, ...)
group_3icon0 à group_3icon29ScalaireListe des effets affectant le second joueur du groupe (bénédiction, poison, maladie, mal de resurection, ...)(pour les heal helper, mini-groupe, ...)
group_4icon0 à group_4icon29ScalaireListe des effets affectant le premier joueur du groupe (bénédiction, poison, maladie, mal de resurection, ...)(pour les heal helper, mini-groupe, ...)
group_5icon0 à group_5icon29ScalaireListe des effets affectant le second joueur du groupe (bénédiction, poison, maladie, mal de resurection, ...)(pour les heal helper, mini-groupe, ...)
group_6icon0 à group_6icon29ScalaireListe des effets affectant le premier joueur du groupe (bénédiction, poison, maladie, mal de resurection, ...)(pour les heal helper, mini-groupe, ...)
group_7icon0 à group_7icon29ScalaireListe des effets affectant le second joueur du groupe (bénédiction, poison, maladie, mal de resurection, ...)(pour les heal helper, mini-groupe, ...)
group_numberScalairePas encore trouvé ce dont il s'agit
group_modeScalairePas encore trouvé ce dont il s'agit
mini_craft_titleTexteSans doute le titre de la fenêtre de craft, celle qui affiche le délais lorsque l'on réalise une pièce
mini_info_string0 à mini_info_string7TexteIl doit s'agir des ligne de texte décrivant un objet, cela doit contenir les informations de condition, durabilité, bonus, ... mais sous reserve, je n'ai pas encore vérifié
mini_info_title_colorScalaireCouleur de l'objet dans la fenêtre mini-info ?
mini_info_iconScalaireIcône pour la fenêtre mini-info
concentrationScalaireQuantité de concentration restante pour bénir comme il se doit vos amis sur le champs de bataille
chatAdaptateur de type chatJe suppose qu'il s'agit des fenêtre de chat, mais il faut que je vérifie un peu plus ce qui a changé depuis la 1.89
systemAdaptateur de type chatIl doit s'agir de l'adaptateur qui servait auparavant à la fenêtre du haut dans les logs de chat, mais il faut vérifier ce qui a changer depuis la 1.89
conc_listListe d'icônesListe des bénédictions déjà posée par le personnage que vous incarnez
chat_tab0 à chat_tab4TexteTitre des fenêtre de chat (je suppose), complétement remanié en 1.89, sans doute obsolète
chat_entryTexteLié au système de chat, sans aucun doute modifié en 1.89
chat0_color à chat63_colorCouleurCouleur du texte de la fenêtre de discussion, voir comment cela reste utilisable depuis 1.89
system0_color à system63_colorCouleurCouleur du texte de la fenêtre de log, voir comment cela reste utilisable depuis la 1.89
chat_config_titleTextePas de description pour l'instant
chat_config_channel0 à chat_config_channel15TextePas de description pour l'instant
chat_config_current_outputTextePas de description pour l'instant
chat_config_output_labelTextePas de description pour l'instant
train_skillsListe à deux colonnesRenvoie la liste des compétences de classe et leur niveau actuel je pense
train_realmListe à deux colonnesRenvoie la liste des compétences de royaume et leur niveau actuel je pense
train_skill_pointsTexteNombre de points de compétence restant à dépenser ?
train_realm_skill_pointsTexteNombre de points de compétence de royaume à dépencer ?
compass_headingScalaireOrientation de la boussole
merchant_page0 à merchant_page4Liste d'icônesListe des objets présents dans l'inventaire du PNJ revendeur que vous consultez
merchant_titleTexteTitre du PNJ marchand ?
merchant_max_pagesTexte??
merchant_page_displayTexte??
merchant_mithrilTextePièces de platine présentes que vous possedez ?
merchant_goldTextePièces d'or présentes que vous possedez ?
merchant_silverTextePièces d'argent présentes que vous possedez ?
merchant_copperTextePièces de cuivre que vous possedez ?
merchant_quantityTexteQuantité que vous souhaitez acheter au marchand

Description des Balises disponibles

Partie non encore rédigée, se référer au lien anglais pour l'instant.

Les éléments composants une UI - Partie 2 : Les Fichiers Ressources


Les Icônes, une ressource particulière

Partie non encore rédigée.

Les cartes, une autre ressource spécifique

Les cartes sont des fichiers DDS qui se trouvent en général dans le répertoire ui/custom/maps.
Les formats les plus courants sont 256X256 et 512X512.

Le minimum est une map par zone cependant, il existe des "zooms" (ou changement niveau de détail) sur des sous ensembles d'une zone (village, fort en ZF, zone particulière d'un artefact, ou d'une rencontre épique, etc. ...) ou des changements de map par niveau suivant l'axe Z (Labyrinthe et Abysses principalement).

Je vous invite à consulter le site de Valmerwolf qui contient beaucoup d'informations utiles sur le sujet en plus de lots de cartes à jour et commentées représentant les différentes zones (Attention site en anglais).

Les définitions des zones de zoom et des fichiers qui sont utilisés pour telle ou telle zone se trouvent dans les fichiers ui/custom/maps/areas.dat et ui/custom/maps/regions.dat, ce sont de simples fichiers texte que vous pouvez parfaitement visualiser en utilisant votre éditeur favori. Attention toutefois, à ne pas les modifier si vous ne savez pas ce que vous faites.

Les fichiers images

Partie non encore rédigée.

Je marque ici une petite pause avant de compléter ce post, afin de rentrer chez moi recharger les batteries de mon ordinateur portable.

J'espère toutefois que les informations contenues ici vous permettront d'y voir un peu plus clair dans vos tentatives de modifications/créations d'UI.

P.S. : J'ai mis le post en mode Wiki pour faciliter la présentation et la remontée d'information, je préfère toutefois que les contributions se fassent sous la forme de réponses plutôt que de modification directes, d'avance merci de votre compréhension.
__________________
Cordialement duncane
Les cartes :

Les cartes sont des fichiers DDS qui se trouvent en général dans le répertoire /custom/maps.
Les formats les plus courants sont 256X256 et 512X512.

Le minimum est une map par zone cependant, il existe des "zooms" sur des sous ensembles d'une zone ( village, fort en ZF , zone particulière d'un artefact etc ) ou des changements de map par niveau suivant l'axe Z ( Labyrinthe et Abysses principalement ).

Une bonne source : Valmerwolf
Je n'avais pas pensé rédiger d'infos concernant les cartes de suite, mais puisque j'ai un coup de main, j'intègre au Wiki, si besoin je rajouterais d'autres éléments par la suite comme les infos utiles pour modifier une carte (ajout de commentaire, PoI, etc ...) plus tard.

Merci du coup de main
thx c'est exactement ce dont j'avais besoin, à mes moments perdus je m'améliorerais mon ui avec mes petites touches persos, c'est toujours pratique
J'espère avoir donné suffisamment d'informations dans ce premier jet pour que ceux qui ait envie de faire quelques choses sachent un peu où ils mettent les pieds avant de se jeter tête baisser dans l'aventure
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés