18-12-2015, 01:53 AM
(16-12-2015, 06:18 PM)fortz a écrit : niahoo : Merci pour ces conseils, donc selon toi je ne devrais avoir qu'une seule table "quetes" avec toutes les quetes et simplement rajouter un champ "quete_precedente" qui sera égale à l'id de l'étape précédente ou null si c'est la première étape ?
Merci pour votre aide
Ouais sauf que moi je pensais plutôt un champ quête suivante, et null si c'est la dernière quête. Mais ça revient au même, les deux se valent je pense, c'est juste une relation de une seule quête à une seule autre. Avec un champ quête suivante, une quête ne peut avoir qu'une autre quête qui la suit. Avec un champ quête précédente, tu peux avoir plusieurs quêtes qui en suivent une première, et ça c'est faux sémantiquement, car ça devient redondant avec le système de prérequis.
Par exemple, ton héros arrive dans une nouvelle zone, il doit faire une série de quêtes d'introduction, et une fois cette série terminée, plusieurs PNJ de la zone vont lui proposer des quêtes : là, c'est le système de prérequis doit être utilisé. Par contre, pour ordonner cette série de quêtes d'introduction, on va utiliser les champs quête précédente / quête suivante. Ce sont deux systèmes indépendants.
Quelques remarques ensuite :
Si on a deux quêtes, A et B qui sont reliées par cette relation quête suivante, c'est le PNJ qui termine la quête A qui doit commencer la quête B. De sorte que quand on valide la quête A, la quête B peut nous être proposée directement.
Dans la même idée, la quête B ne doit pas pouvoir être disponible si la quête A n'a pas été remplie, c'est un prérequis de facto. C'est vrai que dans ce cas précis, un champ quête précédente est plus simple, donc s'il n'y a pas d'inconvénients, le champ quête précédente peut être préféré à un champ quête suivante, en mettant une contrainte unique sur le champ quête précédente. (Alors que théoriquement, on n'est pas obligé de mettre une contrainte unique sur un champ quête suivante, on peut imaginer deux PNJ qui donnent chacun une petite quête qui vont donner suite à la même grosse quête).
Ensuite, la quête B ne doit pas avoir d'autre prérequis que la quête A. Si on a pu avoir la quête A grâce à certains prérequis, la quête B devrait pouvoir être prise dès qu'on a fini la quête A, car on gère en réalité des étapes, et non pas des quêtes distinctes. Sinon, si tu finis la quête A et que la B n'est pas disponible, le joueur ne va pas forcément penser à venir la chercher ensuite, il croira qu'il n'y a pas de suite. Alors que quand tu débloques une zone ou un nouveau bâtiment, tu peux légitimement te demander si cela ne peut pas intéresser de nouveaux PNJ. Bon, après si tu mets des gros ! au dessus de ton PNJ ça marche aussi.
Enfin, si tu veux que lors d'une quête on aie à faire un choix, qui va déterminer quelle sera la suite de la quête (genre je vais aider machin contre bidule, ou bidule contre machin) alors il te faudra gérer un arbre de quêtes, une relation précédente/suivante ne suffit plus.