Archive for the “Tutoriels” Category

Comme on le voit dans l’article précédent, installer un personnage n’est pas forcément très compliqué, mais requiert quelques précautions, et parfois quelques petites manipulations.

Pour simplifier un peu les choses, les dernières versions de Mugen supportent désormais les personnages compressés, ce qui tombe bien puisque c’est souvent, pour ne pas dire tout le temps, sous cette forme que sont distribués les personnages.

Voyons un peu comment ça marche.

Si la procédure d’installation est simplifiée, elle est aussi plus « rigide ». En effet, ce système ne fonctionnera pas dans les cas suivants :

  • L’archive n’est pas au format ZIP : c’est, au moins pour le moment, le seul format de compression supporté par Mugen. Si vous avez une archive RAR, il faudrait donc la décompresser pour recompresser les fichiers au format ZIP, mais puisqu’on doit décompresser les fichiers, autant passer dans ce cas par la méthode classique.
  • Les fichiers n’ont été compressés directement (c’est le dossier contenant les fichiers qui a été compressé) : dans ce cas, Mugen ne trouvera pas le fichier DEF car Mugen va le chercher à la « racine » de l’archive, en quelque sorte, et qu’il ne s’y trouve pas.

Si votre personnage ZIP n’est pas reconnu dans Mugen, c’est probablement que vous êtes dans le second cas ; là encore, la seule solution est de passer par la méthode classique.

1. Emplacement du fichier

Par défaut, quand on lui donne un nom comme « KFM », Mugen sait qu’il doit chercher dans chars/ un dossier « KFM » puis, dedans, un fichier KFM.def. Bref, le point de départ, c’est le dossier chars/. Si on considère que l’archive ZIP « remplace » le dossier du personnage, c’est logiquement que l’on va mettre le fichier ZIP là où on aurait mis le dossier du personnage : directement dans le dossier chars/.

Les personnages compressés sont placés dans le dossier chars/.

C’est tout pour cette étape !

2. Vérification du nom de fichier

Une étape assez courte, là encore : vous devez vérifier le nom du fichier DEF contenu dans l’archive. Pas besoin d’extraire pour cela : il suffit d’ouvrir l’archive pour voir son contenu, et refermer :

Le contenu d’un fichier ZIP de personnage : trouvez le fichier DEF.

Il y a 2 possibilités :

  • Le nom du fichier ZIP et le nom du fichier DEF sont identiques : c’est le cas dans la capture ci-dessus (le nom du fichier ZIP apparaît dans la barre de titre tout en haut) : sasquatch.zip et sasquatch.def,
  • Le nom du fichier ZIP est différent du nom du fichier DEF (exemple, si on avait eu sasquatch.zip et ssquatch.def)

Selon le cas, la suite de l’installation va légèrement changer.

3. Insertion dans Mugen

C’est une étape qui ressemble un peu à celle décrite dans la méthode classique (je vous renvoie à l’article en question pour plus de détails), à savoir qu’il faut ajouter votre personnage dans le groupe [Characters] du fichier data/select.def, sauf que cette fois, au lieu d’inscrire le nom du dossier du personnage, on va inscrire le nom du fichier ZIP :

sasquatch.zip

Et c’est là que la vérification du point 2. va servir : si vous êtes dans le premier cas (nom du ZIP = nom du DEF), vous avez fini, votre personnage est normalement jouable dans Mugen.

En revanche, dans le deuxième cas, vous allez devoir rajouter le nom du fichier DEF à la suite du fichier ZIP, en séparant les deux par un deux points « : », comme ceci :

sasquatch.zip:ssquatch.def    ; pour reprendre l’exemple donné.

Sauvegardez votre fichier select.def.

4. Limitations

Ce type d’installation présente certains avantages, comme le fait que le personnage prenne moins de place (vu qu’il est compressé), que vous n’avez pas des fichiers plein partout, et que la manipulation pour l’installer est plus simple.

Néanmoins, gardez à l’esprit qu’elle n’est pas applicable à tous les personnages (cf. ce qui a été dit au début). En outre, les « storyboards » (scènes cinématographiques) liées au personnages (intro et fin) ne peuvent pas être jouées à partir d’un personnage compressé. Enfin, si vous avez dans l’optique d’apprendre à programmer des personnages, il vous faudra bien travailler sur les fichiers de code et non sur des fichiers zippés ; idem si vous souhaitez simplement étudier le code d’un personnage pour comprendre son fonctionnement.

Tout ça pour dire qu’un Mugen ne comportant que des personnages compressés est encore un peu utopique…

Comments Aucun commentaire »

Voilà, Mugen est installé, configuré ! Bon, mais avec juste 2 versions de KFM, y a pas de quoi s’extasier… Il est temps d’enrichir le moteur avec des éléments. Le plus évident, ce sont les personnages.

