Pas d'affolement... ce topic a un rapport étroit avec le scripting dans nwn, malgré ce que laisse présumer le titre
J'ai souvent eu l'occasion, depuis que je me suis attaqué au scripts de nwn, de discuter avec d'autres scripteurs...
Autant ceux habitués a la programmation orienté objet ne ce sont que brievement arrétés sur ce point de détail, autant ceux n'ayant jamais pratiqué ce type de programmation s'arrachent les cheveux a comprendre ceci :
Je veux parler de la difference fondamentale existant entre le ResRef d'un objet, et son Tag.
J'ai pu constater que, pour beaucoup, la difference entre ces deux données etait brumeuse... voir carrément nébuleuse... c'est pourquoi je vais m'efforcer ici de detailler ce point precis.
1. Qu'est-ce qu'un Blueprint ?
Litteralement, un Blueprint est un 'plan de construction'.
Autrement dit, il s'agit d'un modele.
Lorsque vous placez un objet dans votre module, l'editeur regarde quel objet vous avez sélectionné dans la liste des Blueprint, et crée une copie de celui-ci a l'endroit désiré.
En d'autre termes, les Blueprint n'ont pas d'existence reelle dans votre module. Ce sont juste des modeles prédéfinis, sur lesquels se base le moteur du jeu pour creer un nouvel objet.
2. Qu'est-ce qu'une instance ?
Une instance est un objet que vous avez placé dans votre monde. Cet objet sera nécessairement défini, a la base, par le Blueprint qui lui aura servi de modele, cad que lorsque vous placez un dragon dans votre monde, il aura 30 en force, parce que le Blueprint 'dragon' specifie qu'il a 30 en force.
Contrairement au Blueprint d'ou il est issu, l'instance a une vie propre : il 'existe' dans votre monde, et ses caracteristiques peuvent varier (il est possible de le modifier directement dans le toolset, mais aussi en jeu, ou ses points de vie diminueront au cours d'un combat, etc...)
Il est possible de creer plusieurs instances a partir du meme Blueprint (cad creer plusieurs dragons a partir de la meme selection dans la liste...), et a partir de ce moment la, chaque instance aura une 'vie' propre, ses caracteristiques pouvant etre modifié a volonté...
Le tag et le ResRef
Si vous m'avez suivi jusque la, le reste devrait etre facilement comprehensible...
Qu'est-ce que le ResRef ? He bien il s'agit tout simplement du nom du Blueprint d'ou est issue une instance (on dit dérivée en parler techenike
), autrement dit le nom du modele qui a permis de construire notre objet (notre dragon).
Qu'est-ce que le Tag ? Rien de plus qu'un nom que l'on donne a un objet quelconque. Lorsque plusieurs objets sont dérivés (issus) du meme Blueprint, toutes leurs caracteristiques sont identiques, dont le tag. Modifier le tag permet donc de differencier deux objets issus du meme Blueprint.
Voila pourquoi vous ne pouvez pas modifier le ResRef d'une creature que vous avez posé dans votre monde.
Voila aussi pourquoi une fonction tel que CreateObject() necessite un ResRef, et non pas un tag, pour fonctionner : Seul le ResRef permet de designer un 'modele' precis.
Le seul role du Tag est de differencier entre eux les objets deja existants...
En esperant que ceci aura éclairé la lanterne de certains