Bonjour à tous, dans ce tutoriel je vais vous lister les "
bug" de WorldBuilder les plus courrant et vous expliquer comment les éviter.
Tout d'abord, par "
bug" j'entends tout les scripts (ou autre) qui ne se comportent pas comme on l'attendrait et comme il serait normal qu'il se comporte
Je vais lister pour le moment 3 bugs.
*****************************************************************************************************************************
I - le bug du PlyrNeutral1) principe du bugCe bug
empêche de changer l'allégeance de toutes unités appartenant au joueur PlyrNeutral. Il peut s'avérer gênant lorsque vous voulez transférer une unité anciennement neutre (appartenant à ce joueur) pour le donner à un autre
2) résolution: utilisation du joueur PlyrCivilian Il n'y a pas de technique magique pour le résoudre, je préconise juste de na pas utiliser ce joueur et de
préférer le joueur PlyrCivilian, joueur également neutre mais avec qui les transfert se feront sans aucun problème
II - le bug des Teams1) principe du bugPrincipale bug de WolrdBuilder selon moi, il peut facilement empêcher le bon déroulement d'une partie où vous utiliserez plusieurs Teams
Je ne reviendrais pas sur ce qu'est une Team mais sachez qu'il peut être très pratique dans une map de séparer les troupes/bâtiments de l'IA en plusieurs Teams pour facilité la gestion de l'IA (et vous aurez alors surement à faire à ce bug)
Il intervient lorsque vous souhaitez vérifié si plusieurs Teams sont détruites (cela peut être utilise si vous voulez terminé la partie une fois l'IA entièrement vaincu et donc toutes ses Teams détruites)
Pour ce faire vous utiliseriez un script de ce type
**********IF***********
"Team1" is destroyed
AND "Team2" is destroyed
AND "Team3" is destroyed
etc...
********THEN***********
Show 'Victorious' windows and end game (fin de la partie vous avez gagné)Sauf que ce script ne fonctionnera pas, vous aurez beau tuer toutes les Teams votre "Victoire" ne s'affichera jamais, à cause du bug des Teams.
En effet, pour WoldBuilder, lorsque vous dîtes "
Si la Team 1 est détruite et si la Team 2 est détruite" lui comprend "
Si la Team 1 et la Team 2 sont détruites SIMULTANEMENT"
Il faudrait donc que vous détruisiez toutes les Teams en même temps pour gagner ce qui physiquement impossible. Votre script ne peut donc jamais se réaliser (à moi que vous provoquiez la mort de ces Teams par un autre script)
2) Résolution: la Méthode du Compteur La solution est assez simple, comprenant l'origine du bug vous n'avez plus qu'à faire en sorte que seul la mort d'une Team à la fois soit vérifié et on arrive donc à la méthode du compteur.
Pour cela il faut que vous initialisiez un compteur, exemple:
Set 'compteur1' to 0 (c'est vous qui choisissez le nom de votre compteur)
Ce compteur servira à compter le nombre de Teams mortes. Vous devez donc maintenant crée les scripts pour compter ce nombre de mort. Il doit ressembler à ceci:
**********IF***********
"Team1" is destroyed
********THEN***********
Add 1 to 'compteur1' Vous faîtes ceci pour toutes les Team qui doivent mourrir pour votre script et il ne vous reste plus qu'à conclure. Le compteur doit avoir un certain nombre en mémoire pour réaliser le script final qui sera le nombre de Team qui doivent être détruites
Ainsi si trois Team doivent être détruite, on obtient:
**********IF***********
'compteur1' is Greater than or Equal to 3
********THEN***********
Show 'Victorious' windows and end game Votre script fonctionne parfaitement à présent et lorsque vous tuerez vos 3 Teams, vous aurez bien "Victoire" qui s'affichera
NB: noté l'utilisation du "
Greater than or Equal", il est préférable de l'utiliser à "
Equal" car il vous empêchera les bug, si votre compteur monte trop haut "
Equal" vous buggera le script alors que "
Greater than or Equal" fera fonctionner le script
III - le bug des CommandButton1) Principe du bugLe bug est très simple, il intervient lorsque vous voulez ajouter ou supprimer une commande à l'aide du script "
Command button -- add to an object type" ou "
Command button -- remove from an object type"
Je ne m'étendrais pas sur le script "
Command button -- add to an object type" car je il est difficile à utiliser mais cette méthode fonctionne très bien pour le deuxième cas, qu'il est plus courant d'utiliser
Dans ces deux cas, vous avez accès à une liste de commandes (qui correspondent à celle sur les CommandSet des objets) et vous pouvez les supprimer ou les ajouter à certains objets:
exemple: vous voulez supprimer la commande de construction de la Forteresse au bâtisseur des Hommes, vous utiliserez alors:
**********IF***********
True (ça le fera dès le début)
********THEN***********
Command button: 'Command_PorterConstructMenFortress' is remove from all objects of type 'MenPorter'Sauf que si vous rentrez ce script tel quel, le batisseur pourra toujours construire la forteresse car les commandes proposées sont fausses (inexistantes dans l'INI)
2) Résolution: petite manip sur le nomLes commandes proposées sont fausses car WorldBuilder rajoute un caractère à la fin de la commande (caractère non prit en compte et traduit par un carrée quand on le voit)
On peut se rendre compte de ce caractère en validant l'action, le script apparaîtra alors comme ça:
**********IF***********
True
********THEN***********
Command button: 'Command_PorterConstructMenFortress
' is remove from all objects of type 'MenPorter' La seule chose à faire pour résoudre le problème est donc de retirer le caractère, pour ça, une fois la commande choisi vous vous placez à la fin du nom de la commande et
supprimer le caractère le plus en arrière.
Si tout se passe correctement vous ne devriez pas voir de différence au premier abord mais une fois la condition validé, vous aurez:
**********IF***********
True
********THEN***********
[???] Command button: 'Command_PorterConstructMenFortress' is remove from all objects of type 'MenPorter' un warning vous dira que la commande 'Command_PorterConstructMenFortress' n'existe pas, ignorez-le. Votre commande est alors fonctionnel et le batisseur ne pourra plus construire de forteresse
Si vous supprimer un caractère visible, annulez votre saisi et laissez la commande tel quelle, le bug ne s'applique pas à cette commande et elle fonctionnera très bien
NB: Vous aurez noté que j'ai utilisé la commande
'Command_PorterConstructMenFortress' alors qu'il existe
'Command_ConstructMenFortress' (pour certains bâtiments, la forteresse des Hommes n'en fait pas forcemment partie). Les commandes '
Porter' sont spécifiques aux bâtisseurs, si vous en utilisez d'autres, elles n'affecteront pas les batisseurs
**************************************************************************************************************
Je n'ai pour le moment aucun autres bug à préciser, il s'agit là des plus courant.
J'espère que ce tutoriel vous permettra d'éviter de nombreux bug lors du développement de vos partie