Vous les trouverez par centaines sur le net, à commencer par ce site. N’oubliez jamais l’adage de base : « Google est votre ami », c’est une règle d’or dans la recherche d’éléments !

1. L’extraction des fichiers

Les éléments, et donc les personnages pour le sujet qui nous intéresse aujourd’hui, se présentent sous forme d’archives compressées, le plus souvent aux formats ZIP ou RAR (on trouve également des formats parfois « exotiques » comme le DCG, mais ça reste assez rare). Vous devez donc disposer d’un logiciel de compression vous permettant de décompresser ces formats. Outre les ténors du genre que sont WinZip et WinRar, il en existe d’autres, comme 7-zip ou Izarc, tout à fait satisfaisants pour l’utilisation que nous en ferons.

La plupart de ces logiciels permettent d’ajouter des options au menu contextuel (le menu qui apparaît lorsque vous faites un clic droit). L’une de ces options sera assez pratique : elle permet d’extraire les fichiers dans un dossier portant le nom de l’archive.

Options d'extractionOptions d’extraction du menu contextuel pour 7-zip, WinRar et WinZip

A partir de là, il faut savoir qu’il y a 2 « Ã©coles » de compressions des éléments :

  1. Les fichiers sont compressés directement dans l’archive : l’option « Extraire ici » décompresse donc les fichiers directement dans le dossier où vous vous trouvez,
  2. C’est le dossier contenant les fichiers qui est compressé : l’option « Extraire ici » décompresse donc les fichiers dans un sous-dossier.

Ceci a une assez grande importance dans Mugen, car les fichiers des personnages doivent se trouver à des emplacements bien précis pour que Mugen puisse les trouver.

En gros, les fichiers d’un personnage doivent être placés dans un dossier portant le nom du personnage, et ce dossier doit lui-même se trouver dans le dossier chars/ de Mugen. Exemple : les fichiers de Kung-Fu Man (abrégé KFM) se trouvent dans chars/KFM/.

Il faut donc commencer par placer l’archive dans le dossier chars/ puis extraire.

Si le créateur a utilisé la première méthode de compression, dans ce cas, le plus simple est donc de décompresser dans un sous-dossier portant le nom de l’archive. En revanche, s’il a utilisé la seconde méthode, c’est « Extraire ici » qui est recommandé. Le problème, c’est qu’on ne peut jamais savoir à l’avance quelle méthode a été choisie, et donc quelle est la méthode idéale pour décompresser.

Personnellement, je vous recommande de toujours considérer que c’est la première méthode qui a été utilisée, et donc de décompresser dans un sous-dossier, car si vous faites « Extraire ici » alors que c’est la première méthode qui a été utilisée, vous allez vous retrouver avec plein de fichiers qui se baladent dans le dossier « chars/ », et vous risquez d’en oublier lorsque vous les déplacerez.

Notez en outre que certains personnages utilisent une structure « interne », c’est-à-dire qu’ils possèdent des sous-dossiers contenant d’autres fichiers. Ce que j’appelle les « fichiers du personnages », ce sont les fichiers et sous-dossiers (si vous avez un dossier au même endroit que des fichiers, et notamment le fichier DEF, ce sont des sous-dossiers englobés dans la notions de « fichiers du personnage »).

Partant de là, on va envisager plusieurs cas de figure. Le premier, c’est le cas idéal : les fichiers étaient directement compressés, et vous obtenez donc le schéma suivant :

chars/dossier_portant_le_nom_de_l’archive/fichiers_du_personnage

Dans ce cas, vous pouvez passer à l’étape 2. Deuxième cas : les fichiers étaient déjà compressés dans un fichier. Vous obtenez alors ce schéma :

chars/dossier_portant_le_nom_de_l’archive/dossier_contenant_les_fichiers/fichiers_du_personnage

le dossier_portant_le_nom_de_l’archive/ et le dossier_contenant_les_fichiers/ peuvent avoir le même nom ou pas, ce n’est pas important. Dans ce cas, vous devez vous placer dans le dossier_contenant_les_fichiers/, copier l’intégralité des fichiers (faites un Ctrl+A pour les sélectionner tous), et les coller dans le dossier_portant_le_nom_de_l’archive/. Ensuite, vous pouvez supprimer le dossier_contenant_les_fichiers/.

Vous devez donc normalement vous retrouver dans le schéma idéal :

chars/dossier_portant_le_nom_de_l’archive/fichiers_du_personnage

2. Vérification des noms de fichiers/dossier

Avant d’aller plus loin, il convient d’effectuer une petite vérification extrêmement basique : vous devez comparer le nom du dossier contenant les fichiers du personnage avec les fichiers DEF contenus dans ce dossier. Pour que tout soit correct, il faut que le nom du dossier concorde avec l’un des fichiers DEF.

