Pas besoin de vous inscrire pour télécharger / No need to register for downloading.
Une fois inscrit, vous devez m'envoyer un mail pour valider votre compte / Once registered, you must send me an email for validating your account.
 S'enregistrer  |  FAQ  |  Lexique  |  Rechercher  |  Liste des Membres  |  Groupes d'utilisateurs 

 Annuaire  |  Connexion 

 Ce forum en page de démarrage

 Informations pratiques 
 Even if it's a french forum, english language is allowed here !  

   Télécharger le sujet
00. Le B.A.BA de la création de perso : le debug.
Mike Werewolf
Loup-garou

Site Admin


Inscrit le: 07 Oct 2004
Messages: 1676
Karma: 52
plus / moins

Localisation: France
Répondre en citant
Qu'est-ce que le debug ?

Ce sont des informations qui apparaissent à l'écran, et qui détaillent ce qui se passe "techniquement". Ces informations vont vous permettre de vérifier que tout se passe bien, ou au contraire, vont vous aider à comprendre pourquoi ça ne marche pas comme ça devrait.

Comment activer le debug ?

Tout d'abord, dans le fichier Data/mugen.cfg, trouvez la partie [Debug] et réglez-la ainsi :
Code:
;-------------------------------------------------------
[Debug]
;Set to 0 to disable starting in debug mode by default.
Debug=0

;Set to 0 to disallow switching to debug mode by pressing Ctrl-D.
;If Debug=1, this will be ignored.
AllowDebugMode=1

;Set to 1 to allow debug keys at all times. Otherwise debug keys
;allowed only in debug mode.
AllowDebugKeys=1

;Set to 1 to run at maximum speed by default.
Speedup=0

;Default starting stage for quick versus.
StartStage=stages/stage0.def


Explications :
* Debug = 0 indique que les informations de debug ne doivent pas être affichées par défaut (plutôt chiant quand vous voulez juste jouer ! Razz)
* AllowDebugMode = 1 indique qu'on peut accéder aux informations de debug lorsqu'elles ne sont pas affichées.
* AllowDebugKeys = 1 indique qu'on pourra se servir des raccourcis de debug à tout moment.

Les autres paramètres n'ont pas de grande incidence (laissez Speedup à 0, c'est tout).

Ensuite, lancez Mugen, et lancez un combat (en training, par exemple). A partir de là, vous pouvez activer plusieurs infos de debug, en utilisant plusieurs raccourcis, que vous trouverez ici : http://mike.mugen.free.fr/Forum/viewtopic.php?p=11#11 (fin du post). On va détailler deux de ces raccourcis ici, qui sont vraiment spécifiques au debug :

Ctrl-D Active/Désactive l'affichage des informations de debuggage.

Une fois activé, s'il y a des erreurs mineures dans les persos (comprenez des erreurs qui n'empêche pas le perso de fonctionner, mais qui peuvent être gênantes, exemple : l'attribution d'une valeur à virgule pour un paramètre qui n'accepte que des valeurs entières ou l'inverse), elles sont listées dans l'ordre d'apparition au centre de l'écran (la plus récente en bas). Comme vous pouvez le voir sur ce shot, EK et ER contiennent quelques erreurs (mais rien de méchant, en fait, juste un problème de syntaxe) :



A priori, si vous avez des erreurs qui apparaissent dans cette partie quand vous programmez un perso, c'est qu'il y a quelque chose à corriger Wink

Penchons-nous maintenant sur les infos permanentes :


La première ligne donne des infos sur le jeu en général :
* Frame = numéro de la frame affichée depuis le début du combat - 1 frame = 1 tick.
* FPS = Frames Par Seconde. Normalement, Mugen tourne à 60 FPS, mais comme vous le voyez sur le shot, ça peut légèrement varier.
* Vret = 1 ou 0, selon vos paramères dans la section [Video] du Mugen.cfg
* Skip = c'est le "skip frame". Normalement, il est sur A (Auto).

La seconde ligne indique en gris le nom du personnage dont on affiche le debug (ici KFM Master) suivi de son numéro ID (32 pour le joueur 1), suivi du "numéro" du joueur (0 pour P1, 1 pour P2, 2 pour P3 et 3 pour P4).

Les deux lignes suivantes sont des informations fixes.
La première est dédiée à l'animation :
* Actionno = numéro de l'anim utilisée par le joueur
* Spr = Sprite affiché
* Elemno = Numéro de l'élément d'animation / nombre total d'élément dans l'animation
* Time = Ticks écoulés depuis le début de l'animation / Durée totale de l'animation en ticks

A noter que pour le time, si l'animation a un looptime infini, Mugen ne peut pas afficherla durée totale de cette anim. A la place, il affiche -1 :

C'est notamment le cas pour la plupart des anims réalisées dans les airs (mais pas seulement).

Et qu'est ce qu'un looptime, allez-vous me demander ? C'est tout simplement le temps qui doit s'écouler avant que l'anim ne revienne en boucle. Concrètement, ça correspond tout simplement à la durée de l'animation du début à la fin.

