------------------------------------------------------------------------------------------------------------------------------------------------------------------------ SYSTÈME DE JEU PRINCIPAL ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Chargement : On affiche un fond + texte "Nouveau Jeu" On teste la variable sauvegarde Si Le joueur n'a jamais sauvegardé - attente d'appui sur la touche "z", puis on commence le jeu à la position de départ du héros Si le joueur a déjà sauvegardé - on récup les fichiers, on affiche les saves - le joueur choisir sa save ou "nouveau jeu" avec les touches "i, k" - il valide avec "z" - on commence le jeu avec les infos adéquates ! Les cartes seront divisées en tiles (tuiles) de 32x32. Les tiles seront divisées en 2 types : -niveau 1 : tile de base en dessous de tout -niveau 2 : au dessus de la tile de base, à blitter après le héros (perspective) Il faudra tester la valeur des tiles dans un tableau, pour savoir si on peut marcher dessus ou non (déclaration préalable dans le programme de ce sur quoi on peut marcher) Les cartes du monde : - les sprites des héros et la musique changent lors de l'arrivée - lorsqu'on est sur une zone de téléportation (contact), on affiche le nom de la zone juste au dessus, et sans fenêtre, directement dans le décor - alors, si appui sur "z", téléportation dans la zone désirée - on peut également ajouter des points de musiques, à partir d'un certain y, la musique change - les sprites des héros changent à nouveaux lors du départ Les images, à afficher au dessus des tiles, pour donner une certaine ambiance au jeu : - toutes transparentes, au dessus de tout - elles bougent la plupart du temps en diagonale et selon un timer - on ne l'affiche qu'a certains endroits précis comme la carte du monde du futur (2300) - pas de collisions à gérer Pour passer d'une carte à une autre : - on définit des rectangles de "téléportation", a des coordonnées x et y précises, sur une carte précise, et on stoque dans une varible de structure les points d'arrivée (x, y, carte) - lorsque le héros touche ce rectangle (test de collision) : - on prive le joueur de liberté - on affiche une image noire, avec une transparence alpha 2, qu'on augmente progressivement (c'est la transition) - on change la carte par la carte d'arrivée, et place nos héros aux coordonnées indiquées - on affiche une image noire, avec une transparence alpha 2, qu'on diminue progressivement (c'est la fin de transition) - on blite le tout - on rend la liberté au joueur ! On a le héros et les PNJ à afficher également, ils possèdent les mêmes niveaux d'affichage Le terme "PNJs" regroupe à la fois les personnages non joueurs, que les objets présents sur les cartes. Le joueurs tout d'abord : Le joueur pourra se déplacer sur la carte avec les touches "i, j, k, l" lorsque "liberté" = 1 Le joueur pourra marcher(défaut) et courir(en combinant la touche "s" et "i, j, k, l") avec des sprites différents Le joueur ne pourra pas aller sur certaines tiles. Les PNJs : Les PNJs ont un sprite. Ils peuvent être inanimés ou animés mais il faudra préciser la direction et la vitesse d'animation Ils peuvent être fixes(0) ou en mouvement(1), si en mouvement(1) il faudra préciser : - le type de mouvement (1 = aller simple, 2 = aller-retour, 3 = cycle) - le nombre de tiles à parcourir - la vitesse du mouvement INTERACTION : - l'appui sur la touche "z' a proximité du PNJ enclenchera l'interaction, il faudra préciser la liberté du héros : - liberté = 0, le héros ne peut plus bouger - liberté = 1, le héros peut contiuer à bouger, si le héros s'éloigne trop, fin de l'interaction - l'interaction sera le plus souvent de type MESSAGE(liberté = 1) - tourner le PNJ vers le joueur - afficher l'image de transition du fond_message, puis le fond_message - afficher le texte progressivement sur le fond_message - attendre(mais utiliser fonction "PollEvent" pour permettre le mouvement du héros) que l'on presse "z" pour afficher la suite - l'interaction peut également comporter - une incrémentation de la variable "histoire" permettant de développer des événements pour faire avancer l'histoire - ajouter un objet à l'inventaire - changer la position du héros, et éventuellement la bloquer (liberté = 0) - changer musique Les monstres : Les monstres ont un sprite. Ils peuvent être inanimés ou animés mais il faudra préciser la direction et la vitesse d'animation Ils peuvent être fixes(0) ou en mouvement(1), si en mouvement(1) il faudra préciser : - le type de mouvement (1 = aller simple, 2 = aller-retour, 3 = cycle) - le nombre de tiles à parcourir DÉCLENCHEMENT COMBAT : - le combat se lance via appui sur la touche "z" a proximité du monstre, declenchement_combat = 0 - le combat se lance via contact, declenchement_combat = 1 - le combat se lance via une cutscene, declenchement_combat = 3 Les personnages qui nous suivent sur les cartes : On dirige toujours au moins un personnage, l'identité de ce personnage est stoquée dans la varible heros[0] Si dans notre équipe, on compte 2 ou 3 personnages, heros[0] compris, alors ces deux personnages doivent nous suivres sur les cartes, et apparaitre en combat lorsque heros[0] marche à l'endroit x, heros[1] marchera à l'endroit x, de même s'il court On a la même relation avec heros[1] et heros[2] Les points de sauvegardes : au contact, un son est joué active le sous-menu sauvegarde (dans le menu) si "z" appuyé, on va directement à l'écran de sauvegarde ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ CUTSCENES ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Pour déclencher une cutscene, trois moyens : - via une interaction avec un personnage, "déclencher_cutscene" = 0 - lors de l'arrivée à une position dans une carte, déclencher_cutscene = 1 - lors de l'arrivée dans une carte, déclencher_cutscene = 2 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ COMBATS ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Tout d'abord, changer l'intro selon le mode de déclenchement_combat - declenchement_combat= 0 : on déplace les personnages dans un endroit convenable pour le combat - 1 : on déplace les personnages dans un endroit convenable pour le combat - 3 : on déplace les personnages dans un endroit convenable pour le combat INTRODUCTION : - on empêche l'accès au menu - ouverture du menu avec déjà toutes les infos écrites dedans (HP, MP, nom personnage, barre atb qui se remplit au fur et a mesure du temps) - en même temps, on joue le son caractéristique du début de combat - les héros changent de sprites, ils sortent leurs armes - on change la musique, on met une musique de combat COMBAT : - on met la barre de tous les monstres et persos à 0 - début boucle - on lance la barre atb de tous les personnages et de tous les monstres qui ont une barre à 0 - la vitesse de la barre atb dépends des carac des persos et des joueurs - en parallèle, les personnages et monstres doivent être animés - la première barre terminée donne l'initiative à son propriétaire, 2 cas : 1/ C'est la barre d'un monstre : - on met en pause les barres, l'animation des héros et des monstres - le monstre utilise une attaque au hasard dans sa liste de coups - on affiche les infos correspondantes, dans la fine mais longue fenêtre de combat - la/les personne visée perds de PV ou PM ou est ratée - on met la barre d'initiative du monstre à zéro - on enlève la pause - on retourne au début de la boucle 2/ C'est la barre d'un personnage - on affiche le curseur sur le personnage qui a l'initiative - on affiche le nouveau menu et le pointeur en forme de main, avec son bruit à chaque mouvement - le joueur peut choisir son menu avec les touches "i, k" et valider avec "z" - on affiche les infos correspondantes, dans la fine mais longue fenêtre de combat - le joueur valide : ATTAQUE : - on affiche un pointeur clignotant sur le premier monstre - le joueur peut choisir le monstre avec pointeur à l'aide des touches "i, j, k, l" - on affiche les infos correspondantes, dans la fine mais longue fenêtre de combat - si le joueur appuie sur "z", le perso attaque et lui inflige des dégâts selon sont niveau, sa force, sa dextérité, son arme. On met un rand plus ou moins grand, selon son chance, pour que la tech puisse ne pas marcher - si le joueur appuie sur "s", on n'affiche plus le pointeur clignotant sur les monstres, et on revient aux choix du type d'attaque TECH : - on affiche les technique du perso, et leurs cout en MP si une tech nécessite trop de MP, on l'affiche en gris plus foncé - on affiche les infos correspondantes, dans la fine mais longue fenêtre de combat - si le joueur valide une tech, alors il choisit la cible - si le joueur valide, alors il exécute la tech, et inflige des dégâts selon son nv, sa magie, et sa dextérité. On met un rand plus ou moins grand, selon son chance, pourque la tech puisse ne pas marcher ITEMS : - on affiches les objets dans le même ordre que le menu, le joueur peut se déplacer dans le menu - on affiche les infos correspondantes, dans la fine mais longue fenêtre de combat - si le joueur valide, on retire un objet de l'inventaire, puis on l'utilise (ex : tonic rends 50 PV à un allié) - on choisit l'allié, on valide - Si les PV d'un monstre ou d'un persos sont <= à 0, alors on change son sprite, et on désactive sa barre atb - si il ne reste aucun monstre, alors le combat se termine, on met la variable fin_combat à 0, 1, ou 2 0/ Fin du combat, on change les sprites des héros en victory, on change la musique, on affiche les points d'xp et de tech gagnés, on fait les calculs de nvx et de tech et on affiche les gains éventuels. Puis après appuis sur "z", on range les fenêtres de combat, on ramène tous les persos au centre avec leurs sprites de base, en file indienne. On sort du combat 1/ Fin du combat, mais un autre combat arrive à la suite ! Des ennemis font leur apparition, puis le combat continue, on met les barres atb à 0, puis go début boucle ! 2/ Fin du combat, on ferme les menus, on déplace les héros, puis un autre combat reprends ! ( = "2/" + déplacement des héros !) - Enfin, on retourne au début de la boucle ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ MENUS ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ On entre dans le menu en appuyant sur "a" On est alors automatiquement placé en position 0 sur le rail. RAIL : Le rail est composé de 6 éléments consécutifs : "équiper, objets, techniques, options, changer, sauvegarder, qui valent la valeur de 0 à 5 On peut choisir le sous-menu désiré en utilisant les boutons "j, l" ou bien partir du menu en appuyant sur "s" Après avoir choisit un sous-menu, on n'affiche plus le rail /!\ ATTENTION ! LES ÉLÉMENTS DES SOUS-MENUS DOIVENT ETRE AFFICHES DES L'AFFICHAGE DES SOUS-MENUS AVEC LE RAIL ! EQUIPER : ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ LOGICIEL A PART : ÉDITEUR DE NIVEAUX ------------------------------------------------------------------------------------------------------------------------------------------------------------------------