Notez que cette comparaison n’est pas « case-sensitive » (c’est-à-dire qu’on ne s’occupe pas du fait que les noms soient en majuscules ou en minuscules).

Exemple pour Kung-Fu Man :

  • Le dossier est chars/KFM/
  • Ce dossier contient un fichier kfm.def (si vous regardez bien, il y a également des fichiers intro.def et ending.def, mais l’important, c’est d’avoir au moins 1 fichier DEF correspondant au nom du dossier).

Si c’est le cas, c’est bon, vous pouvez passer à l’étape 3. Sinon, il vous faut modifier soit le nom du dossier, soit le nom du fichier DEF afin que les 2 concordent. Par convention, on modifie le nom du dossier plutôt que celui du fichier DEF, même si cela n’a pas de réelle incidence.

Voilà, votre personnage est désormais prêt à être inséré !

3. Insertion dans Mugen

Maintenant que votre personnage est prêt à être utilisé par Mugen, il ne reste plus qu’à l’ajouter dans Mugen. Pour cela, il faut ouvrir le fichier select.def qui se trouve dans le dossier data/. Ce fichier s’ouvre avec n’importe quel éditeur de textes (cf. ce qui a été dit à l’article précédent pour le fichier mugen.cfg).

Ce fichier débute par un groupe [Characters], dans lequel vous allez pouvoir placer vos personnages. Sous la ligne [Characters], il y a normalement toute une série de lignes débutant par des « ; » et la dernière ligne indique « ;Insert your characters below. ».

Il suffit alors de taper le nom du dossier sous cette ligne. Notez que l’ordre de la liste correspond à l’ordre d’affichage dans l’écran de sélection dans Mugen (1ère ligne = 1ère case en haut à gauche).

Pour reprendre l’exemple de KFM, c’est logiquement qu’on trouve dans le select.def :

kfm, stages/kfm.def

Ici, kfm = nom du dossier contenant les fichiers de Kung-Fu Man = nom du fichier DEF dans le dossier KFM/. Ne vous souciez pas pour le moment de ce qu’il y a après le nom du personnage. Enregistrez le fichier select.def, et lancez Mugen : votre personnage doit maintenant apparaître dans la grille de sélection !

Attention ! Notez que dans le Mugen de base, vous ne pouvez mettre que 10 personnages ! Si vous en mettez davantage, tous les personnages inscrits à partir de la 11ème position n’apparaîtront pas.

4. Conclusion

Bon, c’était un peu long, mais surtout parce qu’il y avait des petits détails à éclaircir avec les méthodes d’extraction. En pratique, insérer un personnage demande quelques secondes seulement !

Retenez surtout cette règle de base :

Nom inscrit dans le select.def =

Nom du dossier du personnage =

Nom du fichier DEF du personnage

Si vous respectez cette règle à la lettre, vous n’aurez pas de souci pour ajouter des personnages.

Comments Aucun commentaire »

Maintenant qu’on a installé Mugen, on peut le configurer. Il y a deux aspects dans cette étape : la première, c’est la configuration « logicielle », c’est-à-dire, celle qu’on réalise via l’interface de jeu. La seconde, c’est la configuration manuelle, qui nous oblige à aller fouiner dans un fichier, et à le modifier avec un éditeur de textes (type bloc-notes). Cette seconde configuration est donc un peu plus rébarbative, mais elle est aussi plus pointue : tous les réglages de la configuration logicielle peuvent être faits (en théorie) en manuel, mais l’inverse n’est pas vrai, loin de là ! Pourquoi ne pas tout configurer en manuel, alors ? Pour une raison assez simple : l’un des réglages du logiciel, c’est la configuration des touches de jeu, qui sont codées ; il faudrait donc connaître les codes des touches pour le faire en manuel, alors que via l’interface, c’est plus rapide et il suffit d’appuyer sur les boutons voulus.

Notez tout d’abord que si vous souhaitez configurer un Joystick ou une manette, celui-ci doit être actif au moment où vous lancez Mugen, sinon, il ne sera pas reconnu.

Lancez Mugen, et allez dans le menu Options. Ce menu n’est en fait pas visible au format 16/9ème. Lorsque vous êtes sur « Arcade » (le premier choix du menu principal, et celui sélectionné par défaut au lancement de Mugen), appuyez 2 fois sur la direction « haut », et appuyez sur « Entrée ».

Le menu Options de Mugen

Commençons par les 2 options du bas, qu’on retrouve dans tous les sous-menus :

  • Return to… (touche Escape, Esc ou Echap) vous permet de revenir au menu précédent.
  • Default values restaure les paramètres par défaut pour le menu en cours.

