Bon ben quand faut y aller :-°Salut à tous
Aujourd'hui, j'ai décidée de publier un tuto sur l'un des points forts de mon jeu : Le royaume.
Ce point fort, c'est un système de temps.
Voila donc le sujet du tuto :
Créer un système de temps réaliste
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 Clin d'oeil
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 :
Oui, c'est peu le bordel la dedans
- 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 :
Complètement zappée à quoi me sert la variable i :-° Alors là, c'est hyper simple
- 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.
Maintenant, on entre dans la partie que vous redoutez tous : La Programmation !
Avant de commencer je tiens à signaler aux éventuels utilisateurs de RPG Maker XP que pour les évenements communs, étant donné qu'un interrupteur de déclenchement est obligatoire, ils peuvent se servir de l'interrupteur "Temps_Marche", cela ne pose aucun problème Alors, voila le premier des 6 évènements communs :
Mais non, ça fait pas peur :p 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é.
Voila, ainsi le temps tourne parfaitement. Les trois autres évènements serviront à l'enchainement jour/nuit. Commençons par voir l'évènement "jour/nuit" :
C'est bien plus léger non ? Comme vous le voyez, c'est très simple :
-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, ptêt que vous voulez qui fasse nuit à 18h
Voyons l'évènement jour en
Appel :
Comme ça il fait jour !
C'est très simple :
- 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 :
C'est un peu la même chose :-° C'est (aussi) très simple :
- 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
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 ! 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. (vous avez pas besoin de screen pour ça j'espère)
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 :
Vraiment simple :
- Si il 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 ! Ok, maintenant il reste un problème : Disons que noue 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 cette interrupteur dans chaque entrée de maisons et le désactiver dans chaque sortie (pour que la nuit puisse tomber le lendemain si on est dehors)
Appelez également l'événement commun Interieur_Nuit dans chaque entrée de maisons et appelez l'évènement commun Exterieur_Nuit dans chaque sortie de maisons
Ainsi, il n'y a plus de problèmes.
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 !
Voila, votre système est maintenant opérationnel à 100%
Mais il y a encore une chose dont je voudrais vous parler : Les jours de la semaine. Nous avons créer une variable jours_semaines, on va l'utiliser
Bon, maintenant disons que vous créez un PNJ qui donne les jours de la semaine, voila ce que vous devez coder dedans :
Ben quoi ? Vous avez jamais vu une vache donné la date ?
On ne voit pas le bout, pourtant il est très important, alors voila un récapitulatif :
- Si Jours semaines = 1
- C'est lundi
- Sinon Si jours semaines = 2
- C'est mardi
- Sinon Si jours semaines = 3
- C'est mercredi
- Sinon Si jours semaines = 4
- C'est jeudi
- Sinon Si jours semaines = 5
- C'est vendredi
- Sinon Si jours semaines = 6
- C'est samedi
- Sinon Si jours semaines = 7
- C'est dimanche
Voila, c'est bon, maintenant votre vache (ou calendrier, c'est vous qui voyez) vous donnera le jour de la semaine ;-)
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 :-D !
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.
Attention ! 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 !Salut