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.



 
   Home
   About
   FAQ
   Disclaimer
   Staff/Thanks
   Contact



   Forum in french
   and english.

   Iris-Net



   
   Delta Park
   Sunny World
   Neoxfight Studios
   Mike Mugen
   Gods Anger
   Matmut's Creations
   Byakko
   :o domain
   Fun Factory
   Mugen Guild
   Anime Mugen
   Shin Mugen





Cute Mugen | © 2002 - 2004 | All Rights Reserved.