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
03. Les bases de la programmations (suite)
Mike Werewolf
Loup-garou

Site Admin


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

Localisation: France
Répondre en citant
Là, on commence à rentrer un peu dans la technique. A partir de maintenant, on va se baser sur KFM comme exemple.

Le fichier CMD se décompose en deux parties :
- L'une où l'on va référencer toutes les commandes réalisables
- L'autre où, pour chaque commande, on va définir les conditions de déclenchements des mouvements.


La première partie est la plus simple : c'est celle qui est composée de blocs "[Command]". Cette partie n'est pas à proprement parler de la programmation. On se contente de lister toutes manipulations qui peuvent produire un effet.

En soi, un bloc [Command] est extrêmement simple à faire. Voici un classique :

Code:
[Command]
name = "Hyper1"
command = ~D, DF, F, D, DF, F, x
time = 20



[Command] indique le début de la commande.
name indique le nom associé à la commande. C'est ce paramètre qui nous servira plus tard. Le nom doit toujours être entre guillemets.
command indique la commande à réaliser. Je détaillerai plus loin.
time indique le temps en tick dont dispose le joueur pour réaliser cette commande. Ce paramètre est optionnel, et s'il n'est pas précisé, Mugen considérera qu'il vaut 15.

La construction de la manipulation. Voici tout ce que vous devez savoir :
* Les directions :
U = Up = Haut
D = Down = Bas
F = Forward = Avant
B = Backward = Arrière

Pour les diagonales, il faut combiner deux lettre (DF = diagonale bas-avant par exemple).

* Les boutons :
Ils sont "CaSe-SeNsItIvE" (càd que pour eux, Mugen fait une différence entre majuscule et minuscule ; ainsi B est différent de b car le premier désigne la direction "Arrière" et le second, le bouton B). On utilise leur nom normaux (a, b, c, x, y, z) sauf pour Start qui se note "s".

* Les symboles spéciaux :
$ = pour un système "4-directions". Concrètement : si on indique "command = D", il n'y a qu'en appuyant sur D qu'on peut réaliser la commande. En revanche, avec "command = $D", on peut la réaliser en faisant D, mais également DF ou DB.
/ = "maintenir". Exemple : "command = /a" pour maintenir le bouton A enfoncé.
~ = "relâcher". Traditionnellement, les mouvements normaux du style D, DF, F, etc. commence parce symbole (cf. exemple). Selon Elecbyte, c'est la méthode utilisée par les jeux de combat les plus célèbres pour détecter les commandes.
+ = indique une simultanéité de commande : "command = a+b" signifie "appuyer sur a et b simultanément"
, = indique une succession de commande : "command = a, b" signifie "appuyer sur a puis sur b"

* Le temps :
Pour certains coups, on a besoin de spécifier un temps (exemple : les "charges" arrière, avant ou bas, haut). Voici à quoi ça peut ressembler :
command = ~30$B, F, x

Cette commande indique : "maintenir arrière (ou bas-arrière ou haut-arrière) pendant une demi-seconde (30 ticks), puis faire avant, et appuyer sur le bouton x.

D'ordinaire, on classe les commandes de la plus complexe à la plus simple (ex : on mettra un 2xQCF,x avant un QCF,x et ces deux commandes se trouveront avant la commande x).

Vous noterez également que certaines commandes sont commentées en ";Required (do not remove)". Ce qui signifie :
1. Que vous ne devez pas les enlever de ce CMD
2. Que si vous voulez faire un CMD en partant de zéro, ces commandes devront obligatoirement être présentes.

Petite subtilité avec les commandes : vous pouvez donner un même nom à plusieurs commandes différentes. Exemple :

Code:
[Command]
name = "TripleKFPalm"
command = ~D, DF, F, D, DF, F, x
time = 20

[Command]
name = "TripleKFPalm"   ;Same name as above
command = ~D, DF, F, D, DF, F, y
time = 20


Ces deux commandes sont nommées "TripleKFPalm". En fait on définit la même commande de deux façons différentes, ce qui signifie que le joueur peut réaliser cette commande de deux façons différentes.

On peut également nommer différemment deux commandes qui ont les mêmes manipulations, mais j'ai beau chercher, je ne vois pas l'intérêt (sauf à mettre un time différent, et encore)...

La seconde partie du CMD est plus technique ; elle concerne ce qu'on appellera les states -1. Cette partie commence par une ligne [StateDef -1]. Pour être précis, les states -1 sont une partie "détachée" du CNS.

Les states -1 définissent dans quelles situations les commandes listées avant peuvent être réalisées par le joueur. Pour l'instant, étant donné qu'on n'a pas encore vu les triggers, je vais rester très simple. Voici un petit exemple de State -1 :

Code:
[State -1]
type = ChangeState
value = 200
triggerall = command = "x"
triggerall = statetype = S
trigger1 = Ctrl
trigger2 = StateNo = [200,450]
trigger2 = MoveContact


