INTRO
J'ai préparé ce tutorial basique pour aider un peu ceux et celles qui n'auraient pas tout compris aux vidéos tutoriels de Joe :
http://nesmakers.com/viewforum.php?f=25
Cela vient en complément. Joe montre plus de détails que ce que j'explique ici. Je vous conseille donc vivement de regarder les vidéos correspondantes à chacun des sujets, pour voir les manip.
J'ai juste mis l'essentiel, pour que ça tourne. Je peux revenir sur certains points et apporter des précisions, si besoin.
DEMARRER UN NOUVEAU PROJET
Exécuter NESMaker_xxx.exe. Puis, choisir le menu "File > New". Une boite de dialogue s'ouvre alors:
Pour la création de votre nouveau projet, vous avez le choix entre plusieurs options :
- Use Existing Tilesets : votre projet utlisera directement les images se trouvant dans le dossier "GraphicAssets".
- Create Blank Tilesets : votre projet utlisera des images vierges qui seront placées dans le dossier "GraphicAssets\<NomDeVotreProjet>". Les images situées directement dans le dossier "GraphicAssets" ne seront pas impactées par vos modifications.
- Create Default Tilesets : votre projet utlisera une copie des images de "GraphicAssets" qui seront placées dans le dossier "GraphicAssets\<NomDeVotreProjet>". Les images situées directement dans le dossier "GraphicAssets" ne seront pas impactées par vos modifications.
Si vous avez choisi une des 2 dernières options, vous devez indiquer un nom de dossier pour créer le dossier "GraphicAssets\<NomDeVotreProjet>".
Je vous conseille de choisir "Create Blank Tilesets", pour partir avec des images vierges que vous pourrez modifier à loisir.
(Par exemple, si vous saisissez "JEU01", un dossier "JEU01" sera créé dans le dossier "GraphicAssets". Toutes les images nécessaire pour votre jeu seront situées dans le dossier "GraphicAssets\JEU01").
Une fois votre nouveau projet démarré, il faut l'enregistrer.
Pour cela, choisir "File > Save". Votre projet n'ayant jamais été enregistré auparavant, une boite de dialogue s'affiche vous demandant où enregistrer le fichier de votre projet (l'extension d'un projet est .MST). Par convention, il est recommandé donner le même nom à votre fichier projet qu'à votre dossier projet précédemment créé.
Je vous conseille de le placer dans le sous-dossier "Projects" se trouvant à la racine du dossier NESMaker (et de prendre l'habitude d'enregistrez tous vos projets dedans, c'est plus simple pour les retrouver et pour les sauvegardes).
PARAMETRAGE INITIAL DU PROJET
Le projet est créé, mais il est "vierge". Nous allons maintenant effectuer le paramétrage de base avant d'attaquer la création de notre "player" et d'assets pour nos écrans.
Paramérage de base du projet :
Tout d'abord, choisir le menu "Project > Project Settings". Ici se trouve tout le paramétrage du projet, les scripts utilisés par votre projet.
- Dans l'onglet "Project Labels", vous pouvez modifier le nom des différents éléments de votre projet, ce sont les éléments utilisés par l'éditeur (IHM) uniquement, aucun impacte sur le moteur de jeu lui-même. Nous allons laisser ce qui est renseigné par défaut.
- L'onglet "Tilesets" affiche tous les fichiers images utilisés par votre projet. Nous allons laisser ce qui est renseigné par défaut.
- Dans l'onglet "Emulator", vous pouvez spécifier un autre emulateur NES que celui natif à l'éditeur.
Je conseille de télécharger l'emulateur FCEUX, de le dezipper quelque part et dans ce cas, de renseigner dans cet onglet les informations comme suivent :
Emulator : chemin d'accès à l'applicaiton fceux.exe (parcourrir et sélectionner là où vous l'avez installé).
Working Folder: chemin d'accès au dossier (et rom) du jeu qui sera généré, cliquer sur le bouton parcourir et sélectionner le fichier "game.nes" se trouvant dans le dossier "GameEngineData".
Parameters: "game.nes" (renseigné automatiquement lorsque vous sélectionner le Working Folder).
- Ensuite l'onglet "Scripts Settings", surement l'onglet le plus important, il indique quel script doit être utilisé par le moteur de jeu, pour les différents éléments: par exemple quel script pour la physique ou pour les collisions ou pour les déplacements des sprites, ou pour les objets ramassés, …
Par défaut, cet onglet ne contient pas beaucoup de scripts :
Il est possible d'ajouter/modifier ces scripts à la main (indiquer le type d'element, le script associé…)
Cependant pour plus de facilité, des "MODULES" avec des scripts pré-définis ont été (et vont être) créés, un module pour les jeux d'Aventures, un pour les jeux de Plateformes, un pour les Shooters, les Beat'em All…
La version actuelle de NESMaker vient avec le "Module Adventure" qui permet de créer un jeu d'aventure "TopDown", vue du dessus, style Zelda 1 sur NES (il vient également avec un module plus basic lui aussi TopDown mais qui contient moins de fonctionalités).
Fermer la fenêtre des Paramètres du Projet, nous allons maintenant voir comment Importer un module, pour avoir tous les scripts nécessaires pour notre premier jeu.
Choisir le menu "Project > Import Project Module" et sélectionner le module "Modules\AdventureModule.MOD". Une boite de dialogue va informer de toutes les modifications qui seront effectuées sur votre projet par cet import.
Une fois validé, si vous retournez consulter vos "Scripts Settings" dans les paramètres du projet, vous vous apercevrez qu'il y en a beaucoup plus !
INFOS DU PROJET
Choisir maintenant "Project > Infos", dans la fenêtre qui s'ouvre et cocher la case "Skip start screen", et UNIQUEMENT cela, ne rien toucher d'autre.
Pour l'instant, notre jeu n'aura pas de Start Screen et il démarrera directement dans le jeu (le Player dans un écran). Si vous ne cochez pas cette case, vous aurez un écran gris lorsque vous lancerez le jeu (qui est en fait le Start Screen non paramètre).
PALETTES ET GROUPES DE PALETTES
Maintenant que le paramétrage de base est effectué, nous allons pouvoir créer nos différents éléments de jeu (Palettes de couleurs, Player, Tiles pour composer nos écrans Monstres,…).
Paramétrage des Palettes :
Avant de pouvoir s'attaquer au écrans et à notre Player, nous devons créer au moins une palette de couleurs et un groupe de palettes.
Les palettes de couleurs seront utilisées pour créer vos differents sprites (votre Player, les monstres), et Tiles (les éléments pour vos écrans).
Dans l'arborescence de NESMaker, sélectionner "Palettes > Palette Groups", faire un clic-droit et choisir "New palette group".
Un petit [+] s'affiche maintenant au niveau des Palette Groups, vous permettant d'accéder à votre nouveau groupe de palettes (vous pouvez lui donner un autre nom si vous le desirez, par exemple "Palettes Niveau 1")
Ensuite, déplier l'élément "Palettes" pour faire apparaitre toutes les palettes utilisables (pour les tiles).
Sélectionner la première palette et renommer la en "Palette principale" par exemple, ensuite faire un clic-droit sur cette palette et l'assigner au groupe de palette "Palettes Niveau 1".
Chaque élément du jeu peut être associé 2 palettes (sauf les Tiles qui en ont 4). Chaque palette contient 3 couleurs + 1 couleur commune à toutes les palettes, qui sert à la transparence des sprites et est aussi la couleur de base des écrans. Par défaut, on utilise le noir en couleur de base, mais il est possible d'utiliser celle qu'on veut (dans super mario 1, la couleur de base est le bleue).
PIXEL EDITOR
Pour pouvoir créer vos éléments de jeu Player, Tiles, Monstres, … vous devez d'abord modifier les tilesets, des images (bmp) contenant les graphismes qui seront utlilsés pour vos éléments de jeu (actuellement ils sont vides). Pour créer/modifier ces tilesets, nous allons ouvrir le "Pixel Editor".
Utilisation du Pixel Editor :
Dans l'arborescence, sélectionner le "Pixel Editor". C'est ici qu'on dessinera les graphismes.
On retrouve sur la gauche nos palettes (par défaut, il sélectionne automatiquement la premiere palette du premier groupe de palettes): les 4 (sub) palettes de couleurs de votre "Palette principale" sont affichées ici, vous pouvez modifier, assigner d'autres couleurs pour vos 4 sub-palettes de votre palette principale.
A noter, que toute modification de couleurs effectuée sur vos palettes est valable dans tout le projet, pas uniquement dans le Pixel Editor.
Je choisis les couleurs pour mes sub-palettes sur un clic-droit, dans chaque case couleur.
Voilà qui est mieux. Cela me servira pour mes Tiles (arbres, pierres,...)
Les tilesets pour la NES sont representés par 4 couleurs indexées (représentées par noir, rouge, vert, bleu, que j'appellera "RGB" durant tout ce tutorial), chaque personnage, monstre, arbre, pierre, sol, … doit être enregistré avec ces 4 couleurs dans les fichiers tileset BMP, sinon cela ne fonctionnera pas. Nous allons donc devoir dessiner, modifier les couleurs de nos images pour qu'il n'y ait que ces 4 couleurs.
Pour plus de facilité le Pixel Editor, vous permet de passer d'un affichage "couleurs RGB" à "couleurs de la palette sélectionnée" en cliquant sur les boutons situés dans la barre d'outils.
Maintenant créons notre "Player" :
Appuyer sur le bouton Ouvrir ("Load a BMP file") et aller chercher le fichier "GameObjectTiles.bmp" se trouvant dans le dossier "GraphicAssets\<NomDeVotreProjet>" (dans mon cas dans "GraphicAssets\JEU01").
Ceci est le fichier pour notre Player. Nous allons y dessiner notre héro.
Le Player est un élément de jeu constitué de blocs de 8x8 pixels. En fonction de vos idées, vous pouvez choisir de réaliser un héro qui fait 8x8 ou 16x8 ou 16x16 ou … ces blocs seront assemblés pour créer le Player.
Mais pour l'instant, nous devons dessiner ces blocs.
Afficher la grille en appuyant sur le bouton [8].
Pour commencer à dessiner, utliser les boutons situés dans la barre d'outils (crayon, rectangle,...). Cliquer sur le bouton correspondant à la couleur avec laquelle vous voulez dessiner (toujours dans la barre d'outils en haut!).
Je vous conseille de laisser le premier bloc vide en haut à gauche (noir), ensuite dessiner un petit personnage sur 1 ou plusieurs blocs.
Je réalise ici un SMILEY en 16x16. Je fais que la "vue" de face pour le moment (les vues de coté, je reviendrai dessus plus tard lorsque je ferai les animations).
Des boutons permettent de basculer d'un affichage "couleurs RGB" à "couleurs de la palette sélectionnée".
Voilà, il ne reste plus qu'à cliquer sur le bouton "Enregistrer" (la première disquette à gauche dans la barre d'outils).
(note: il est possible de les créer dans Paint et faire du coller/coller).
GAME OBJECT - PLAYER
Maintenant, dans "Games Objects", sélectionner "Player".
Voici l'élément Player du jeu. Par défaut, il n'est pas paramétré.
Commencer par lui donner la taille désirée. Dans mon exemple, je choisis 2 par 2 (blocs).
Vous pouvez choisir également le nombre de frames (pour animer votre Player). Je laisse sur "1", car je n'ai dessiné qu'une frame pour mon player.
Ensuite, on choisit 2 palettes différentes pour le Player, parmi la liste des palettes accessibles (le player, les monstres et les items se partagent la même liste de palettes).
On va sélectionner "MonsterPalette0" et "MonsterPalette1", que l'on va renommer respectivement en "Player Pal 1" et "Player Pal 2".
Puis choisir quelques couleurs à nos palettes (clic droit sur chaque case couleur).
Voilà qui est fait.
Si votre tileset n'apparait pas en haut à droite, c'est qu'il ne s'est pas encore rafraîchit… Patienter 2 ou 3 secondes, ensuite dans l'arborescence, cliquer ailleurs, par exemple sur "Overworld", puis revenir sur "Player"… cela devrait se rafraîchir (1 ou 2 allez retour sont parfois nécessaires )
Maintenant, dans la partie centrale, pour chaque bloc composant le Player, indiquer le Tileset à utililiser (en sélectionnant dans la fenêtre située en haut à droite).
Vous pouvez également assigner une sub-palette (différente ou la meme) à chaque bloc.
Passons aux propriétés du Player :
Cliquer ensuite sur "Object Details", cette boite de dialogue sert à paramétrer les objets de jeu (ici, le Player. Mais vous retrouverez la meme interface lorsqu'on sera sur les monstres ou les items à collecter).
- Le premier onglet "Animations" sert à à paramétrer les différentes animations en fonction du type de mouvement.
On va laisser comme c'est pour l'instant.
- Dans l'onglet "Details", vous devez commencer par cocher le type "Player" (parceque notre élémént est un player), ainsi que "PERSISTENT" (c'est objet sera toujours chargé en mémoire, quelque soit l'écran du jeu).
Ceci est très important, si vous ne cochez pas ces 2 cases, vous ne verrez pas votre Player lorsque jeu démarrera.
Vous pouvez également renseigner ici son niveau de santé "Health" (si 0, alors votre Player ne meurt jamais / i)
Vous DEVEZ renseigner sa vitesse de déplacement "Speed" ainsi que son "accélération", dans mon exemple, j'ai mis une vitesse de "40" et une accélération de "200". (Je vous laisse modifier ces valeurs par la suite, si vous voulez tester).
Le reste on ne touche pas pour l'instant.
- L'onglet "Actions", permet de paramétrer une suite d'actions, en commençant par l'action 0.
Dans le cas des monstres, cela permet de définir un comportement, une suite d'actions qui peuvent être enchaînées, leur IA. Cependant dans le cas du Player, c'est un peu différent.
Voici le comportement par défaut pour le Module Adventure :
L'action 0 : c'est l'état du Player immobile (lorsque le joueur ne touche pas les contrôles de déplacement).
L'action 1 : c'est l'état du Player en mouvement
L'action 2 : c'est l'état du Player en attaque
Pour chacun de ces états, il est possible de définir l'animation à utiliser, la vitesse de celle-ci, et si on doit changer d'état lorsqu'elle se termine.
Note: Comme nous utilisons le Module Adventure, nous devons paramétrer l'action 2 pour qu'à la fin de l'attaque, il revienne à l'état immobile. Pour cela :
Sélectionner l'étape "2", puis pour "End of animation", choisir "GoToFirst" et définir une vitesse d'animation différente de "0" (dans notre exemple, je vais mettre "1").
- L'onglet "Bounding box" permet de définir la zone de collision avec le Player. La plupart du temps, il suffit de definir un rectangle à l'intérieur de notre Player.
Voilà pour le Player !
ECRAN - OVERWORLD
Nous allons maintenant indiquer dans quel écran le Player devra se trouver lorsque le jeu commence.
Cliquer sur "Overworld", s'affiche l'ensemble des écrans à notre disposition pour le jeu (en fait il y en plus, car nous avons accès à 3 "banks" d'écrans, ainsi qu'à l'Underworld).
Sélectionner un écran, par exemple l'écran 1,1 (on commence toujours à compter horizontalement, puis verticalement… et à partir de 0. Donc ici, sélectionner l'écran à l'intersection de la deuxième colonne et de la deuxième ligne).
Double-cliquer dessus pour l'ouvrir, il est noir c'est normal (il affiche en réalité, le tile 0 vide qui a actuellement la couleur de base, commune à toutes les palettes), nous n'avons pour l'instant posé aucun éléments dedans car nous n'en avons pas encore créés.
Sur l'écran noir, faire un clic-droit au milieu et choisir "Place Player". Un petit icone (une tête) indique l'emplacement de votre Player.
HUD
Dernière étape avant de pouvoir tester…
Definir le HUD :
Le HUD est la partie qui sert à afficher des informations durant le jeu (le score, la santé, le nombre de vies,…). Bien que tous les jeux n'affichent pas forcément de HUD, NESMaker a besoin que ce HUD soit paramétré ! (même si pas utilisé)
Sélectionner "HUD & Boxes", puis dans le premier onglet "HUD", définir à l'aide de la souris une zone pour le HUD.
Par exemple, classique:
2 lignes sur toute la hauteur et cliquer sur le bouton "HUD Area" pour definir la zone.
Ensuite sélectionner le reste de la zone, et je clique sur le bouton "Playable Area".
]A noter !!! il faut impérativement que la zone de HUD fasse 2 lignes minimum (sinon bug…)
CF Partie plus détaillée concernant le HUD (notamment pour les TEXT-BOX): http://nesmakers.com/viewtopic.php?p=4323#p4323
EXPORT et TEST
Nous allons essayer de lancer le jeu pour vérifier que notre Player s'affiche bien:
Dans le menu "Test", sélectionner "Export & Test"… cela va lancer la compilation des scripts et paramètres du projet et générer le fichier game.nes ROM. La fenêtre de ligne de commmandes s'affiche...
Et normalement "Appuyer sur une touche pour continuer".
(si des des erreurs, un message s'affichera et le détail des erreurs sera cette fenêtre de ligne de commandes)
Normalement, si vous avez suivi ce tutoriel à la lettre, le jeu doit se lancer, zapper le Start Screen et arriver directement sur notre écran (noir) avec notre Player dessus.
SCRIPTS POUR LES CONTROLES
On se rend vite compte en jouant avec la manette (ou au clavier), que le Player ne bouge pas Va falloir lui ajouter des scripts de mouvements, qui se déclencheront lors de l'appui sur les boutons.
NESMaker fournit de base des scripts permettant le mouvement de notre player (ils viennent avec le "AdventureModule"). Tous les scripts se trouvent dans le dossier "GameEngineData\Routines\UserScripts\AdventureGame_Base", rangés dans des sous dossier. Nous allons utiliser certains de ces scripts.
De retour dans NESMaker, déplier "Scripts" et sélectionner "Inputs scripts". Puis dans la liste de droite, se déplacer jusqu'au dossier "UserScripts\BasicScripts\AdventureGame_Base\MovementScripts" et double-cliquer sur les fichiers "StartMovingPlayerDown.asm", "StartMovingPlayerLeft.asm", "StartMovingPlayerRight.asm", "StartMovingPlayerUp.asm" et "StopMovingPlayerDown.asm", "StopMovingPlayerLeft.asm", "StopMovingPlayerRight.asm", "StopMovingPlayerUp.asm".
Ils devraient disparaitre de la fenêtre de droite et vous devriez les retrouver sous "Input Scripts".
CONTROLES
Maintenant, aller dans "Input editor", cet écran permet d'assigner des scripts (input scripts) à des actions sur boutons, en fonction de l'écran en cours (Start Screen, dans le jeu, ou lorsque sur l'écran de fin, ...)
Dans la liste déroulante "Game State", sélectionner "MainGame" (c'est à dire en cours de jeu). Dans "Target", sélectionner "NULL" (toujours choisir NULL pour tous les scripts, car actuellement ce paramètre n'est pas géré).
Dans "script to run", sélectionner le script "StartMovingPlayerDown.asm", sélectionner (à l'aide de la souris) le bouton concerné sur la manette (un rectangle rouge apparait sur le bouton), et cliquer sur le bouton "Press-Hold-Release." (qui correspond à l'état du bouton "appui", "maintient appuyé", "relâché") pour qu'il affiche "Hold".
Ensuite cliquer que "Add Script" pour associer le script de mouvement en bas lorsqu'on maintient du bouton bas de la manette pendant le jeu.
Une ligne apparait dans la liste des commandes de contrôles assignées.
Effectuer la meme chose pour les autres boutons (Left, Right, Top).
Ensuite, faire de même pour les scripts "StopMovingPlayerxxx" (pour que le Player s'arrête lorsqu'on relâche les boutons) en choisissant "Release" pour le bouton Press-Hold-Release.
Et voilà, vous devriez avoir cela.
Il n'y a plus qu'à tester... Menu "Test > Export & Test".
Voilà, votre player devrait pouvoir se déplacer librement.
N'hésitez pas à poser des questions, si quelque chose vos a échappé ...
>> La suite, "TILES - ECRANS", ici : http://nesmakers.com/viewtopic.php?p=3191#p3191