Et comment on peut avoir un looptime infini ? C'est simple : il y a deux façons.
* La première consiste à insérer un "loopstart" dans l'animation : tous les éléments situés avant le loopstart ne seront affichés qu'une seule fois, et tous les éléments situés après le loopstart seront ensuite joués en boucle. Exemple, si j'ai une anim de 4 éléments, et que je mets un loopstart entre le second et le troisième élément, Mugen affichera les éléments ainsi : 1,2,3,4,3,4,3,4,3,4,etc. Bref, l'anim ne revient jamais à l'élément 1, le looptime est donc infini.
* La seconde possibilité est basée sur le temps d'affichage de chaque éléments. En effet, pour chaque élément, on indique combien de temps il doit être affiché. Mais dans certains cas, on ne peut pas avoir de durée précise d'affichage d'un sprite, et on ne veut pas que l'anim boucle (exemple : un coup aérien ; on ne peut pas faire de timing précis, car on peut sortir le coup à plusieurs moments différents, et une fois le coup sorti, le perso garde la même posture jusqu'à ce qu'un nouveau coup sorte ou qu'il atterrisse, ou qu'il encaisse un coup). Dans ce cas, on va simplement donner un temps de "-1" au dernier élément de l'animation : celui sera alors affiché indéfiniment, tant qu'on ne changera pas d'animation. Là encore, on ne revient pas à l'élément 1, le looptime est donc infini.

La seconde ligne du debug, enfin, est dédiée aux informations de programmation :
* State No = State dans lequel se situe le perso
* Ctrl = indique si le joueur à la maîtrise du personnage (1) ou non (0)
* Type = Correspond au StateType du perso, c'est à dire sa "position" : 1 pour le stand (debout), 2 pour le crouch (accroupi), 3 pour le air (en l'air) et 4 pour le Lie Down (étendu au sol)
* MoveType = Correspond au MoveType du perso, c'est à dire au type de mouvement qu'il réalise : 0 pour Idle (inactif ; autre que les autres mouvements), 1 pour Attack (attaque) et 2 pour le GetHit (touché par une attaque).
* Time = Correspond au "state time", ou encore au trigger "time". Il en tick depuis combien de temps le perso est dans ce state.

Tout ce qui suit varie d'un perso à l'autre (voire, il n'y a pas d'autres lignes), car cela correspond au "debug personnalisé", c'est à dire qu'il est programmé par l'auteur pour afficher des informations qui lui sont utiles (par exemple, pour KFM-Master, j'ai affiché dans l'ordre sur la première ligne : la position X du perso, la distance entre lui et son adversaire, la position X de cet adversaire, le niveau de vie maximal et enfin, la vie réelle ; et sur la seconde ligne s'affiche l'activation ou non du mode KFC - le nouvel hyper que je suis en train de coder pour KFM Master).

On peut également accéder aux infos de debug des autres personnages, et des helpers (car les helpers sont considérés comme des joueurs, mais bon, pour l'instant, inutile d'entrer dans les détails...). Pour cela, il suffit de rappuyer sur Ctrl+D :
Debug du joueur 2 :

Debug d'un helper :


Si le joueur disparaît (ex : si c'est un helper et qu'il est désactivé) alors que vous affichez ses infos, celles-ci disparaisent, et la seconde ligne n'affiche plus que "Player X Disabled" :


Enfin, la dernière petite chose à savoir pour les infos de Debug : il arrive que les informations apparaissent en jaune :


Vous remarquerez qu'à côté du nom du joueur figure une nouvelle information : "In [nom d'un autre perso] [ID du perso en question]'s State".

Cela signifie que le joueur n'utilise pas ses propres states (sa propre programmation, si vous préférez), mais qu'il utilise ceux d'un autre personnage (généralement un adversaire - en gros, ça veut dire qu'il est contrôlé par la programmation de l'adversaire, et que la prog du perso - à quelques éléments près - ne s'exécute plus). On utilise principalement ceci sur les projections, pour que l'adversaire réagisse de façon cohérente par rapport au mouvement.


Ctrl-C : Active/Désactive l'affichage des boîtes de collision, données cibles (en incluant les juggle points restants) et les attributs NotHitBy.

Là aussi, on va trouver des informations très intéressantes. Voici ce qui s'affiche lorsqu'on fait Ctrl+C :


Les personnages sont entourées de cases de couleur. Ces cases correspondent en fait aux zones de "collision" du personnage. Il en existe de deux types :
* Les rouges : elles définissent les zones d'attaque du personnage, c'est à dire les zones qui peuvent potentiellement porter un coup à l'adversaire. On les appelle couramment les Clsn1. Sur l'image ci-dessous, on voit que c'est la jambe de KFM qui frappe :

Vous remarquerez aussi que, s'agissant d'un mouvement d'attaque, le nom du personnage est suivi d'un H.

