JeuWeb - Crée ton jeu par navigateur
Les pnjs ... - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Gameplay, gamedesign (https://jeuweb.org/forumdisplay.php?fid=48)
+--- Sujet : Les pnjs ... (/showthread.php?tid=719)



Les pnjs ... - LeToto - 28-01-2007

Bonjour à tous !

J'ai un problème quant à la conception des pnj dans mon p'tit jeu.

J'ai une carte 20*20 en 2D qui fonctionne bien, j'ai des bâtiments, des arbres de l'eau, bref une vraie p'tite carte.
Maintenant j'aimerais bien placer les pnj et que les joueurs puissent interagir avec eux, et que selon certains paramètres le message dit par les pnjs soit différent (par exemple lorsque l'on a l'objet de quête).
Pour le moment j'ai pensé à faire 2 table : Une action_pnj qui récupère toutes les infos des actions pnj/joueur qu'il y a eu et une autre table pnj qui regroupe le nom des pnj, leur image, coords, leurs textes, ...

Je ne suis pas sur que ce système soit très performant, j'aimerai bien avoir de l'aide pour savoir comment mettre tout ça en place ou s'il vaut mieux changer le système.

Merci


RE: Les pnjs ... - Byleth - 28-01-2007

J'ai pas encore réalisé mes pnjs, mais dans mon idée, il faudrait un système par étape :
chaque joueur peu parler à un pnj, à chaque fois qu'il fait avancer la conversation ou l'action, on passe à l'étape suivante (genre on est à l'étape 1, on passe à l'étape 2 ou à l'étape 1+1)

Voilà, c'est une base de réflexion, je sais même pas si c'est faisable.


RE: Les pnjs ... - LeToto - 28-01-2007

Byleth > oui c'est ce que j'ai fais, j'ai une colonne dans ma table "nb" qui est relié à id du perso et id du pnj et qui contient le numéro de l'étape à laquelle on est.


RE: Les pnjs ... - Globe - 28-01-2007

Cependant ça serais pas plus pratique de faire une table quêtes à part ? avec simplement des vérifications dans la BDD, genre vérifier si l'item existe dans le sac du joueur, si oui quete qui se termine, sinon il affiche un reminder de la quete, et si la quete n'a pas été lue par le joueur il affiche le message de base... Enfin je dis ça pour foncitonner avec une BDD sinon les étapes c'est bien aussi, juste une alternative....


RE: Les pnjs ... - dac - 31-01-2007

Bonjour alors pour tes pnj, fait toi un fichier pnj, une base de donnée avec le nom du pnj et sur quel map il est, dans ton fichier pnj.php tu regarde (par exemple) si le nom du pnj est égale a "Alia", si oui on inclu le fichier Alia.php qui est un pnj, dedans tu met ce que tu veut, le texte du pnj etc... voila si sa peut t' aider c parfait^^


RE: Les pnjs ... - dac - 31-01-2007

E si tu veut que je t' aide pour sa, entre cette adresse: vincent66666@hotmail.fr
J' ai déjà fait ce system sa sera avec plaisir de taider Wink


RE: Les pnjs ... - gtsoul - 31-01-2007

Je pense avoir un système de pnj assez abouti, alors voici ce que je conseille :
_ il faut séparer le comportement du pnj (je fais ca : son fichier php associé) de son entité physique (je ressemble à ca et je suis là : base de données)
_ il faut créer des comportements par défaut dans des classes (banque, marchand, hopital)
_ il faut limiter la taille des scripts au minimum, et d'ailleurs limiter le nombre de scripts (ca économise le codeur et limite les erreurs)

En gros, ca donne une table pnj : id, nom, description, carte, x , y, type
Si le type est connu (banque, marchand, hopital) = > on crée une instance de cette classe (pas besoin de fichier php), à la limite une seconde table peut fournir des rensignements complémentaires (biens_vendus : id_bien, id_marchand pour le marchand).
Si le type est inconnu, alors on charge le fichier php associé (pour une quete unique par exemple).

Un classe générale pnj dont hérite tout pnj doit être créée, elle réalise les "tests de collision" (le personnage doit être à côté, sur la même case, et en vie; et le pnj doit etre disponible), et donne une structure à l'affichage du rendu html (cadres, nom, image, description, lien de retour).

Il faut abandonner l'idée du "je crée un fichier php pour chaque pnj". Par expérience, on fait trop d'erreurs (incohérence dans l'étape des quêtes, dans les tests de collision); et les tests complets sont quasiment impossibles (pour une quete de 2h, on ne peut pas revoir 10x tous les aspects). C'est pourquoi il faut s'appuyer sur des classes spécialisées qui vous mâchent le boulot.

Pour les clés étrangères (ex : nom du fichier), EVITEZ DE PRENDRE LE NOM DU PNJ !! car soit tous vos pnj s'appelleront toto et tata, soit vous aurez des fichiers "daleth d'Ukhran le borgne.php"
Créez un id (autoincrémentable) pour différencier vos éléments


RE: Les pnjs ... - Shudrum - 31-01-2007

dac a écrit :E si tu veut que je t' aide pour sa, entre cette adresse: vincent66666@hotmail.fr
J' ai déjà fait ce system sa sera avec plaisir de taider Wink

Pourquoi ne pas aider directement sur ce sujet ? C'est le but d'un forum, non ?


RE: Les pnjs ... - LeToto - 31-01-2007

Étant en prépa, je n'ai pas vraiment le temps de faire des tests, je verrai ce week-end ce que ça donne avec ta méthode gtsoul qui m'a l'ai pas mal (d'ailleurs faut que je recode mon jeux en php5, ce sera ça de fait Smile).

dac > Ca risque d'être long quand même 1pnj = 1fichier, je verrai au final ce que je ferai. Pour info j'ai pas msn.

Voilou