Passons aux autres options : vous pouvez régler la difficulté du jeu (celle-ci reste quand même un peu subjective, et liée à la façon dont les personnages sont codés), le niveau de vie de départ (normalement 100%), la durée d’un round, la vitesse du jeu, et le volume des sons Wav et Midi. Nous reviendrons sur l’option « Input Config » juste après. Le « Team Mode Config » vous permet de paramétrer certains aspects des modes « Team » (combats par équipes).

Options de combat par équipe.

« 1P VS Team Advantage » : lorsqu’un personnage se bat seul contre une équipe (plusieurs combattant), il peut bénéficier d’un avantage sur son niveau de vie de départ. Par défaut, le réglage est sur 150%, ce qui veut dire que le joueur seul aura un niveau de vie de départ équivalent à 1,5 fois son niveau normal (celui de ses adversaires restant inchangé). Vous pouvez augmenter ou diminuer ce niveau.

« If Player KOed » : Dans le cas où le joueur (humain) fait partie d’une équipe, ce paramètre détermine si le combat doit s’arrêter lorsque le personnage du joueur est mis KO ( »Team loses »), ou si le partenaire du joueur peut continuer le combat seul ( »AI keeps fighting »).

Venons-en maintenant au plus intéressant dans cette partie : le « Input Config ». C’est un menu qui va vous permettre de régler les touches de jeu. Depuis le menu Options, vous pouvez faire directement « F1″ pour y accéder.

Menu de configuration

Vous pouvez choisir d’activer (Enabled – par défaut) ou de désacticer (Disabled) la manette ou le joystick (pour ne jouer exclusivement qu’au clavier), avec l’option Joystick. Le « Key Config » (accessible avec la touche F1) vous permet de paramétrer les touches clavier pour jouer à Mugen, et ouvre un nouvel écran :

Configuration pour le clavier

D’ici, faites simplement F1 pour lancer la configuration. Vous avez 4 directions à entrer (haut, bas, gauche et droite), et 7 boutons (a, b, c, x, y, z et start), sachant que a, b et c sont généralement réservés aux coups de pied, alors que x, y et z sont généralement dédiés aux coups de poing.

Dans ce menu, en faisant F2, vous pouvez également configurer de la même façon les touches clavier pour le joueur 2.

Depuis le menu précédent, si vous faites F2 au lieu de F1, et si vous avez une manette branchée (et si l’option Joystick est bien sur « Enabled »), vous accéderez au menu de configuration de la manette, qui se présente rigoureusement de la même façon (et là encore, « F2″ vous permettra d’assigner les touches du joueur 2).

Une fois vos options modifiées, elles sont immédiatement appliquées. Néanmoins, en l’état, elles ne sont valables que pour la session en cours, ce qui veut dire que dès que vous fermerez Mugen, elles seront perdues. Ca peut être intéressant pour utiliser exceptionnellement des valeurs différentes ou une configuration différente, sans perdre les réglages habituels.

Pour enregistrer les options modifiées, vous devez revenir au menu Options de départ, et vous placer sur « Load/Save ». Là, faites gauche ou droite pour que la valeur affichée à droite soit « Save » et non plus « Load », puis faites Start : les réglages sont enregistrés !

Les options sont sauvegardées.

La fonction « Load » vous servira à réinitialiser vos paramètres si vous les avez modifiés, sans avoir à éteindre puis relancer Mugen.

La configuration logicielle s’arrête là. On peut passer à la configuration manuelle. Tout se passe dans un unique fichier : mugen.cfg, qui se trouve dans le dossier data/.

Pour ouvrir ce fichier (et plus globalement, tout fichier contenant du code dans Mugen), un simple éditeur de textes comme le bloc-notes suffit. Si vous envisagez de vous lancer dans la création, des programmes plus poussés sont recommandés (Notepad++, EditPad… il en existe des tonnes, souvent gratuits).

Comme le format « cfg » n’est probablement pas associé à un programme, lorsque vous double-cliquez sur ce fichier, Windows vous demandera de choisir un programme ; choisissez le bloc-notes de Windows ou l’éditeur de votre choix. L’autre possibilité, c’est de lancer d’abord le programme, puis de faire « Ouvrir », et de sélectionner le fichier mugen.cfg.

Une fois ce fichier ouvert, vous constaterez qu’il est assez long, notamment à cause des commentaires (tout en anglais) et assez « hermétique » vu qu’il s’agit d’une suite de paramètres divers et variés. On ne va pas rentrer dans les détails, on va simplement s’arrêter sur ceux qui sont essentiels à ce niveau.

