====== PNJ ======
Les PNJ((Abréviation de "Personnage Non Joueur")) sont toutes les créatures du serveur ayant une interaction spécifique avec les joueuses : proposer des quêtes, discuter... Il s'agit des [[um1>fr:ra|ra]].
Il ne devrait pas y avoir de PNJ sans histoire, chacun doit avoir sa personnalité, un background. La présence de tout être en jeu doit obéir à une logique cohérente avec le reste du monde. Les PNJ doivent donc avoir des cycles, où ils vont se nourrir, dormir... et donc ne pas être disponibles pour les joueuses.
Ne mettez pas un PNJ quelque part sans savoir qui il est, et ce qu'il fait/vit en dehors de la mission qu'il accomplit auprès des joueuses.
Cet impératif est là pour permettre un monde cohérent et riche.
Dans le jeu sur les [[fr:gamedesign:khanat:philosophia#realite|niveaux de réalité]], certains PNJ peuvent, à certains moment, donner des informations "gameplay" mais cela doit être présentée d'une façon ayant du sens dans le monde du Khanat.
===== Génération =====
Pour un principe de cohérence de l'univers, chaque PNJ doit donner l'impression d'être un individu à part entière. Il doit donc avoir un nom, un physique, des particularités, un historique, des relations... Ces informations seront exploitées par le système et les animatrices afin d'avoir des interactions plus riches.
Comme il va falloir énormément de PNJ, des outils de générations vont être disponibles. Ils permettront de générer plus ou moins aléatoirement((Possibilité de figer certains traits spécifiques et en laisser d'autres en mode aléatoire.)) un ou plusieurs personnages, afin de répondre aux besoins des quêtes.
Un deuxième outil de gestion des PNJ devrait permettre voir les liens des PNJ entre eux (qui connaît qui, quelles sont leurs relations) et de permettre de trouver un PNJ déjà existant correspondant à nos besoins. Par exemple, si on a besoin d'un PNJ pour orienter les gens dans une chasse aux trésors, pas besoin d'en créer un juste pour ça ; un personnage déjà existant peut être pertinent pour parler de "l'antique légende du pendo de lirrium", ou indiquer l'emplacement de la grotte perdue dans la forêt.
Ces deux outils peuvent être complètement indépendant du serveur de jeu((YannK et Zatalyz ont déjà quelques outils autour de la génération de personnages et des infos sur les façons de faire en procédural, mais tout ça n'est pas encore informatisé. Contactez-les si vous avez envie de développer ces logiciels.)).
Chaque PNJ est sensé avoir sa fiche dans l'UM1.
===== Cycles =====
Parce que chaque PNJ est "vivant", il suit un ou plusieurs cycles.
Au minimum, un cycle doit se composer de "Aller au travail, aller dans un espace de sociabilisation/se nourrir, aller dormir". Chaque jour de jeu, chaque PNJ est absent (au dodo chez lui) durant une certaine période. Le Khanat a des règles sur le travail différentes de la Terre, des rotations de PNJ permettent aux administrations et aux commerces d'être ouverts 24h/24 (ce qui est mieux dans le cadre du jeu), mais les personnes au guichet vont changer deux ou trois fois par jour, et auront des aspects et une personnalité différente.
Les cycles peuvent être plus complexes. Par exemple un chasseur peut passer une partie de la journée à patrouiller une zone, et suivant les créatures qu'il rencontre et chasse, son parcours peut énormément varier.
Un PNJ peut aussi avoir plusieurs cycles :
* journalier
* hebdomadaire
* saisonnier
Les trois peuvent se cumuler ; par exemple un marchand sera dans une région en été, et ailleurs en hiver. Les endroits où il travaillera, dormira et papotera au fil des jours seront différents en été et hiver. Donc les joueurs qui le chercheront devront le chercher au bon endroit.
===== Interaction =====
Ce qui est décrit n'est pas possible actuellement avec nos logiciels ; mais ça peut le devenir.
==== Jouer des PNJ ====
Il devrait être possible de prendre possession de certains PNJ, qui deviendront alors temporairement des PJ. À la déconnexion du joueur, le personnage redevient PJ et tente de rejoindre sa routine journalière. Débloquer l'accès à un PNJ déjà en jeu demandera une autorisation de l'animation ; ensuite le personnage sera disponible dans la liste des personnages jouables.
Il est aussi possible de transformer un de ses PJ en PNJ, en lui déclarant des cycles. Il faudra voir, suivant les options, si cela est possible sans modération a priori.
==== Mortalité PNJ ====
Comme les PJ, les PNJ peuvent être dépho ou non, mais par défaut ils ne seront pas dépho (en dehors du Dispensaire, et de certains PNJ importants). Ce qui veut dire qu'ils peuvent être tués, que ce soit par la faune, l'environnement, d'autres PNJ, ou les PJ.
L'IA doit prendre cela en compte dans les cycles. Si le PNJ a été tué, il passe automatiquement par une phase d'indisponibilité, jusqu'au moment où il devrait naturellement commencer son cycle "dormir", moment où il est remis en jeu. Cela veut dire que des PNJ peuvent disparaître un jour entier, régulièrement.
La mort des PNJ sera enregistré au niveau du serveur, ainsi que ce qui a mené à leur mort (environnement, PJ...). Cela permettra d'adapter les routines et l'IA en cas de mort trop fréquente à cause de l'environnement, et d'intervenir sur l'éducation des joueuses en cas de serial killer.
==== Dialogues ====
Les PNJ parlent en alentour en ayant une bulle au dessus de leur tête. Le joueur peut cliquer sur la réponse qu'il souhaite donner, ou taper sur son clavier le numéro de la réponse. Dans ce dernier cas, il s'agit d'une intégration d'accessibilité, à voir comme éviter que ça entre en conflit avec le reste... car tel quel, ça passera pas. Peut-être taper d'abord la touche "dialogue" qui verrouille en mode dialogue, puis le chiffre ?
Les dialogues obéissent à des règles de rédaction précises, laissant de la latitude à l'interprétation RP.
Voir aussi [[fr:rediger_quete#a_propos_des_dialogues_et_des_choix]].
==== Appréciation, réputation ====
Les PNJ auront une plus ou moins haute opinion des autres personnages qu'ils croisent (PJ ou PNJ).
Le mécanisme est le suivant :
* Personnage inconnu, sans affiliation visible : appréciation neutre (certains PNJ pouvant être de nature plus méfiante ou conciliante, ce qui modifiera l'appréciation).
* Le personnage fait partie d'une ou plusieurs organisation reconnues et affiche ses affiliations : modificateur suivant la façon dont le PNJ considère ces organisations
* Le personnage a réalisé des actions entraînant sa reconnaissance dans certains milieux : sa réputation augmente ou baisse suivant les groupes. Si le PNJ fait partie de ces groupes, il intègre aussi ce modificateur (ce n'est plus un inconnu, il a entendu parler de lui).
* Enfin, il y a une composante individuelle, suivant la façon dont les deux personnages ont interragi dans le passé.
Les 3 premiers peuvent concerner les interactions PJ/PNJ et PNJ/PNJ. Le dernier aspect (composante individuelle) ne concerne que les interactions PJ/PNJ ; sinon deux PNJ qui ne s'aiment pas trop à la base vont s'insulter et finir par se haïr...
Les mécanismes de réputation globale sont décrits dans l'article [[fr:gamedesign:khanat:reputation]].
L'appréciation individuelle va être modifiée par :
* Les missions réussies (ou ratées) pour le PNJ
* Les options de dialogue, en particulier couper le dialogue sans terminer proprement. Chaque option de dialogue peut être lié à un modificateur, mais la plupart ne modifient rien.
* les emotes adressés au PNJ en le prenant pour cible. Certains PNJ peuvent rire des pitreries (appréciation majorée) et d'autres s'en offusquer (minorée).
* Les cadeaux qu'on fait (option d'échange), là aussi pouvant être bien ou mal pris suivant les types de cadeaux, leur valeur, les goûts du PNJ.
* Les soins donnés au PNJ
* les agressions (attaque, mort). Notez qu'un PNJ combattif ne s'offusquera pas forcément de ça (une bonne bagarre, y'a rien de tel).
L'appréciation individuelle peut donc compenser notre réputation globale, et transformer un PNJ réticent en allié, ou au contraire se mettre à dos un potentiel allié...
Sur ce dernier aspect, cela fera beaucoup de relations à stocker côté serveur (côté client, ça semble risqué), donc à étudier. C'est peut-être une idée qui va surcharger le réseau et la BDD.
Un PNJ qui nous apprécie peut :
* débloquer certaines options de dialogues (quêtes, informations...)
* Avoir des phrases de dialogues plus sympathiques
* faire des prix sur ses marchandises dans le cas d'un marchand
* Faire quelques remarques sympathiques à haute voix en nous voyant débarquer dans son périmètre
* nous défendre en cas d'agression dans son périmètre
À l'inverse, un PNJ qui ne nous apprécie pas peut :
* débloquer d'autres options de dialogues (pas dans le genre sympa, bien sûr)
* Avoir des remarques désagréables dans ses dialogues
* hausser les prix dans le cas d'un marchand, voir refuser de commercer
* se moquer de nous à haute voix
* nous agresser physiquement
Tout cela est à divers niveau ; avant qu'un personnage nous attaque à vue, il faut qu'il soit à la fois d'un aspect guerrier ET qu'il ne nous aime vraiment pas. Ou qu'il soit un bandit, mais c'est un cas particulier où l'agression sera systématique à moins d'être très haut en réputation auprès de ce type de PNJ. Donc, même si un joueur fâche à mort un PNJ employé de l'administration, ce dernier ne lui mettra pas forcément son stylo entre les deux yeux. Par contre, il va probablement lui faire remplir 3 fois plus de papier...
===== Héritage (datasheet) =====
Le système de datasheet s'applique aux PNJ comme aux autres créatures du monde. Ainsi, on peut déclarer la famille "artisan", donnant des caractéristique de base, puis affiner avec la datasheet "Bill le cordonnier" qui précisera des caractéristiques de Bill, tout en héritant d'aspects définis dans "artisan" et "cordonnier" (et autres).
Ça c'est visiblement déjà présent dans les mécanismes.
{{tag>Gamedesign Khanat Brouillon}}