M E N U
N E W S
News
Mugen News
Site News
Old News
D O W N L O A D
Characters
Athena 2001
Athena 2002
Neo Athena
Evil Ryu
Violent Ken
Lynn Baker
Karin
Sissy
Sakura
Hosted
Diao
Kyo
Stages
Neogeo 1
Neogeo 2
Neogeo 3
Neogeo 4
EFZ
EFZ 2
Melty Blood
Others
Add-ons
Screen Pack
Tools/Others
Video
W I P
Characters
Mina
D O C S
Tutoriels (FR)
Personnages
Stages
Barres de vie
Screen Pack
Intro-Fin
FAQ (FR)
Lexique
Mugen
Personnages
Stages
Screen Pack
Communauté
Mugen Torch
Text in French
Text in English
A R T S
Iris-Net
|
Tutorial Création et Adaptation de personnages sous Mugen par Sunny : 4eme Partie
Précisions concernant les triggers
Dans Mugen, les triggers sont numérotés, ce qui nous permet de faire faire au moteur de jeu une action sous plusieurs conditions
différentes :
[State 200, 1] type = null trigger1 = time = 1 trigger2 = vel x >= 0
Dans le cas ci-dessus,
l'action null se déclenche soit lorsque le perso se trouve dans ce state depuis 1 tick, soit lorsque sa vitesse horizontale est
positive (il est en train d'avancer). Il est possible d'empiler de cette manière les triggers (1, 2, 3, etc...) pour définir
plusieurs déclencheurs. Comment faire pour que plusieurs conditions soient réunies en même temps ? Il faut mettre tout sous le
même numéro de trigger :
[State 200, 1] type = null trigger1 = time = 1 trigger1 = vel x >= 0
Dans ce cas-ci,
le perso doit se trouver dans ce state depuis 1 tick ET sa vitesse horizontale doit être positive pour que l'action soit effectuée.
Il est possible de combiner les numéros de triggers pour avoir des conditions plus complexes :
[State 200, 1] type = null
trigger1 = time = 1 trigger1 = vel x >= 0 trigger2 = time = 5 trigger2 = vel x >= 0 trigger3 = time = 10 trigger3 =
vel x >= 0
Ici, nous pouvons voir que la condition vel x >= 0 est commune à tous les triggers. Pour simplifier et rendre plus
lisible une action, il est possible de regrouper les conditions communes à tous les triggers dans un triggerall. L'exemple suivant
est équivalent à celui du dessus :
[State 200, 1] type = null triggerall = vel x >= 0 trigger1 = time = 1 trigger2 =
time = 5 trigger3 = time = 10
Attention : chaque action doit comporter un trigger1. Si vous vous contentez de mettre un
triggerall isolé, Mugen vous sortira une erreur. Par ailleurs, tout comme il est possible de mettre plusieurs triggerx, il est
possible de mettre plusieurs triggerall.
Pour résumer :
- mettez TOUJOURS un trigger1 dans l'action que le programme doit effectuer - si différentes conditions peuvent être réunies,
mettez les sous des numéros de triggers différents - si plusieurs conditions doivent être remplies EN MEME TEMPS, mettez-les
sous les mêmes numéros de triggers - si des conditions sont communes aux différents triggers, mettez sous plusieurs triggerall.
Les expressions
Lors de la programmation de votre perso, vous aurez à travailler sur des valeurs numériques :
additionner soustraire, comparer... les vitesses de déplacement, la position des persos à l'écran, le temps... Vous aurez également
à comparer des conditions, voir si elles se réalisent en même temps...
Derrière la plus part des triggers présentés dans le
Trigger List se trouvent des valeurs numériques. Par exemple, le terme vel x représente la vitesse de déplacement horizontale du
personnage (vitesse = nombre). Du coup, il est possible de les inclure dans des opérations arithmétiques ou de les comparer.
Par ailleurs, le résultat de beaucoup d'actions réalisées par le programme se traduisent en chiffres (ce qui est logique :
l'ordinateur est une grosse machine à calculer). Du coup, il est important de savoir ce que l'on peut faire avec ces nombres.
Voici un petit aperçu de ce qu'il est possible de faire.
- Les opérations arithmétiques : Additions (+), soustractions (-),
multiplications (*) et divisions (/) fonctionnent selon les règles d'arithmétique que l'on vous a enseigné : les multiplications
et divisions seront calculées avant les addition et soustractions, les opérations entre parenthèses avant les opérations en dehors
des parenthèses et les opérations sur la gauche avant celles se trouvant à droite.
- Les comparateurs : Il est également
possible de comparer ces valeurs : égalité (=), différence (!=), supériorité (stricte > ; large >=), infériorité (stricte < ; large <=).
Si la comparaison est vraie (ex : vel x >= 3), la valeur renvoyée est 1 (-> la comparaison est vraie) ; autrement la comparaison
est égale à 0 (-> la comparaison est fausse).
- Les intervalles : Ils servent à prendre en compte une série de nombres.
On utilise soit les crochets [], soit les parenthèses (), soit un mix des deux [) (]. Les crochets indiquent que l'on prend les
valeurs extrêmes ; les parenthèses indiquent que l'on ne les prend pas. Pour être plus clair : [8, 12] signifie tous les nombres
compris entre 8 et 12, 8 et 12 compris. (8, 12) signifie tous les nombres compris entre 8 et 12, à l'exception de 8 et 12.
[8, 12) signifie tous les nombres compris entre 8 et 12, à l'exception de 12. (8, 12] signifie tous les nombres compris entre
8 et 12, à l'exception de 8.
- Les opérateurs logiques : Ils servent pour assembler les conditions entre elles : ET :
condition1 && condition2 signifie les conditions 1 et 2 doivent être réunies. Revient au même que taper : trigger1 = condition1
trigger1 = condition2 OU inclusif : condition1 || condition2 signifie la condition 1 ou la condition 2 ou les deux
conditions en même temps doivent êtres réunies. Revient au même que taper : trigger1 = condition1 trigger2 = condition2
OU exclusif : condition1 ^^ condition2 signifie la condition 1 ou la condition 2 mais pas les deux en même temps doivent
êtres réunies. Ces opérateurs logiques peuvent être combinés aux triggers : ca permet de supprimer des lignes pour clarifier.
- Les conditions ifelse() : permet de tester si une condition est vraie. Si elle l'est, on effectue une opération ; si
elle ne l'est pas, on effectue une autre opération. ifelse(condition, opération1, opération2) signifie si la condition est vraie,
faire l'opération 1, autrement faire l'opération 2 Il est possible d'imbriquer les ifelse() comme des poupées russes pour obtenir
des conditions plus complexes du type : ifelse(condition1, opération1, ifelse(condition2, opération2, opération3)) Faites
attention aux parenthèses lorsque vous imbriquez des ifelse !
D'autres symboles peuvent être utilisés pour indiquer à Mugen
quelle opération on veut effectuer ou pour comparer deux valeurs ou expressions. Ceci-dit elles sont plus obscures (pour moi en tout
cas) et il est peu probable que vous les utilisiez un jour. Tous les symboles et expression que Mugen gère se trouvent dans le
fichier Expressions ( exp.txt).
Les variables
Mugen gère trois types de nombres : - les triggers : ces
nombres varient en fonction des mouvements du personnage (si il avance, sa vitesse augmente et la distance qui le sépare de son
adversaire diminue, lorsqu'il se prend un coup, son énergie baisse, etc). - les constantes : qui sont des nombres fixes, qui ne
varient pas au cours d'une partie. - les variables : ce sont des nombres qui peuvent varier selon ce qu'a prévu l'auteur du perso.
Au départ, elles sont fixées à 0, mais en cours de partie on peut leur assigner la valeur que l'on veut.
Exemple de deux
actions utilisant des variables : 1 - activation de la variable (obligatoire si on veut l'utiliser) : [state 200, initialisation] type = varset
trigger1 = time = 0 v = 1 value = 0 ; La variable 1 reçoit la valeur 0
2 - incrémentation de la variable à chaque
tick [state 200, incrémentation] type = varadd trigger1 = time > 0 v = 1 value = var(1) + 1 ; A chaque nouveau
tick, le programme prend l'ancienne valeur de la variable et la remplace par (ancienne valeur + 1)
Les states standards
et spéciaux
Comme vous l'avez remarqué au moment de créer le DEF, Mugen dispose d'une série de states standards qui
eux mêmes utilisent des animations standard. Ces states se trouvent dans le fichier common1.cns dans le sous-répertoire Data de
Mugen. Ces states couvrent des mouvements tels que les déplacements ou ce que deviennent les persos lorsqu'ils sont touchés.
Bien que standards, rien ne vous empêche d'inclure ce states dans votre propre CNS et de les modifier. En effet, Mugen ne va
dans le common1.cns que si il ne trouve pas ces states dans votre CNS. Par exemple, on peut modifier le state de la course
(le numéro 100) pour que le personnage freine lorsqu'il sort de cet état au lieu de retourner directement au stance. Si vous
décidez de modifier un state standard, faites bien attention lorsqu'une nouvelle version de Mugen sort que ce dernier ne les
gère différemment par rapport à la version précédente. Auquel cas, il faudra que vous modifiez ces states pour prendre en compte
ces modifications.
Hormis les states traditionnels, votre perso dispose également de 3 states spéciaux numérotés -1, -2 et -3.
Ces states ne sont rattachés à aucun mouvement en particulier si ce n'est à l'existence même de votre perso. Les actions qui se
trouvent dans ces states peuvent être exécutées n'importe quand (sous conditions que leurs triggers soient activés), quel que soit
le state dans lequel se trouve le perso.
Je ne saurai pas vous décrire la particularité du state -1 par rapport aux deux
autres, mais vous avez pu remarquer qu'il est utilisé pour activer les commandes dans le CMD. Le state -2 regroupe toutes les
actions dont les conditions seront vérifiées à chaque tick. Même chose pour le state -3 hormis que cette vérification n'est pas
faites lorsque le perso utilise d'autres states que les siens (nous verrons cela au moment de la création des projections).
Faites attention lorsque vous utilisez le state -2. Comme je viens de l'indiquer, le perso peut momentanément utiliser les states
de son adversaire. Mais en même temps il a accès à ses variables. Aussi, si vous ne prenez pas garde, vous risquez d'écrire pas
dessus les variables de votre adversaire, ce qui n'est pas-mais-alors-pas-bien-du-tout si cette variable est importante pour ce perso.
Et comme on ne sait pas quels variables sont importantes, il ne vaut pas mieux changer des variables dans un state -2 à moins de
prendre certaines précautions.
| |
| | |
|