Notez déjà que ces paramètres sont rangés par catégorie. Ces catégories sont appelées des « groupes » dans Mugen (ou des sections, parfois). Ces groupes fonctionnent toujours de la même façon : le nom du groupe, entre crochets, marque le début du groupe ; il s’arrête au début du groupe suivant, ou à la fin du fichier, selon le cas.

Notez également que de nombreuses lignes débutent par un point-virgule « ; ». En fait, dans Mugen, c’est le signe du commentaire. Concrètement, sur une ligne, Mugen ignorera tout ce qui se trouve après un « ; ». On ne s’en sert donc que pour expliquer le fonctionnement d’un bout de code (ou parfois pour désactiver une partie de code, pour les créateurs).

Allons-y maintenant pour la configuration manuelle :

Dans le groupe [Config], les paramètres GameWidth et GameHeight spécifient respectivement la largeur et la taille de l’écran de jeu. Les tailles utilisées le plus souvent sont :

  • 640×480 (format 4/3 standard)
  • 1280×720 (format 16/9ème HD)
  • 1280×960 (format 4/3 HD)
  • 1920×1080 (format 16/9ème Full-HD)
  • 1920×1440 (format 4/3 Full-HD)

Mais rien ne vous empêche d’utiliser des paramètres personnels (ex : 1200×900 qui est un 4/3 assez proche du HD, ou 640×360, qui vous donnera un 16/9 standard).

Notez que jusqu’ici, Mugen utilisait un format 4/3 (320×240), si bien que 99% des créations sont adaptées à ce format. En conséquence, elles tourneront a priori sans souci sur un Mugen au format 4/3. En revanche, certaines créations poseront problème avec un format 16/9 (c’est le cas de Link et de Gouki-Neo SVC, notamment) car elles se basent sur un écran 4/3, qui a donc proportionnellement plus de hauteur… Pour cette raison, et même si le 16/9 est le format par défaut, je vous recommande d’utiliser plutôt un format 4/3 pour assurer une meilleure compatibilité avec les créations existantes.

Toujours dans [Config], le paramètre « Langugage » permet de définir la langue. Pour les francophones, ce sera « fr ». Notez que ce paramètre n’aura d’effets que si les créations intègrent des traductions françaises (sinon, ce sera la langue anglaise – « en » – qui sera appliquée).

Dans le groupe [Video], maintenant, trouvez le paramètre « FullScreen », qui doit être réglé sur 0. mettez-le sur 1 pour lancer Mugen en plein écran. ATTENTION !!! Utilisez cette option avec précaution ! Si vous utilisez le plein écran, le format choisi (déterminé par la résolution entrée plus haut) doit correspondre au format de votre écran, sans quoi l’image sera déformée pour s’adapter au format de l’écran (ex. : si vous avez un écran 4/3 mais que vous utilisez une résolution 16/9, l’image sera étirée dans la hauteur pour s’adapter à votre écran).

Voilà, c’est tout pour les paramètres de base ! Les autres paramètres concernent des aspects plus techniques du jeu et n’ont pas besoin d’être développés ici.

Comments Aucun commentaire »

Elecbyte a sorti sa première version de Mugen depuis plus de 7 ans ! De quoi faire renaître de ses cendres l’engouement pour ce moteur de jeu. Mais puisqu’il s’agit d’un nouveau départ, je crois que le mieux est peut-être de reprendre les bases, pour permettre aux nouveaux joueurs de bien découvrir ce qu’est Mugen et le potentiel qu’il offre !

Je compte donc faire une révision de Mugen, en commençant par la manipulation du moteur en tant que jeu. J’aborderai les thèmes liés à la création ensuite, pour finir sur des éléments plus pointus et ciblés.

La première des bases, c’est bien sûr de savoir installer Mugen. :)

Mugen s’installe extrêmement simplement, dans la mesure où c’est un programme « portable » (même si ce n’était pas forcément l’objectif de base d’Elecbyte). Comprenez que Mugen n’installe rien dans les dossiers systèmes de Windows (C:\Program Files, par exemple), et ne touche absolument pas au registre. Par ailleurs, vu les capacités des clés USB de nos jours, il est tout à fait possible de faire tenir Mugen sur ce type de support, et de pouvoir ainsi y jouer sur n’importe quel PC, sans rien installer de particulier, et sans avoir à tour reconfigurer.

Donc installons :

  1. Récupérez la dernière version de Mugen, disponible sur le site d’Elecbyte (voyez les liens dans la colonne de gauche…), ce qui va vous donner un fichier ZIP (à l’heure où je rédige cet article, le fichier est mugen100rc5.zip).
  2. Placez ce fichier ZIP dans le dossier de votre choix (je vous conseille quand même d’éviter les chemins trop longs ou contenant des caractères spéciaux, comme des accents ou des caractères asiatiques — personnellement, mon Mugen est à la racine de mon disque dur, donc dans C:\).
  3. Dézippez le fichier avec le programme de votre choix.

