[TUTORIEL] Personnalisation d'un projet vierge


Comment personnaliser son projet vierge RM

L'article présenté ici est la suite de ce tutoriel. Il nécessite d'avoir sous la main un projet "vierge", c'est-à-dire purgé de presque toutes ses entrées et de la vaste majorité de ses ressources (images, sons, plugins etc).

Les sources à l'origine de ce tutoriel sont toutes disponibles en fin d'article.

Prendre un bon départ

Objectif : organiser l'arborescence des maps pour s'y retrouver plus tard

Avant toute autre organisation à mettre en place, on commence par créer les maps suivantes, selon les très bons conseils de Yanfly :

  1. Post-it (pour noter mes idées sous forme d'event, voir ce tip de Yanfly)
  2. Templates (utilisée par un plugin)
  3. DebugRoom
  4. TODO
  5. WIP
  6. Cinématiques
  7. Zone 1
  8. Zone 2
  9. Zone 3 etc

Les maps TODO, WIP, Cinématiques, ZoneX servent de dossiers pour les autres maps. Toute map apparaissant en jeu passera par le dossier TODO, puis le dossier WIP et sera enfin classée dans le bon dossier de rangement quand elle sera terminée (Cinématiques ou l'un des dossiers ZoneX).

Dans Cinématiques, je crée tout de suite les maps intro et fin.

Mon projet est divisé en quatre + une zones (quatre régions géographiques puis une dernière zone spécifique pour les souterrains, les donjons et la bataille finale). L'arborescence complète des dossiers de rangement est donc :

  • Zone 1 (terres arables)
  • Zone 2 (partie nord-ouest)
  • Zone 3 (partie sud-est)
  • Zone 4 (volcan)
  • Zone 5 (spécial)
    • souterrain 1
    • souterrain 2
    • donjon hanté
    • donjon temple 1
    • donjon temple 2
    • donjon secret
    • bataille finale

Enfin, je crée quelques maps vierges dans TODO, au cas où l'envie de mapper se manifeste.

Création d'un jeu TRÈS basique

Objectif : avoir la satisfaction de finir la création d'un jeu !

Prérequis : réserver une variable

Première étape : réserver une variable. C'est très facile. 

  1. augmenter le nombre de variables à 22
  2. garder les 20 premiers emplacements pour des variables très utilisées (variables temporaires, génératrices de nombre aléatoires etc)
  3. garder la 21è en tant qu'étiquette (voir plus bas)
  4. nommer la 22è "Avancement"

Deuxième étape : lier tous les dossiers de maps entre eux et suivre la progression du joueur dans les objectifs de jeu.
Conseil : lire ce comic (en anglais).

Dans mon cas, les maps-dossiers vont s'enchainer ainsi :
intro > Zone 1 > donjon hanté > Zone 2 > donjon temple 1 > souterrain 1 > Zone 3 > donjon temple 2 > souterrain 2 > Zone 4 > Zone 5 > bataille finale > fin.

Note 1 : la zone 3 propose trois embranchements :

  • un vers la Zone 1 (qui proposera un retour vers la Zone 3) ;
  • un autre vers le donjon secret ;
  • un dernier vers la Zone 5 (qui ne proposera pas de retour) avec un message signalant au joueur qu'il s'agit d'une zone sans retour.

La variable Avancement progresse ainsi :

  • commence à 0 ;
  • gagne +1 après avoir lu le message de l'intro ;
  • gagne +1 après avoir déclenché l'événement de la zone 1 ;
  • gagne +1 après avoir "triomphé" du donjon hanté ;
  • gagne +1 après avoir déclenché l'événement de la zone 2 ;
  • gagne +1 après avoir "triomphé" du donjon temple 1 ;
  • gagne +1 après avoir traversé le souterrain 1 ;
  • gagne +1 après avoir déclenché l'événement de la zone 3 ;
  • gagne +1 après avoir "triomphé" du donjon temple 2 ;
  • gagne +100 après avoir "triomphé" du donjon secret ;
  • gagne +1000 après avoir traversé le souterrain 2 ;
  • gagne +1000 après avoir déclenché l'événement de la zone 4 ;
  • gagne +1 après avoir déclenché l'événement de la zone 5 ;
  • gagne +1 après avoir "triomphé" de la bataille finale.

Le message de victoire apparaissant après la scène de fin dépend du score :

  • 10 : le joueur a suivi la route la plus directe ;
  • >10, cela dépend :
    • < 1000 : le joueur a découvert un lieu caché ;
    • > 1000 : le joueur a parcouru toutes les zones et a découvert un lieu caché ;
    • = 1000 : le joueur n'a pas achevé l'exploration (le joueur n'a pas déclenché l'événement de la Zone 4 et est allé directement à la Zone 5).

En résumé, dès que la variable avancement est supérieure ou égale à 7 (fin de la zone 3), la liaison vers la zone 1 est débloquée.
Dès qu'elle est supérieure à 8 (fin du donjon temple 2), toutes les destinations sont débloquées.

C'est un peu plus compliqué que l'architecture proposée par Yanfly à cause des lieux optionnels. À adpater aux besoins de chacun.

Note : pour ceux qui savent lire l'Anglais, bgillisp propose une explication illustrée avec un système un peu plus simple sur Steam.

Limiter la quantité de plugins externes

Objectif : réfléchir en amont à ce dont on a réellement besoin avant de se lancer dans la création de systèmes personnalisés.

Listing des mécaniques de jeu incontournables

Cette liste ne devrait contenir que les systèmes qui feront l'essence du jeu, qui le rendront différent des autres. En général, cette liste à tendance à s'étoffer avec le temps. Il faut régulièrement y revenir pour voir si le projet n'est pas en train de dérailler. Une fois que ces systèmes seront en place, il sera toujours temps d'en ajouter.

Pour mon projet, c'est rapide et la liste est centrée autour du combat :

  • combats un minimum tactiques (lancer toujours l'attaque la plus puissante ne marchera pas)
  • nécessité d'enquêter un minimum avant d'entrer dans un donjon
  • compétences à équiper
  • compétences qui forment des combos
  • classes et sous-classes impliquant des restrictions dans la façon d'approcher un combat
  • nécessité de battre "le grand méchant" dans un délai fixé (la mort n'est pas permanente mais ajoute une pénalité de temps)

Listing des mécaniques de jeu optionnelles

À retenir : même si c'est toujours bon pour le moral de pouvoir rêver un peu, essayer de rester modeste dans ses envies. Sinon le jeu ne sortira jamais. Pour ma part, j'y joins toujours mes exigences en termes de graphismes et sons.

  • aspect visuel : 
    • travail sur les sons et effets ambiants (très important)
    • battlecharsets animés (très important)
    • un maximum d'informations visuelles et auditives en combat, épurer le texte (très important)
    • cycle jour / nuit visible
    • mouvement et mapping faisant oublier dans la mesure du possible qu'une grille existe
  • aspect gameplay :
    • monstres évolutifs (très important)
    • troupes randomisables (très important)
    • cycle jour / nuit (très important)
    • météo impactant le gameplay (un peu comme les effets de terrain de Pokemon)
    • différents monstres en fonction du cycle jour / nuit (ou de la météo)
    • interactions différentes en fonction du cycle jour / nuit (ou de la météo)
    • pêche (parce que j'adore ça)
    • des zones secrètes déblocables par la pêche ou le commerce avec les villageois
    • une classe secrète en lien avec ces zones
    • mieux intégrer le déblocage des invocations (comment ?)
    • un système de transcendance / concentration en combat
    • un système de NewGame+

Listing et test des plugins nécessaires

Cette étape est très importante : elle permet de faire le point sur les besoins réels (beaucoup de choses peuvent être faites avec les événements). L'objectif est d'essayer de réduire la liste des plugins au minimum. Plus il y en a, plus le risque d'incompatibilités augmente, s'ils viennent de plusieurs développeurs différents.

À chaque plugin de la liste ci-dessous ajouté, je respecte le protocole suivant :

  1. j'active le plugin
  2. je vérifie qu'il n'y a pas d'incompatibilité majeure (pas de plantage du jeu)
  3. je vérifie les FPS
  4. je vérifie les warnings de la console
  5. je vérifie que le jeu passe toujours tous les tests unitaires liés aux mécaniques ou aux déplacements sur la map
  6. je vérifie que le jeu passe toujours tous les tests unitaires liés aux déplacements sur la map

Une fois qu'ils ont tous été testés, je désactive tous ceux qui ne sont pas immédiatement nécessaires.
Si j'en ajoute un nouveau, je les réactive tous puis j'ajoute le plugin et je reprends le protocole.

Voici ma liste perso (il y en a environ 60 différents, sans compter les miens)

  • VisuStella core (inclus dans le projet vierge)
  • VisuStella rang 1
    • Battle core
    • Elements and Status Menu core
    • Events and Mouvement core (nécessité peu importe le projet)
    • Items and Equips core
    • Message core (inclus dans le projet vierge)
    • Options core (inclus dans le projet vierge)
    • Save core
    • Skills and States core
  • VisuStella rang 2
    • Aggro Control system
    • Battle system CTB
    • Bestiary
    • Class Change system
    • Date and Time
    • Enhanced TP system
    • Grid-free Doodads (2 plugins)
    • Lighting effects
    • Movement Effects
    • QTE and Trigger system
    • Quest Journal system
    • Tutorial Panel system
    • Weather effects
  • VisuStella rang 3
    • Action Sequence Projectiles
    • Anti-Damage Barriers
    • Auto Skill Triggers
    • Battle AI
    • Battle Command - Talk
    • Chain Battles
    • Event Chain Reactions (nécessité peu importe le projet)
    • Event Signals (nécessité peu importe le projet)
    • Life State Effects
    • New Game Plus
    • Skill Cooldowns
    • Victory Aftermath
    • Visual Cutin effect
    • Visual Gauge Styles
    • Visual State effects
    • Weakness Display
  • VisuStella rang 4
    • Ambience Sounds
    • Conditional Random Encounters
    • Consumable Defensive States
    • Credits page (inclus dans le projet vierge)
    • Database Inheritance (nécessité peu importe le projet)
    • Encounter effects
    • Extra Enemy Drops
    • Gab Window (nécessité peu importe le projet)
    • Multi-Layer HP Gauge
    • Patch Notes (inclus dans le projet vierge)
    • Unique Tile Effects
    • Visual Parallaxes
    • Weakness Popups
  • Autres développeurs
    • Aerosys
      • Gab Windows
      • Summon
      • Summon Menu Addon
    • Arthran
      • Multi Backgrounds
      • Verbose Error Screen (nécessité peu importe le projet)
    • Caethyril
      • Actors On Left
      • Slope Move
    • ManuGaming Creations
      • Action Sequence Live Editor

Tous les plugins qui sont en gras sont considérés comme vitaux pour le projet. 
Plusieurs de ces plugins sont tout simplement trop pratiques (gros gain de développement pour tout ce qui touche à l'eventing) pour s'en passer ou devraient être fournis de base avec le logiciel (Database Inheritance, Verbose Error Screen).

Les plugins en italique sont nécessaires pour l'immersion du joueur, mais n'apporte pas grand chose en termes de gameplay. Tous les autres seront activés au fur et à mesure de l'avancée du projet.

Note : Slope Move est un petit plugin gratuit très utile pour permettre de forcer le mouvement en diagonale (pour les escaliers, les pentes de falaises).

Note 2 : Gab Window (de VisuStella) est techniquement dispensable, mais je l'utilise pour les messages systèmes (gain d'objet, zone inaccessible etc). Gab Windows (d'Aerosys) fait techniquement la même chose que le plugin de VisuStella et est capable de générer des bulles de dialogue en plus.
J'en utilise deux différents pour avoir deux piles différentes de fenêtres, une pour les messages systèmes et une pour les dialogues. Chaque pile a sa propre configuration (windowskin, placement à l'écran) et n'interfère pas dans l'affichage des fenêtres de l'autre pile.

À la fin de cette étape, on doit pouvoir savoir si les idées de gameplay énumérées aux étapes précédentes sont viables (à savoir : est ce que les plugins sont compatibles ? est-ce qu'on parvient à les configurer et à les utiliser ? si non, est-ce qu'on peut trouver un remplacement ? est-ce qu'on a les épaules pour faire le système en events ?)
Cela nécessite de faire des tests sur de petits projets en parallèle du projet principal.

Listing des variables et interrupteurs requis

Rappel : la variable 22 est requise pour garder le contrôle de l'avancement du joueur.

Objectif : pouvoir accéder aisément aux variables/switches/events les plus communs et ordonner les éléments relevant des systèmes de jeu. 

Par défaut, la première page de variables et de switches est dédiées aux variables et switches temporaires. La seconde (et la troisième éventuellement) est dédiée aux variables et switches système réservés par un plugin.

On peut enfin commencer à maker !


Sources :

Files

v0p1.zip 8 MB
47 days ago