Ce que vous devez retenir :
* On commence toujours par [State -1]. On peut également inclure un "repère" (un nom ou un numéro) pour identifier le state -1, du style : [State -1, stand light punch] ou [State -1, 1].
* Sauf cas exceptionnel, le type est toujours ChangeState. Notez bien cette fonction, c'est l'une des plus importante de Mugen. En effet, c'est elle qui permet au perso de "naviguer" de state en state et de changer de mouvements.
* La valeur du paramètre "value" correspond au numéro du state dans lequel sera placé le perso s'il réunit les conditions demandées.
* Dans la ligne "triggerall = command = "nom_de_commande"", "nom_de_commande" se rapporte au "name" de l'une des commandes listées dans la première partie.

Enfin, peut-être le plus important et le plus subtil à cerner : les state -1 doivent être classés par ordre de complexité des commandes, du plus complexe au plus simple. On l'a déjà vu dans la première partie, mais c'était plus une "norme" adoptée par tout le monde, alors qu'ici, c'est véritablement obligatoire.

Petite explication : Mugen lit les states -1 les uns après les autres. Pour chaque State -1, si les conditions sont remplies, Mugen arrête de lire les states -1 et met le perso dans le state spécifié. Sinon, il passe au state -1 suivant jusqu'à trouver un state -1 à déclencher ou qu'il n'y ait plus de state -1 à vérifier.

Je vais prendre un exemple pour que ça soit plus parlant : admettons que nous ayons trois commandes :
- "2QCF_x" : ~D, DF, F, D, DF, F, x
- "QCF_x" : ~D, DF, F, x
- "x" : x

Vous noterez que le fait d'appuyer sur x se retrouve dans les 3 commandes (~D, DF, F, D, DF, F, x - ~D, DF, F, x - x), et le fait de faire D, DF, F, x se retrouve dans QCF_x, mais également dans 2QCF_x (~D, DF, F, D, DF, F, x - ~D, DF, F, x).

3 states -1 correspondant, classés dans cet ordre : "x", "QCF_x" et enfin, "2QCF_x". Si on réalise la commande 2QCF_x, que se passe-t-il ? Mugen vérifie le state -1 se rapportant à "x", et pour lui, cette commande est réalisée, donc il déclenche le state -1 se rapportant à "x" et non celui se rapportant à "2QCF_x". Idem si on réalise la commande "QCF_x", c'est le state -1 se rapportant à "x" qui se déclenchera.

Le seul moyen pour éviter ça, c'est de mettre le state -1 se rapportant à "x" en dernier, pour que les autres commandes soit vérifiées avant. L'ordre des state -1 devient donc "QCF_x", "2QCF_x", et "x". Cette fois, quand on fait "QCF_x", le coup se déclenche normalement, mais si on fait "2QCF_x", c'est de nouveau le coup "QCF_x" qui sort, parce que Mugen vérifie ce state -1 de "QCF_x" en premier et détecte que la commande est réalisée. Là encore, on doit donc mettre "2QCF_x" avant pour que la réalisation de la commande soit bien détectée. L'ordre devient donc : "2QCF_x", "QCF_x", "x" : les commandes sont ainsi classées de la plus complexe à la plus simple. Et là, ça marchera.

Pour le reste (les lignes commençant par "trigger..."), nous les verrons plus tard. Sachez seulement que ce sont les conditions qui doivent être remplies (ex. pour un projectile au sol, on devra préciser que le perso est debout, qu'il n'y a pas déjà un autre projectile, etc.).

Quelques remarques :
- Chaque state -1 correspond au moins une commande (rarement plus, mais ça peut arriver). Il arrive, dans certains cas (l'AI notamment) qu'il n'y ait pas de commande avec un state -1.
- Chaque commande ne correspond pas forcément à un state -1 (les commandes peuvent aussi être utilisées dans le CNS).
- Evidemment, une commande indiquée dans le state -1 doit forcément correspondre à une commande définie dans la première partie du CMD.

Maintenant, voici le principe de fonctionnement :
- A chaque tick, Mugen vérifie les state -1 dans l'ordre.
- S'il n'y a aucun state -1 à déclencher, rien ne se passe (le perso reste dans son state).
- S'il y a un state -1 à déclencher, Mugen interrompt le state dans lequel se trouve le perso pour le placer dans celui précisé par le State -1.

Voilà pour le CMD. ^^

Mike Werewolf.
Mike Werewolf est absent 
lucier lenlen

Invité



Karma:
plus / moins

Localisation:
Répondre en citant
Lut!!
La 2eme partie du cmd etait un peu confu pour moi maintenant
tout et clair.
C 'est vraiment plus simple que ce que je pensé.

Bravo Mike Werewolf
Pour l' instant tout et parfait.
Vraiment c' est pas possible de faire plus simple.
03. Les bases de la programmations (suite)
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