Attention, lors de l’extraction, veillez à ce que le programme respecte l’architecture des dossiers : dans certains cas, les programmes de compression (WinRar notamment…) peuvent n’extraire que les fichiers, sans les dossiers. Dans le cas de Mugen, le contenu extrait serait inutilisable.

Et ensuite ?

Eh bah ensuite, c’est tout ! Vous devez avoir plusieurs dossiers (chars, doc, data, font, old_tools, sound, stages, work), et un certains nombres de fichiers, dont un mugen.exe, qui vous permet de lancer le jeu.

A partir de là, Mugen est fonctionnel, c’est-à-dire que si vous double-cliquez sur mugen.exe, le jeu se lance. Pour un premier lancement, vous devrez faire « F1″ pour passer l’écran d’accueil (celui-ci ne se réaffichera plus lors des prochains lancements) et accéder au menu.

Pour l’instant, vous ne pouvez pas faire grand-chose, puisqu’il n’y a que 2 versions de Kung Fu Man, le personnage de base (1 en résolution standard, et une autre en « HD »), et 2 décors. Mais on va y remédier dans les prochains articles. ;)

Comments Aucun commentaire »

Quand on débute dans la programmation de personnage, il est un terme « barbare » qui revient assez souvent : « helper ». Dès qu’il s’agit de faire des choses un peu spéciales et/ou un peu complexe, il surgit comme un mot magique. Seulement voilà, on en arrive toujours à la même question : c’est quoi, un helper ?

Elecbyte présente ça comme un « sous-personnage ». C’est à la fois correct et maladroit. En fait, quand on a compris ce que c’est, on est fatalement d’accord pour dire que « sous-personnage » est une description assez juste. Mais quand on ne sait pas, ça donne une connotation un peu fausse (et restrictive) de la chose, car quand on parle de personnage, on imagine tout de suite un bonhomme. Dès lors, le terme « sous-personnage » fait penser aux « strikers », ces personnages qui entrent parfois dans l’écran pour filer une baffe à l’adversaire avant de ressortir, selon un système instauré par SNK dans ses jeux.

Mais voilà, s’il est vrai que dans Mugen les strikers sont des helpers, la réciproque n’est pas vrai, loin de là. Alors on en revient encore à la même question : « Papa, c’est quoi, un helper ? ».

La meilleure manière que j’ai trouvée pour présenter l’helper, c’est de dire que c’est un « objet ». Le mot est vague à souhait : un objet, ça peut être n’importe quoi ! Eh ben un helper aussi, figurez-vous ! Déjà, un helper n’a pas forcément « d’existence physique », entendez par là qu’il peut très bien être « invisible », et/ou ne pas être « tangible ». Et s’il est visible, il peut très bien ne pas ressembler du tout à un personnage et/ou ne pas être là pour aider le joueur, etc. Bref, c’est un objet, qui deviendra ce que vous avez besoin qu’il devienne : dans le cas de Link, les nombres de rupees, bombes et flèches que vous voyez à l’écran sont un helper ; le menu au début du premier match qui vous permet de choisir les objets que vous avez au départ, c’est un helper ; l’inventaire qui affiche les objets que vous avez : c’est un helper.

On peut se servir des helpers pour faire tout et n’importe quoi. Par exemple, dans Gouki, je me sers d’un helper pour faire des fondus en blanc ou en noir sur le décor pour effacer les « fonds spéciaux » qui apparaissent quand on gagne avec un super ou un hyper. On peut aussi se servir d’un helper comme d’un projectile (ex : les bombes de Link, ou la flèche à tête chercheuse, ou encore le poison attaché à l’adversaire lorsqu’il se fait toucher par une flèche empoisonnée).

Vous voyez maintenant un peu plus ce qu’est un helper. On peut donc revenir à la description initiale d’Elecbyte : un « sous-personnage ». D’abord, pourquoi « personnage » ? C’est du au fait que les helpers se programment de la même façon que les personnages (à quelques nuances près). Quant au « sous », il induit une hiérarchie, et c’est le cas ; si on considère d’un point de vue technique qu’un « personnage » est une « entité programmable » (donc le personnage principal et les helpers), alors le personnage principal est le personnage « racine » (root en anglais, d’où tout part). Un personnage qui crée un helper est le parent de cet helper (qui est donc « sous » le personnage principal). Pour un helper créé par le personnage principal, ce personnage principal est à la fois le parent (puisque créé par lui) et la racine. Pour les helpers créés par un helper, le parent est l’helper qui les a créés, et le root est – toujours – le personnage principal. Cette notion de hiérarchie est assez importante notamment dans les redirections de triggers. Mais ça, c’est une autre histoire ! ^^