* Les bleues : elles définissent les zones où le personnage peut être touché (par des Clsn1, donc). On les appelle couramment les Clsn2. Techniquement, il y a coup lorsqu'au moins une Clsn1 d'un perso entre en contact avec au moins une Clsn2 de son adversaire :


NB : En fait, pour être exact, il faut qu'en plus, les Clsn1 aient été "activées" par un HitDef, mais on verra ça plus tard.

Lorsque le coup a touché, vous voyez qu'apparait sous le nom de l'attaquant, en rouge, "Target", suivi de l'ID de la target (la "target" étant le joueur touché). Le second chiffre indique le nombre de points de juggle restant. Sans entrer dans les détails, les juggle servent pour les combos. On le verra plus tard.

Bien sûr, ces Clsn s'applique aussi pour les helpers et les projectiles.


Vous pouvez refaire Ctrl+C pour mieux voir ces zones :


Avant d'aller plus loin, vous noterez qu'il y a une barre jaune sous les personnages, et encore au-dessous, leur nom et leur ID. La barre jaune est ce qu'on appelle le "width". Elle représente la largeur de votre perso. C'est cette barre qui va déterminer comment vous allez "pousser" votre adversaire lorsque vous être près de lui. Elle ne correspond pas forcément aux Clsn2, comme le montre cet exemple :


Et ce ne sont pas les Clsn2 qui jouent sur la poussée des joueurs (du moins, pas uniquement - sur le shot ci-dessous, les Clsn2 des persos se chevauchent) :


Ici, ce sont bien quand les width se rencontrent qu'il y a poussée :


Enfin, il y a une troisième couleur un peu spéciale pour les Clsn, ce sont les vertes :

Ce sont en fait des Clsn2 normales, sauf qu'elles sont désactivées par une fonction NotHitBy. Le fait de les désactiver a pour conséquence de rendre le personnage intouchable. On s'en sert principalement lorsque le perso "se remet" d'un coup (exemple : pendant qu'il se relève après avoir été mis au sol), ou au début de certaines attaques.


Voilà, vous pouvez déjà vous amuser à étudier un peu plus en profondeur quelques persos avec ces informations qui ne seront plus complètement du chinois pour vous désormais (enfin, j'espère !). ^^

Mike Werewolf.


Dernière édition par Mike Werewolf le Mardi 18 Janvier 2005 10:42; édité 1 fois


--[Mike Mugen]-----
Mike Werewolf est absent 
PaulAtreide

Invité



Karma:
plus / moins

Localisation:
Répondre en citant
Citation:
Ce sont en fait des Clsn2 normales, sauf qu'elles sont désactivées par une fonction NotHitBy. Le fait de les désactiver a pour conséquence de rendre le personnage intouchable. On s'en sert principalement lorsque le perso "se remet" d'un coup (exemple : pendant qu'il se relève après avoir été mis au sol), ou au début de certaines attaques.


??, moi je pensais que l'on ne mettait pas du tout de boite de collision lorsque l'on voulait qu'il soit intouchable. C'est quoi la différence entre pas de boîte et la bîte verte?
Alexandre

Créateur/Créatrice Mugen

Créateur/Créatrice Mugen

Inscrit le: 30 Déc 2004
Messages: 51
Karma: 7
plus / moins

Localisation:
Répondre en citant
Pas de boite = l'adversaire passerais au travers?
Alexandre est absent 
Mike Werewolf
Loup-garou

Site Admin


Inscrit le: 07 Oct 2004
Messages: 1676
Karma: 52
plus / moins

Localisation: France
Répondre en citant
Citation:
Pas de boite = l'adversaire passerais au travers?

Exactement. Il est possible de reproduire ça même avec des Clsn, mais il faut utiliser un NotHitBy et un PlayerPush pour désactiver la poussée des joueurs.

Ca permet aussi de réutiliser des anims pour lesquelles on a besoin de Clsn (ex : utiliser une anim de taunt pour une winpose : sur le taunt, le perso est vulnérable, alors que sur la winpose, non).

Mais bon, là, on rentre dans le technique ! Wink

Mike Werewolf.
Mike Werewolf est absent 
PaulAtreide

Invité



Karma:
plus / moins

Localisation:
Répondre en citant
Fatalement il y a une différence. Merci Prof et Alex
B92B

Invité



Karma:
plus / moins

Localisation:
Répondre en citant
En parlant de CLSN, je trouve dommage qu'Elecbyte n'ait pas défini de CLSN3 qui seraient dédiées au width justement (un peu comme dans KOF), même définies par défaut cela éviterait les problèmes de CLSN2 oubliées et/ou de NotHitBy + PlayerPush = 0
Invité




Karma:
plus / moins

Localisation:
Répondre en citant
Super tuto

ca m'aide bien moi le grand debutant de mugen.
00. Le B.A.BA de la création de perso : le debug.
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum
Toutes les heures sont au format GMT + 2 Heures  
Page 1 sur 1  
Télécharger le sujet
  
  
 Poster un nouveau sujet