Guelnika, le site d'E-magination

 

Tutoriaux

Créez un système de temps réaliste !

Créez un système de temps réaliste !

Date : 13/01/2009
Auteur : awakeing
Bon ben quand faut y aller :-°


Salut à tous Wink

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 tuto :

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 :

Image illustrative
Oui, c'est peu le bordel la dedans Hihi



  • 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 oeil aux variables :

Image illustrative
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 Wink

Alors, voila le premier des 6 évènements communs :

Image illustrative
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" :

Image illustrative
C'est bien plus léger non ? Hihi




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 Wink

Voyons l'évènement jour en Appel :

Image illustrative
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 Wink ) et pour les intérieurs (vous verrez plus loin...)

Maintenant voyons l'évènement nuit en Appel :

Image illustrative
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 Hihi
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 :

Image illustrative



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 :

Image illustrative
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 Wink


Bon, maintenant disons que vous créez un PNJ qui donne les jours de la semaine, voila ce que vous devez coder dedans :

Image illustrative

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 Wink

Trobien ! (0)

Commentaires

test

Hihi Wink2 Megaloool Je suis triste Haha Kia Chou Chou Boude Fufu Euh... Fan Hé oui

Alex RoiEsper

Test réussi. Choc

Relm

lol XD
Écrire un commentaire

Pour pouvoir poster un commentaire, vous devez être connecté sur votre compte. Si vous n'avez pas de compte, vous pouvez en créer un très rapidement.