❤ 0 Créer un système de temps réaliste
Salut à tous !
Aujourd'hui, j'ai décidé de publier un tuto sur l'un des points forts de mon jeu : le système de temps.
Niveau requis :
Maitrise des interrupteurs et des variables.
Maitrise des Conditions et des Boucles.
Donc, avant tout, il faut savoir ce que signifie précisément "un système de temps réaliste". Plusieurs points sont à souligner :
- Le temps ne marchera que si l'interrupteur "temps marche" est activé
- Une seconde réelle équivaut à une minute du jeu
- Un système d'alternance jour/nuit (par défaut, il fait jour à 6h et nuit à 20h)
- Les jours se suivent, (nous déterminerons le jour de la semaine)
Si il faut que l'interrupteur "Temps Marche" soit activé pour que le temps avance, c'est pour pouvoir le bloquer quand vous voulez, pendant les scènes cinématiques par exemple
Préparation des événements
Pour commencer, voila ce dont vous aurez besoin :
- 4 Interrupteurs
- 4 Variables
- 6 Evènements communs
Commençons par les interrupteurs. Voici les 4 à créer :
- Un interrupteur "Intérieur_Nuit" pour qu'il ne fasse pas nuit dans les maisons.
- Un interrupteur "Temps_Marche" pour contrôler les moment où le temps passe
- Un interrupteur "jour" pour contrôler le mode jour
- Un interrupteur "nuit" pour contrôler le mode nuit
Maintenant, jetons un œil aux variables :
- Une variable "Minutes" pour contrôler les minutes
- Une variable "Heures" pour contrôler les heures
- Une variable "Jours" pour contrôler les jours
- Une variable "Jour Semaine" Pour connaitre le jour de la semaine.
L'événement commun qui gère l'écoulement du temps
Maintenant, on entre dans la partie que vous redoutez tous : La programmation ! Alors, voilà le premier des 6 évènements communs. Cet évènement est en processus parallèle :
-Il faut qu'un évènement active l'interrupteur "Temps Marche" pour que le reste puisse fonctionner
-On attends une seconde, et on ajoute une minute
-Si 60 minutes se sont écoulés
-On remet minutes à 0 et on ajoute une heure
-Si 24 heures se sont écoulés
-On remet heures à 0 et on ajoute un jour
-On ajoute 1 à jours semaines (qui détermine si on est lundi mardi etc.)
-Si variable "Jours_semaines" devient supérieur ou égal à 8
-On la remet à 1
-On sort de la boucle pour vérifier si l'interrupteur "Temps_Marche" est toujours activé.
Voilà, ainsi le temps tourne parfaitement. Les trois autres événements serviront à l'enchainement jour/nuit.
Faire les transitions entre les moments de la journée
Commençons par voir l'évènement "jour/nuit" :
- Une condition qui dit que Si il est 6 heures
- On appelle l'évènement jour
- Et Si il est 20 heures
- On appelle l'évènement nuit
Voila, c'est simple, les heures de jour et de nuit peuvent bien sur être modifiées, si vous voulez qu'il fasse nuit à 18h.
Voyons l'évènement jour en Appel :
- Si l'interrupteur jour est désactivé
- On modifie le ton de l'écran (100, 100, 100, 100) pour le rendre façon jour, en 10 secondes pour le réalisme
- On active l'interrupteur jour
- on désactive l'interrupteur nuit
Si on a besoin de ces deux interrupteurs, c'est pour ne pas rendre le jeu façon jour quand il fait déjà jour (ou inversement) et pour les intérieurs (vous verrez plus loin...)
Maintenant voyons l'événement nuit en Appel. Il ressemble à l'événement jour :
- Si l'interrupteur Intérieur Nuit est désactivé (on verra ça plus loin)
- Si l'interrupteur nuit est désactivé
- On modifie le ton de l'écran (50, 50, 60, 100) pour le rendre façon nuit, en 10 secondes pour le réalisme
- On active l'interrupteur nuit
- on désactive l'interrupteur jour
C'est bon, vous avez un système temporel opérationnel
Détecter un intérieur, et opérer le changement voulu
Enfin... A un détail près, en entrant dans une maison, il fera encore nuit, et ça c'est pas cool >.<
Mais vous en faites pas ! Il y a une solution ! Elle s'appelle : Intérieur nuit & Extérieur nuit ! En fait, c'est un peu chiant, parce qu'il vous oblige à appeler l'événement commun "Intérieur nuit" dans toutes les entrées et Extérieur Nuit dans toutes les sorties de maisons.
Ne confondez pas l'interrupteur Intérieur nuit et l'évènement commun Intérieur Nuit ! Là, c'est de l'évènement commun Intérieur Nuit qu'il s'agit !
Voila l'évènement Intérieur Nuit en Appel :
- Si l'interrupteur nuit est activé (si il fait nuit)
- Modifier le ton de l'écran façon jour (100, 100, 100, 100) en 0.1 secondes pour le réalisme
Puis l'évènement Extérieur Nuit en Appel. Oui, c'est quasiment la même chose !
- Si l'interrupteur nuit est activé (si il fait nuit)
- Modifier le ton de l'écran façon nuit (50, 50, 60, 100) en 0.1 secondes pour le réalisme
Ok, maintenant il reste un problème : Disons que nous entrons dans une maison à 19h (il fait jour) et qu'on y reste jusqu'à 20 heures (la nuit), on aura pas appelé l'événement intérieur nuit vu qu'on est entré le jour, donc il fera nuit ! Oui ! C'est vrai, mais pas de panique ! Il suffit de se servir de l'interrupteur Intérieur Nuit !
Tout ce que vous avez à faire, c'est d'activer cet interrupteur dans chaque chaque téléportation dans une maison et le désactiver dans chaque sortie de maison (pour que la nuit puisse tomber le lendemain si on est dehors). Ainsi, il n'y a plus de problème.
Si vous vous demandez comment ça marche, c'est très simple : si il fait nuit pendant qu'on est dans la maison, l'interrupteur Intérieur Nuit empêche la nuit de tomber. Et la nuit retombe grâce à l'évènement commun... Extérieur Nuit ! Oui, si il fait nuit et qu'on sort de la maison, la nuit se place grâce à cet évènement !
Vous voyez la magie de la programmation ? C'est plusieurs bouts de code empilés les uns sur les autres qu'on relie les uns aux autres avec une toile géante !
Voilà, votre système est maintenant opérationnel à 100%
Programmation des jours de la semaine
Mais il y a encore une chose dont je voudrais vous parler : Les jours de la semaine. Nous avons créé une variable jours_semaines, on va l'utiliser !
Bon, maintenant disons que vous créez un PNJ qui donne les jours de la semaine (par exemple, une vache), voilà un récapitulatif de ce que vous devez coder dedans :
- Si Jours semaines = 1
- C'est lundi
- Si jours semaines = 2
- C'est mardi
- Si jours semaines = 3
- C'est mercredi
- Si jours semaines = 4
- C'est jeudi
- Si jours semaines = 5
- C'est vendredi
- Si jours semaines = 6
- C'est samedi
- Si jours semaines = 7
- C'est dimanche
Voilà, c'est bon, maintenant votre vache (ou calendrier, c'est vous qui voyez) vous donnera le jour de la semaine.
Conclusion
Ainsi s'achève notre tuto, j'espère qu'il vous aidera et vous permettra de créer pleins de jeux avec un système temporel !
Ah ! Et surtout, lorsque le temps commence à passer dans votre jeu, n'oubliez pas d'initialiser les variables "heures" "minutes" et "jour", sinon vous commencez automatiquement à 0h00 le jour 0.Par exemple, si votre jeu commence un mercredi (par exemple) vous DEVEZ initialiser la variable "jour_semaines" à 3, même si c'est le premier jour de jeu !
Ce tutoriel a été créé sur RPG Maker 2000/2003. Pour le faire fonctionner sur RPG Maker XP/VX et Ace, vous devez appeler vos événements communs Temps et Jour/Nuit en processus parallèle via un interrupteur, à activer en début de jeu/au moment où vous souhaitez que le système soit actif.
Aussi, 1 seconde correspond à 20 frames sous RPG MAKER XP.
Source : Réponse de Xorin le 27/12/2007, lien : https://web.archive.org/web/20071227201158/http://www.rpg-maker.fr/index.php?page=tutos&id=131
Ecrit vers 2007.
Mis à jour le 22/4/2020.
|