Tutorial Création et Adaptation de personnages sous Mugen par Sunny : 3eme Partie
Le fichier CNS
C'est dans ce fichier que se trouve toute la partie programmation du personnage. Ce fichier est également divisé en deux parties :
- la définition des constantes du personnage.
- la définition de ses states (états).
Les constantes du personnageCe sont les valeurs numériques dont le programme va se servir par exemple pour déterminer
à quelle hauteur peuvent sauter les personnages, quelle est leur taille, leur vitesse de déplacement... Ces constantes sont réparties
par catégories.
Ouvrez le fichier CNS de KFM pour voir quelles sont ces constantes.
[Data]
life = ; points de vie du personnage.
attack = ; puissance d'attaque (plus ce chiffre est élevé, plus le perso peut faire de dégâts).
defence = ; défense (plus ce chiffre est élevé, plus le perso est résistant aux attaques).
fall.defence_up =
liedown.time = ; temps que le joueur passe á terre avant de se relever.
airjuggle = ; nombre de points de jonglage
(pour les combos).
sparkno = guard.sparkno =KO.echo = ; mettez 1 pour activer l'écho au moment du KO.
volume = ;
réglage du volume.
IntPersistIndex = 60FloatPersistIndex = 40Certaines de ces constantes peuvent se régler
manuellement. Pour le liedown.time par exemple, il suffit de compter le nombre de ticks le personnage reste couché à terre avant que ne
débute l'animation où il se relève. Pour d'autres constantes telles l'attaque ou la défense, ce sera plutôt au jugé. Pour d'autres
encore, ne comprenant pas à quoi elles servent, on ne pourra rien modifier.
[Size]xscale = ; pour étirer
horizontalement votre perso.
yscale = ; pour étirer verticalement votre perso.
En modifiant ces deux constantes proportionnellement,
on peut obtenir des effets de zoom pour adapter la taille d'un perso à ceux des autres. Par exemple, on peut rétrécir les persos
provenant de Art Of Fighting pour qu'ils aient la même taille que ceux de KOF (le résultat n'est jamais excellent toutefois).
En modifiant ces variables, on peut également donner aux persos KOF un look Capcom et vice-versa. Des valeurs pour obtenir ces
effets avaient été données il y a de cela un moment dans le Mugen Dev Forum, mais les posts traitant de ce sujet ont disparu avec
le rebootage du forum. Si quelqu'un par ici les connaît, qu'il les fasse savoir :).
ground.back = ; largeur du personnage de
son centre vers l'arrière lorsqu'il se trouve à terre.
ground.front = ; largeur du personnage de son centre vers l'avant lorsqu'il
se trouve à terre.
air.back = ; largeur du personnage de son centre vers l'arrière lorsqu'il se trouve en l'air.
air.front = ;
largeur du personnage de son centre vers l'avant lorsqu'il se trouve en l'air.
height = ; taille du personnage par dessus laquelle
les autres personnages peuvent sauter.
Ces valeurs définissent un rectangle qui représente le corps du personnage. Lorsque deux
corps se rencontrent, ils ne peuvent pas se transpercer. Pour définir la largeur du personnage, prenez deux fois le même personnage
dans son jeu d'origine et faites les se rencontrer (qu'ils avancent jusqu'à ce qu'ils se bloquent mutuellement) et notez là où les
sprites se croisent. Puis reculez votre perso jusqu'à ce qu'il soit bloqué par le bord de l'écran. Notez quelle est la partie du
sprite qui touche le bord. Vous savez maintenant où se trouve l'avant et l'arrière du perso et vous connaissez son centre ; vous
pouvez calculer ces distances. Faites la même chose lorsque le perso est en l'air (c'est moins évident à faire toutefois).
attack.dist = ; distance d'attaque par défaut.
proj.attack.dist = ; même chose mais pour les projectiles.
Aucune idée quand à
l'utilisation de ces variables par Mugen.
proj.doscale = ; mettez cette constante à 1 si vous voulez que les valeurs du xscale
et du yscale s'appliquent aussi aux projectiles.
head.pos = ; position de la tête par rapport au centre du perso
(qui je le rapelle se trouve là ou ses axes se rencontrent : à ses pieds, au niveau du centre de sa ceinture en général).
mid.pos = ; position de la ceinture du personnage par rapport à son centre.
shadowoffset = ; pour changer la position de
l'ombre du perso.
draw.offset = ; pour modifier la position où est dessiné le perso (son centre ne bouge pas par contre).
Si vous avez l'impression que votre perso marche à moitié en l'air (son ombre ne touche que l'un de ses pieds par exemple), montez
ou descendez l'ombre du perso ou le perso lui même.
[Velocity]walk.fwd = ; vitesse de
marche avant.
walk.back = ; vitesse de marche arrière.
run.fwd = ; vitesse pour la course en avant (horizontale et verticale,
si le perso au lieu de courir fait un rapide/court saut avant).
run.back = ; vitesse pour la course en arrière (horizontale et
verticale, si le perso au lieu de courir fait un rapide/court saut arrière).
jump.neu = ; vitesse du saut sur place.
jump.back = ; vitesse du saut avant.
jump.fwd = ; vitesse du saut arrière.
Les vitesses suivantes sont optionnelles :
runjump.back = ; vitesse du saut avant lorsque le personnage court.
runjump.fwd = ; vitesse du saut arrière lorsque le personnage
court.
airjump.neu = ; vitesse du saut sur place lorsque le perso est en l'air (si le perso peut sauter en l'air).
airjump.back = ; vitesse du saut arrière lorsque le perso est en l'air.
airjump.fwd = ; vitesse du saut avant lorsque le perso
est en l'air.
Certains personnages peuvent faire un double saut : saut normal suivi d'un autre saut alors que le personnage est
encore dans les airs. Ces derniers paramètres permettent de configurer ces sauts.
Comment calculer la vitesse de déplacement
(verticale) d'un perso :1 - pour les persos Neo Geo, il est possible d'utiliser le Debug Bios. Matez le tutorial sur le debug
bios fait par Faye.
2 - Pour les calculs de déplacement d'un mouvement allez voir le tutorial d'Iron Mugen sur le Cute Forum.
3 - calculer la vitesse au jugé, en comparant le jeu original avec votre conversion.
4 -Allez voir sur le
Mugen DEV Il y a pas mal d'expliquations.
A titre de précision, voici comment fonctionnent les coordonnées sous Mugen : les abscisses (l'axe horyzontal) sont les x et les
ordonnées (l'axe vertical) sont les y (comme dans vos cours de maths). Dans Mugen, une abscisse négative (position ou vitesse) bouge le
perso vers l'arrière et une positive le bouge vers l'avant. Mais, contrairement aux représentations que l'on vous a fait dans vos cours de
maths, une ordonnée négative déplace le perso vers le haut et une positive le déplace vers le bas.
[Movement]
airjump.num = ; nombre de double-sauts que le personnage peut faire (optionel)
airjump.height = ; distance du sol avant que
le personnage soit autorisé à faire son double saut (optionnel)
yaccel = ; accélération verticale
stand.friction = ; coefficient de
friction (perte de vitesse) lorsque le personnage est debout
crouch.friction = ; coefficient de friction lorsque le personnage est
accroupi
Pour cette partie, prenez également le fichier CNS de KFM et virez tout à l'exception des constantes. Puis modifiez celles
que vous pensez pouvoir modifier : pour l'instant inutile de se prendre la tête sur les constantes que l'on ne peut contrôler. Concentrez
vous sur celles que vous pouvez définir précisément. Laissez les autres telles qu'elles sont.
La définition des States
Nous verrons cette partie prochainement. Pour le moment, mettez simplement à la suite de vos constantes les lignes suivantes :
[statedef 200][state 200]
type = null
trigger1 = 1
Ces lignes représentent l'action à
effectuer lorsque la commande a (celle que nous avons précédemment définie dans le CMD) est effectuée, c'est à dire pour le moment rien
(null). Toutefois, si cette action n'est pas présente, Mugen ne pourra pas lancer le personnage.