Comments Aucun commentaire »

J’ai remis les tutoriels et les outils en ligne, rassemblés dans une section Ressources. Pour ceux qui cherchent les explications détaillées sur la création de Gouki, c’est dans les Tutoriels.

Notez que les tutoriels ne sont PAS mis à jour, et que certains sont désormais faux ou obsolètes par rapport à la nouvelle version de Mugen 1.0. De même certains liens sont morts pour les outils.

La section Downgrade Win2DOS du forum a également été fermée.

—————

I’ve  put back the tutorials and tools, gathered in a « Ressources » sections. For those who’re looking for the detailed explanation on Gouki’s creation (in french only), it’s in the « Tutoriels » section.

Note that I’ve NOT updated the tutorials, and now some are wrong or outdated with the new Mugen version 1.0. Also, some links are dead for the tools.

The Downgrade section of the board has also been closed.

Comments Aucun commentaire »

C’est quoi, ce titre ? C’est ce que vous vous demandez peut-être. La réponse se trouve plus loin dans l’explication qui suit. Aujourd’hui, je vous présente :

  • Une information importante et qui contredit la doc officielle, concernant la façon dont sont lus les states négatifs, et notamment les ChangeState à l’intérieur de ces states négatifs,
  • Un « bug » potentiel de Mugen, qui peut être assez gênant, qui serait extrêmement difficile à repérer (d’après moi en tout cas), et qui ne sera pas corrigé (pour cela, il faudrait revoir la façon dont Mugen agit, et utiliser une méthode plus lourde et pas complètement logique, ce qu’Elecbyte se refuse de faire).

Je vous livre ce qui ressort d’une discussion un tantinet pointue sur la façon dont Mugen lit les states dans les personnages. Tout part d’un constat : la documentation dit que le déclenchement d’un sctrl dans les states négatifs n’interrompt pas le processus de lecture de ces states.

Pour rappel, à chaque tick, Mugen lit d’abord les states négatifs (-3, -2 puis -1) avant de lire le state positif dans lequel se trouve le personnage. Pour rappel encore, les states -1 sont utilisés pour changer le personnages de states en fonction des commandes réalisées par le joueur, les states -2 sont forcément lus à chaque ticks, et les states -3 fonctionnent sur le même principe que les -2, mais ne sont pas lus si le personnage est dans un « custom state » (ex : quand il est projeté).

Donc la doc d’Elecbyte stipule que lorsqu’un sctrl est déclenché en state -3, -2 ou -1, Mugen continue ensuite de lire les sctrl suivant. Or en pratique, c’est faux pour un sctrl : le ChangeState. Tous les créateurs le savent au moins implicitement lorsqu’ils créent leurs states -1 : quand on crée une commande « QCF + a », on doit la placer avant une commande « a », parce que quand le joueur réalise « QCF+a », la commande « a » est aussi (forcément) réalisée. Or Mugen ne déclenche que le 1er state -1 dont les conditions (dont les commandes) sont réalisées, et donc si on veut éviter tout bug, on placera les commandes complexes en premier, et les commandes plus simples en dernier, de sorte que lorsqu’une commande est réalisée, Mugen va éliminer les plus complexes pour aboutir à celle qui est vraiment réalisée.

Or si Mugen ne déclenche que le 1er state -1 dont les conditions sont remplies, ça signifie que le ChangeState déclenché interrompt la lecture du state -1, ce qui contredit bien la documentation.

Partant de là, certains ont fait d’autres tests, et il ressort que tout ChangeState déclenché dans les states négatifs entraîne l’arrêt de la lecture sur le state en question. Donc si on déclenche un ChangeState en state -3, tous les states -3 situés après ne sont pas lus, et Mugen passe directement aux states -2. Idem s’il y a un ChangeState déclenché en -2, Mugen passe direct aux -1 sans lire les autres ChangeState situés après. C’est en tout cas le fonctionnement « idéal théorique » voulu par Elecbyte. Dans les faits, il semble que pour le moment, cela ne soit vrai que pour les states -2 et -1. Pour les  -3, le ChangeState déclenché ne saute pas la fin du state. Ceci sera peut-être corrigé par la suite.

Ca veut dire, concrètement, que dans vos states négatifs, si vous souhaitez déclencher des sctrls (autres qu’un ChangeState) avec les même triggers qu’un ChangeState (dans le même state négatif), vous devrez placer ces sctrls avant le ChangeState en question, sans quoi, ils seront ignorés.

Ca, c’est pour l’information dont je parlais dans le premier point.

