PNJ, dialogues, et quêtes - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : PNJ, dialogues, et quêtes (/showthread.php?tid=1350) Pages :
1
2
|
PNJ, dialogues, et quêtes - Byleth - 25-06-2007 Voilà, mon problème n'est pas pour l'instant le codage mais plutôt de savoir quel est le meilleur système. Je m'explique donc : il y aura des PNJ un peu partout sur la carte, et pour leur parler, il faudra se trouver sur une case adjacente. Une fois qu'on choisit de leur parler (non défini encore), un pop-up s'ouvrira et affichera le texte du PNJ. Jusque là tout va bien. Maintenant, je vais inclure les quêtes : selon les étapes de la quête, les textes ne seront biensur pas les mêmes et un PNJ aura alors dans les cas les plus simple 3 étapes à gèrer (proposition, attente, remerciements). Tout cela est très classique mais je cherche la meilleure solution pour stocker tout ça. Chaque joueur aura une table de quête avec pour caque quête (numérotée) entré l'étape. Du coup, lorsqu'il parlera à un PNJ, il devrait s'afficher le texte de l'étape. Quel est donc le mieux? une page php par PNJ avec des petits switch, un texte enregistré dans une base de données ou encore des fichiers textes (là je vois pas trop l'intérêt mais on sait jamais).. Si vous avez testé des dialogues avec des PNJ, je veux bien de vos témoignage :respect: RE: PNJ, dialogues, et quêtes - taurri - 26-06-2007 Je n'est jamais tester mais je pense que la meilleur solution est d'enregistré les textes dans la bdd ... Car au fur et a mesure que ton jeu se develloppe tu va rajouter des quetes surement non ? et des pnj ? donc plus ton jeu serra riche en terme de contenu, plus la mise a jour etc... se ferra compliquer non ? Biensur cela depend du nombre de pnj et du nombre de quettes aussi RE: PNJ, dialogues, et quêtes - Byleth - 26-06-2007 C'est ce à quoi je pensais au début, mais peut on enregistrer du php dans la BDD? Car si ce n'est pas le cas, j'aurais de gros soucis lorsqu'il faudra par exemple passer à l'étape suivante ou donner une récompense... RE: PNJ, dialogues, et quêtes - taurri - 26-06-2007 pourquoi faire du php dans la bdd ? Je vois pas ou est le probleme, si au moment de parler a un PNJ tu verifie ou en est la quette et que tu affiche se qu'il faut en le sortant de la bdd ... RE: PNJ, dialogues, et quêtes - naholyr - 26-06-2007 Il ne faut pas oublier qu'un PNJ peut être associé à plusieurs quêtes à la fois, ou qu'une quête peut avoir plusieurs PNJ associés. Quand j'avais développé ça pour Dei, j'avais défini 2 tables pour les quêtes : Une simple table de statut : (id_perso int, id_quete int, statut int) La table des dialogues : (id_pnj, id_quete, statut_requis, condition, message) La table de progression : (id_pnj, id_quete, statut_depart, id_reponse, statut_arrivee) Où condition et message sont des tableaux sérialisés (il y aurait eu moyen de faire ça avec d'autres tables, mais ça devenait lourdingue). Condition contient une liste de tableau de la forme [type_condition, valeur_condition] comme par exemple ['objet', 'hache']. Message contient est un tableau [texte, reponses] ou réponses est la liste des réponses possibles pour le personnage joueur. Chaque réponse fait passer à un autre statut. La table de progression permet de dire «si le personnage répond ceci alors qu'il avait un statut X pour cette quête, alors son statut passe à Y». L'utilisation d'une table de progression pour les dialogues, jouer avec le statut, la gestion des conditions, et la différentiation des réponses, tout ça permet de gérer à peu près toutes les situations. En pratique j'avais encore ajouté à la table de progression une colonne "action_supplementaire" qui décrivait des effets particuliers. Par exemple «ajouter un objet à l'inventaire», «donner X pièces d'or», etc... Il s'agissait également d'un tableau sérialisé en l'occurrence. Je gérais tous les pnj comme ça, car quand tu regardes le système il te permet de créer un marchand, un joueur de black jack, un tavernier, etc... La seule différence c'est que pour ces personnages la quête n'apparaîtra pas dans le «journal des quêtes» du personnage. RE: PNJ, dialogues, et quêtes - Kassak - 26-06-2007 Ou sinon tu as la methode bourin Moi j'ai une table PNJ, ou je les insert sur la map (nom, posx, posy) Ensuite une table quete, avec comme champ : pseudo_joueur, PNJ1, PNJ2, PNJ3 etc... LEs PNJ1 PNJ2 sont remplacé par les noms des PNJ. Dans ces champs il y a un chiffre, qui represente l'étape, et qui me permet de tout faire, si PNJ = 0 on affiche XXXX mais si PNJ = 2 on affiche blabla.. Ensuite les dialogues de mes pnjs sont ecrit a la suite sur une page pnj.php. Ma page pnj.php se compose ainsi : if $donnees['pnj'] == 0 Salut ca va?va me chercher du bois! ensuite une fois que l'on a ramassé le bois, j'update ma BDd afin que le champ pnj ai comme valeur 1 puis if $donnees['pnj'] == 1 C'est bien tu m'a ramassé du bois! Ce n'est surement pas le meilleur des systemes, mais c'est pas du tout galerer pour ecrire une longue quete, et tout ce fait sur le page pnj.php... RE: PNJ, dialogues, et quêtes - nemesis_elite - 26-06-2007 Je suis très intéressé également par vos réponse sur le sujet des quêtes . Alors j'attends avec impatiente d'autre réponses .... RE: PNJ, dialogues, et quêtes - Zamentur - 26-06-2007 A mon tour de repondre... Tout d'abord j'ai jamais fait de systeme de quete de ce style Cependant çà me parait pas fort complexe! Voici comment je m'y serais pris: d'abord en ce qui concerne le stockage des textes, 2 choix soit: - dans ma table de bdd `texte` composé ainsi id_texte,fr,en ... - dans mon fichier de langue: c'est en fait une page php (fr.php) qui est inclue celle ci contient un array id_texte => texte . Ces pages sont modifiable directement dans la console d'administration. Note: un if peut permetre d'eviter le chargement de texte inutile et donc allégé la memoire ram du serveur Ce choix doit selon moi etre effectué si tu envisages que des joueurs (et non des MJ) puisse ecrire des quetes, auquel cas la bdd est mieux , sinon le fichier texte sera mieux puisque plus rapide. Bon ensuite, concernant la quete et le joueur si la suite de la quete ne depend pas des etape parcourue auparavant dans la table bdd du joueur je mettrait id_quete, id_etape Sinon id_quete, chemin La description de la quete: ici je concidere que pour une quete est associé des PNJ (donc pour la meme quete les joueurs aurront à faire au meme pnj) Donc la encore çà depend si les joueurs peuvent ecrire des quete je part du principe que non, du coup je le met en dur dans PHP, puisque les texte sont en dur. Note: une table bdd quete peut etre definie pour faire correspondre un pnj à une quete id_quete, id_pnj, et eventuelement des parametre d'"humeur" et autre si les pnj ne reagissent pas tous de la meme façon pour une meme etape Donc du coté de php le but c'est de decrire la quete On peut conciderer qu'une quete c'est un graphe qui part d'un point et qui peut aboutir à plusieur point. Entre temps il ya des point intermediaire relié entre eux d'une certaine façon. Chaque point se constitue donc - un id_etape - eventuelement une preaction par exemple le nom d'une fonction - par une phrase - plusieurs reponse/action qui pointe chacune vers un autre point(un autre id_etape ou systeme plus complexe qui pointe vers different id_etape, selon le meme calcul savant (mais avec des parametre different)(les actions sont donc possible durant le passage d'une etape à une autre) (si on le souhaite on peut donc definir un objet point) Cas particuliers les points finaux, ne sont constitué d'aucune reponse/action... Bon donc une fois que cette objet point est creer il ne reste plus qu'à decrire avec cet objet le graphe de la quete qui peut elle aussi constituer un objet si désiré. Un exemple: Citation :id_etape=0; Bon et çà me soule de decire la suite car je crois que tout le monde à compris, evidement c'est possible tout de meme de metre çà en base de donnée si çà arrange, surtout que dans un fichier php il ne faut pas charger tout les point mais seulement celui qui nous interresse Enfin bon j'espere que vous avez compris, à noter que comme je l'ai dit tout à l'heure on peut mettre plusieurs point pour une seul reponse et determiner lequel selon l'action Voilà voilà RE: PNJ, dialogues, et quêtes - nemesis_elite - 02-07-2007 Petit up ! Zamentur, pas mal comme système Je vais tester. En attendant j'aimerai avoir d'autre methode Tchûu RE: PNJ, dialogues, et quêtes - Zamentur - 02-07-2007 merci, en fait çà m'a donner envie d'intégrer un système similaire dans mon jeu... Je trouve çà marrant, et surtout çà me permettra de mettre en place l'aide interactive dont Algol va avoir besoin |