J'ai créé une simple map de test consistant en
un peu de BSP, une skylight, un playerstart, un skydome et une
DirectionalLight.
Je vais seulement utiliser des éléments de base
de l'éditeur qui se trouvent dans les packages officiels.
Il y a deux méthodes de débugage qui peuvent être
utilisées ensemble.
Comments:
Chaque entité dans Kismet peut être commentée,
et ce commentaire peut être affiché en tant que
texte, dans le coin gauche en bas, n'importe quand. Commentez
simplement l'entité et quand un signal l'atteindra, cela
s'affichera à l'écran si vous avez coché
bOutputObjCommentToScreen comme montré ci-dessous. Cela
vous permet de surveiller chaque entité que le signal
atteint au moment où ça se produit, ce qui peut
vous permettre de savoir où le signal s'est arrêté.
|
|
• Si Object Comment ne marche pas : (ce s'applique aussi
aux logs) si vous suivez les instructions et qu'aucun message
n'apparaît à l'écran, votre éditeur
est sûrement réglé pour ne pas afficher
ces messages lors du jeu. Pour corriger ce problème,
vous pouvez avoir à essayer plusieurs choses :
* Note: Les étapes suivantes impliquent de modifier des
fichiers .ini du jeu. Cela peut causer de gros problèmes
dans certains cas, donc soyez sûr de bien faire des copies
de sauvegarde de vos fichiers .ini avant de faire vos modifications.
1) Trouvez le DefaultEngine.ini. Ce fichier sera situé
dans des répertoires différents selon les jeux
concernés. Ouvrez le et faites une recherche sur "Kismet".
Un des premiers résultats sera 'bOnScreenKismetWarnings=FALSE'.
Vous aurez à le changer en 'bOnScreenKismetWarnings=TRUE',
sauvez le fichier et vérifiez si cela fonctionne.
2) Si cela ne fonctionne pas, après la ligne 'bOnScreenKismetWarnings=FALSE',
ajoutez cette ligne 'bEnableKismetLogging=TRUE'.
3) Cela peut fonctionner mais n'est généralement
pas recommandé puisqu’il peut s'agir d'un fichier
"Cooked" suivant le jeu. Cherchez le fichier xxxengine.ini,
où xxx est le nom du jeu et faites les mêmes changements
que précédemment.
4) Si cela ne marche toujours pas, vous ne pouvez que compter
sur les logs lorsque vous jouer depuis l'éditeur (mais
pas depuis le jeu lui-même). Ajoutez des Logs à
votre système en suivant les instructions ci-dessous.
Cependant, vous ne pourrez les voir que dans l’onglet
Logs du Generic Browser, et seulement si vous avez coché
bIncludeObjComment. Le texte apparaîtra dans le Log du
Generic Browser mais pas à l’écran.
5) Si au final, tout ça n'a pas marché, il ne
reste qu'une solution. A la place d'utiliser un log, prenez
un emitter et placez le là où vous pouvez le voir
lors de vos tests. Utiliser une action Toggle pour le mettre
en route lorsque le log s'arrête. De ce fait, si l'emitter
s'arrête, vous saurez que telle partie fonctionne. N'oubliez
pas de couper la propriété AutoActivate de l'emitter.
.
Logs:
Vous pouvez relié un log à à peu près
n'importe quoi. Vous pouvez brancher un signal à un log,
le nommer avec ce que vous testez dans ses commentaires, cocher
‘bOutputObjCommentToScreen’, et vous aurez un message
à l'écran lorsque le signal le touche. Vous pouvez
aussi les associer à des références ou
des variables que vous voulez surveiller, par exemple si un
compteur compte correctement. Dans les exemples ci dessous,
le MaxTriggerCount est mis à 0.
Debugging signal throughput: J’ai créé
un trigger et un log pour vérifier que mon trigger se
déclenche. J’ai décoché ‘bOutputToScreen’
et coché ‘bOutputObjectCommentToScreen’ dans
le log. Quand le trigger se déclenchera, le commentaire
saisi dans ObjComment du log apparaîtra à l'écran.
Note : Vous pourriez tout aussi bien faire ceci en commentant
le trigger et lui ordonnant d’afficher un message à
l’écran.
|
|
Débuguer des variables : Je vais créer un log
qui enregistrera une valeur "Int" (entier), et l'afficher
à chaque fois que le log est appelé. Premièrement,
je dois démasquer la sortie Int du log. Je fais ceci
en cliquant droit sur le log et en sélectionnant Expose
Variable / Int – Int*.
|
|
L'étape suivante est de l'insérer dans le système.
Dans le screenshot ci-dessous, j’ai crée un Int
Counter. Je vais surveiller la valeur de A et le log me donnera
la valeur de A à chaque fois que A sera égal à
B dans le counter. J’ai décoché bOUtputObjCommentToScreen’
du log parce que je n’ai pas besoin des commentaires,
mais j’ai coché ‘bOutputToScreen’ pour
que ca affiche la valeur Int à l’écran.
|
|