Passons au second point, le bug ; il est indirectement lié à la découverte faite dans le premier point. Certains se sont en effet penchés sur ce comportement, et ont découvert un élément important : quand un ChangeState est déclenché, le numéro de state du personnage est mis à jour, mais le StateDef correspondant n’est pas lu. Et alors ? Et alors je vais reprendre l’image qui a été fournie sur le forum d’Elecbyte, et vous comprendrez (enfin !) mon titre…

Imaginons que les states soient des véhicules, et que le StateDef indique le nombre de roues de ce véhicule. En gros, on est dans le State « Vélo », et le statedef a logiquement indiqué qu’on avait 2 roues. Le ChangeState négatif nous fait passer à un State « Voiture », dans lequel le statedef indique, toujours aussi logiquement, qu’on a 4 roues. Mais comme le StateDef n’est pas lu immédiatement après le ChangeState, nous sommes dans une Voiture, avec seulement 2 roues ! Nous ne passerons à 4 roues que lorsque le state « Voiture » sera lu, c’est à dire entre le déclenchement du ChangeState et la fin de la lecture des states négatifs, et du coup, les données n’ayant pas été actualisées, tous les triggers liés au StateDef (MoveType, StateType, anim, vel, etc.) sont possiblement faux après le déclenchement d’un ChangeState en state -3 ou -2, tant que Mugen n’est pas passé à la lecture des states positifs, car ces triggers n’auront pas été actualisés avec le nouveau StateDef.

On va voir avec un exemple. Prenons le code suivant :

[Statedef 1000]
type = S
movetype = A
ctrl = 0
anim = 1000
[...]

[State 1000]
type = StateTypeSet
trigger1 = time = 50
movetype = I

[...]

[Statedef -3]

[State -3]
type = ChangeState
trigger1 = ctrl
trigger1 = StateType = I
trigger1 = StateNo = 0
value = 1000

[Statedef -2]

[State -2]
type = ChangeState
trigger1 = StateNo = 1000
trigger1 = MoveType = I
value = 2000

J’ai volontairement mis les states -3 en premier pour garder l’ordre de lecture de Mugen, et ainsi mieux montrer ce qui se passe. On voit que le Statedef du state 1000 règle le movetype sur A, puis qu’après 50 ticks, le movetype devient I (une fois l’attaque finie, par exemple). Notre State -2, lui, est censé placer notre perso en state 2000 une fois que dans le state 1000, on est passé au movetype = I (donc après 50 ticks). On imaginera qu’il y aura d’autres conditions pour que ce sctrl se déclenche (ex : la valeur d’une variable liée à un mode de jeu, ou autre).

Donc, imaginons que nous sommes en state 0 : notre ctrl vaut 0, et le StateType est bien I. Conclusion, quand Mugen lit notre ChangeState en state -3, les conditions sont vraies, et donc il le déclenche. Il met donc à jour le numéro du state du joueur (0 devient 1000). Il saute le reste des state -3 et lit les states -2. Et là regardez ce qui se passe :

  • Trigger1,1 = vrai puisque le ChangeState du state -3 nous a placé en state 1000, ce qui a mis à jour le trigger StateNo.
  • Trigger1,2 = dans un monde utopique et idéal, il devrait être faux, puisque dès l’entrée en state 1000, le statedef précise que le movetype est A. Sauf que comme le statedef n’a pas été lu, le movetype n’a pas été mis à jour et vaut toujour I !!! Et la conclusion, c’est que ce trigger est donc vrai au moment où il est lu !
  • Les deux triggers étant vrai, le ChangeState est déclenché !

Résultat, on passe en state 2000 sans être réellement passé par le state 1000 !

J’ai pris le movetype comme exemple, mais c’est vrai pour n’importe quel trigger modifié par un ChangeState (vel, anim, statetype, etc.).

Pour éviter cet écueil, il faudrait qu’à chaque fois que Mugen déclenche un ChangeState en state négatif, il arrête la lecture de ce state négatif pour aller lire le StateDef du nouveau state afin d’actualiser ses données, puis reprenne la lecture du state là où elle s’était arrêtée. Elecbyte a fait savoir que cette « correction » ne serait pas faite, et que le comportement global de la lecture des states correspondait à ce qu’ils voulaient, malgré cette « faille ».

En attendant, si un jour vous avez des problèmes de changement de states, pensez à cette éventualité, parce que sinon, pour repérer le problème dans le code, faudra sérieusement s’accrocher ! Et pour l’éviter, le mieux serait peut-être de « renforcer » les triggers des sctrls qui suivent le ChangeState (dans notre cas, si on avait ajouté  « trigger1 = Anim = 1000″ ou « trigger1 = Ctrl = 0″, ceux-ci n’auraient pas été vrais, et donc on aurait évité le déclenchement non désiré du ChangeState en -2).

Comments Aucun commentaire »