Aller au contenu






Photo

Mr_Pnj Ou La Cage Aux Fauves

Posté par abg , dans Projet de mod 31 janvier 2012 · 1 344 visite(s)

Billet fortement technique, voire même aride, à propos de mon mod et de son intégration dans le projet Morrowind Renaissance. Les non-moddeurs gagneront à sauter quelques paragraphes ;)

Il est probable que tout le monde s'en cogne :lol:
Mais depuis longtemps je me traine une signature wiwilandaise où il est question de "coaching de PNJs" !
L'allusion pas fine fait référence au mod MR_PNJ qui est un élément clef du projet Morrowind Renaissance.

Pour résumer, MR_PNJ regroupe toutes les modifications des PNJs nécessaires à MR...et à Naufrage en Shéogorad.

A la base MR_PNJ fut développé car nous avions besoin d'un tronc commun où rassembler toutes les modifications infligées aux PNJs du jeu. En effet, il est une vérité connue de tous les moddeurs : Rien n'est compatible avec rien ! Et tout spécialement dès qu'il est question de modifier plutôt que d'ajouter. Dès qu'ils touchent aux mêmes éléments, les esp se disent merde les uns aux autres :
- Qu'un mod modifie le paysage d'une cell et il sera incompatible avec tous les autres faisant eux aussi des modifications dans le même secteur. Il en ira de même avec les mods ayant besoin du décor dans son état originel !
- Qu'un mod modifie un objet et qu'un autre cherche à en faire autant : Conflit de compatibilité !
Les PNJs sont des objets techniquement parlant...

Beaucoup de moddeurs en ont fait les frais. Modifier l'inventaire d'un PNJ comme Arrile (pour lui ajouter des articles à vendre par exemple) et il sera incompatible avec tous les autres mods ayant eux aussi une bonne raison de modifier le brave taulier de Seyda Nihyn... Dans le cas de cet exemple (ajout sur l'inventaire) il est facile de tourner la difficulté à ajoutant un nouveau coffre dont Arrile sera propriétaire. Alors le moddeur ne modifie pas le PNJ lui-même mais ses biens (ce qui limite le risque d'incompatibilité). Mais dès qu'il ne s'agit plus de modifier l'inventaire mais le PNJ lui-même (fiche de statistique, apparence physique...) alors on est coincé !

Les mods tendent à se recouvrir les uns les autres, Bethesda n'ayant prévu aucune procédure de fusion des modifications. Donc dans la pratique c'est le dernier chargé qui a le dernier mot ! D'où cette pratique absconse bien connue des joueurs férus qui consiste à modifier son ordre de chargement de façon à donner priorité à l'un au détriment de l'autre (à l'aide d'outils non moins abscons comme TESTool ou Wrye Mash).

Bien évidement chez Morrowind Renaissance, comme nous aimons les coups, nous avions besoin de modifier les PNJs du jeu... Et il aurait fait désordonné que nos différents esp soient incompatibles entre eux. C'est pourquoi est apparu MR_PNJ.
Et tant qu'à modifier les personnages du jeu, autant y aller à la truelle, ne pas faire les choses à moitié !

Alors au fil du temps, toutes sortes de retouches sont venues s'agréger dans MR_PNJ. D'abord sont venues les modifications apportées par l'ami Finraïl : Pour les besoins de MR_Economie, une révision des statistiques liés (principalement la capacité à marchander des... marchands)
Puis les modifications jadis incluses dans Nova Magicka (révision des listes de sorts, du potentiel de magicka des jeteurs de sorts...) sont venues s'y joindre.
Enfin je suis passé derrière avec mes propres désidératas concernant l'IA des PNJs :
Diversification des packages IA, des stats IA. Cette couche de modifications nécessiterait à elle seule un long billet. Pour faire bref, disons que je révise systématiquement les réglages IA, avec des choses comme :
- Les gardes sont des cognes : Ils peuvent facilement s'énerver s'ils ne vous aiment pas !
- La plupart des villageois "civils" fuiront plutôt que de vous affronter armé de leurs petits poings.
- La plupart de ces mêmes villageois font preuve d'une solidarité limité avec les gardes (ce qui casse l'autisme traditionnel de Morrowind où seuls les gardes semblent se préoccuper des hostiles)
- La plupart des PNJs ont un instinct de survie affirmé (avait déjà était inclus dans Nova Magicka. Nova du coup se retrouve "dégraissé" de certains éléments hors-sujet dans un mod dédié à la magie...)
- Personne n'est fondamentalement hostile sans raison à la base : Même un brigand frappe rarement sans avoir averti (ou tenté de rançonner) initialement. Pensez notamment à l'IA telle qu'on la voit dans les jeux plus récents, lorsque les PNJs réagissent au positionnement du PJ sur l'échiquier politique... Pour l'occasion nous avons créé de nouvelles factions (et y avons rattachés les PNJs)
- Tout le monde a un "réseau d'alliés" plus ou moins étendu. Ce qui rééquilibre grandement un exploit bien connu de Morrowind (le mécanisme persuasion/sarcasme)
- Tout les habitants ont un point de vue initial sur cet étranger débarqué du navire-prison (plus de neutralité par défaut). Vous en apercevrez dès le début en constatant une plus grande diversité dans les hellos et les greeting (ces tirades que les PNJs prononcent en croisant le PJ)

Additionnellement, le mod comporte aussi une couche de scripts étudiés afin de rendre plus crédible le comportement des PNJs tout particulièrement face au comportement du PJ. Par exemple :
- Pratiquer l'invocation en ville provoque de la méfiance voire de l'hostilité (reprise d'une mention du manuel non implémentée dans le jeu vanilla)
- Les reptations d'un adepte de la discrétion provoquent la méfiance
- L'abolitionnisme n'est plus une obligation, le PJ peut adopter le point de vue inverse (à sa responsabilité et c'est une prise de position sur l'échiquier politique...)
- Une révision des dialogues qui permet d'utiliser la classe "guard" pour créer des PNJs non gardes à proprement parler (cette classe bénéficiant d'une IA hardcodée plus étendue que les autres)
- Une procédure de reddition qui fasse sens (à l'étude)
- Des révisions de mise en scène locale

Naufrage en Shéogorad sera dépendant de MR_PNJ. Car il m'apparaît difficile d'écrire une quête d'une certaine ampleur sans interroger le gameplay.

Pour finir, un peu de spoiler. Avec un exemple du type de PNJ que je fais naître en jonglant entre scripting local (Sempronia est un PNJ de Naufrage en Shéogorad) et fonctionnalités incluses dans MR_PNJ :

Sempronia Flavia, l'aventurière que j'ai assigné à la caverne d'Hassour explore elle-même les lieux de façon très convaincante. A l'arrivée du PJ elle est en pleine explication de texte avec les leveled-monsters du coin et est même en mesure de couper l'herbe sous le pied à notre apprenti Nérévarine venu pour casser du streum s'il la laisse se débrouiller. Le seul truc que je ne sache pas faire est de lui faire ramasser elle-même le loot. Du coup, elle tente de racketter notre héros, ce qui va, j'en suis certain, la rendre extrêmement populaire auprès de nos joueurs Image IPB Elle n'aime pas qu'on lui dise non et est susceptible de passer du statut d'alliée utile à celui de rivale dangereuse.

Autant vous l'avouer, j'adore créer des PNJs qui ont du chien !

Image IPB







Shadow she-wolf
31 janv. 2012 - 18:24
Je tiens à dire que c'est quand même impressionnant...!

Revoir l'IA, les scripts et jeux de factions de tant de monde, afin de créer une surcouche permettant de simuler les mécanismes IA des jeux plus récents, mais avec une véritable implémentation... (Ces mécanismes sont sous-utilisés sur Oblivion et FO3...je ne connais pas suffisamment Skyrim pour statuer, mais je doute que ça vole très très haut...)
Je suis impressionnée face à la somme de travail...

Citation

Tout les habitants ont un point de vue initial sur cet étranger débarqué du navire-prison (plus de neutralité par défaut). Vous en apercevrez dès le début en constatant une plus grande diversité dans les hellos et les greeting (ces tirades que les PNJs prononcent en croisant le PJ)

Vous avez fait ça comment...?
J'avais fait un travail similaire avec Reaction pour Oblivion, mais les jeux de factions permettaient de simplifier monstrueusement le script... qui a quand même atteint la limite de caractères... :peur:

Citation

Je tiens à dire que c'est quand même impressionnant...!Revoir l'IA, les scripts et jeux de factions de tant de monde, afin de créer une surcouche permettant de simuler les mécanismes IA des jeux plus récents, mais avec une véritable implémentation... (Ces mécanismes sont sous-utilisés sur Oblivion et FO3...je ne connais pas suffisamment Skyrim pour statuer, mais je doute que ça vole très très haut...)Je suis impressionnée face à la somme de travail...
 
En fait l'IA est terriblement sous-utilisée, sur tous les jeux Bethesda, du moins de Morro à FO3.
Et quand on regarde de près on se rend compte que c'est la même qu'ils nous resservent d'Opus en Opus, avec juste quelques améliorations ajoutées.
Certaines améliorations sont déterminantes (à partir d'Obli : capacité à franchir les loaddoors et possibilité de simuler en "low-level", là je ne peux pas lutter...) Mais au fond c'est la même chose : le scheduling des PNJs d'Obli par exemple, ben c'est l'AITravel de Morro débarrassé de son principal bug et amélioré comme cité au dessus...


Mieux encore : J'ai été très amusé en découvrant dans Skyrim la quête de la griffe d'or. Car la scénette de la fille du marché de Rivebois qui nous escorte jusqu'à la sortie du village, ben je m'étais payé le luxe de faire la même chose (en mieux et à plus longue distance, avec un PNJ qui propose de guider le PJ sur un itinéraire passablement plus tordu...)
En fait, c'est de l'AIEscort couplé avec un pathgrid (ou navmesh je présume pour Skyrim) étudié pour. Rien de nouveau sous le soleil :lol: De même que la réactivité face aux hostiles est une généralisation de l'IA "classe guard" de Morro. C'est juste mieux emballé (on est loin du buzz fait autour de l'AIRadiant et la montagne a accouchée d'une souris...)


Citation

Vous avez fait ça comment...?J'avais fait un travail similaire avec Reaction pour Oblivion, mais les jeux de factions permettaient de simplifier monstrueusement le script... qui a quand même atteint la limite de caractères... :peur:
 
Pas de gros script p) Là c'est vraiment tout bête :
Je fais adhérer d'office le PJ à une faction rien qu'à lui (appelons la "faction du PJ") dont j'ai édité les liens d'affinité avec les autres factions (gros malus pour la Camona, méfiance pour les factions dunmers, petite confiance pour les factions cyrodiléenne puisque le PJ est un immigré "comme nous"; à la base...etc.)
La faction du PJ est "hidden" donc ça ne se voit pas dans la feuille de perso. C'est la méthode utilisée par Bethesda avec la faction "Nérévarine" qui provoque la chute de disposition auprès des traditionalistes durant la MQ.

Après ça, j'ai repassé une couche de vernis en retouchant au coup par coup la disposition initiale de beaucoup de PNJs, en commençant par les "hors-faction" (Bethesda ayant presque systématiquement laissé ce chiffre à 50).

Derrière ça il y a pas mal de tests in-game car j'ai parfois (volontairement) un peu la main lourde sur l'AIFight. Donc il ne faudrait pas que le PJ se fasse agresser trop facilement et sans explication, même si des fois c'est souhaitable (un non dunmer membre de la Guilde des Voleurs et se baladant au Club du Conseil s'appelle une cible :D). En fait, mon principal soucis est la facilité avec laquelle on fait varier la disposition d'un PNJ dans Morro (corruption, musc Telvanni...etc.). Mais, au moins pour le menu de persuasion, il ne faut pas se rater et même y regarder à deux fois car les PNJs à haute AIFight prennent facilement la mouche (là, ce n'est pas de moi, c'est un mécanisme vanilla)

L'autre faille est qu'il est très facile de déclencher une baston générale, beaucoup plus difficile de l'arrêter... En fait le seul moyen c'est la fuite. Et un joueur pas trop briefé, qui ne s'attend pas à voir une mobilisation générale contre son précieux PJ, et des PNJs nettement plus à cran et à la rancune tenace, peut se ruiner la partie juste parce qu'il a vexé quelqu'un...
D'où mes recherches pour implémenter une procédure de reddition viable, un scripting plus fin et des répliques appropriées pour les gardes...etc.

Il y a aussi quelques effets de bord. Du genre de ce qu'on voit dans Obli lorsque les gardes se mettent à se battre entre eux... Quelle surprise ! (la même IA te dis-je, avec les mêmes bugs :jester:)

Shadow she-wolf
31 janv. 2012 - 19:37
Ah oui...
C'est vrai que je m'étais enquiquinée à ne surtout pas vouloir modifier les factions de base, et donc faire varier les dispositions inter-factions via script, et je ne voulais pas plus toucher aux PNJ, donc ajouter des factions aux PNJ via script là encore...
D'où le gros script monstrueux...^^

Mais je me posais la question du au fait qu'un PNJ de Morrowind ne peut avoir qu'une unique faction, empêchant une certaine finesse ; un membre du temple de Balmora sera probablement plus ouvert d'esprit que celui d''Ald'Ruhn... Alors qu'avec du multifaction c'est plus simple : fermeture d'esprit pour le temple en général, mais ouverture d'esprit (ou neutralité) pour les habitants de Balmora alors que pour les habitants d'Ald'Ruhn on repasse une couche de (légère) fermeture d'esprit...

Mais c'est vrai que pouvoir modifier directement les factions et PNJ, ça change la donne au niveau lourdeur de script...
Il y a diverses raisons qui font que je n'ai pas eu scrupule à modifier directement les PNJs.

D'abord on savait d'avance qu'on allait modifier la quasi totalité de la population donc que l'on serait massivement incompatible (et les scripts n'y auraient rien changé, la plupart des mods concernés attaquant directement les PNJs... Vieux modding à la Morrowind :rolleyes:)
Par ailleurs on avait à inclure des modifications de carac. et compétences. Or là, l'amnésie des 3 jours rend caduque les modifications par script.
De plus j'ai aussi des modifs au niveau des packages IA. Et là, impossible d'attribuer plusieurs packages hierarchisés à un PNJ, le langage de script ne le permet pas ! Le TESCS si (c'est bogué mais on peut en tirer quelque chose en sachant y faire...)

Je n'en ai pas parlé mais à terme on ajoutera une autre couche sous la forme d'une mise à jour des têtes (version optionnelle du mod probablement car il y en a, dont moi, qui ne sont pas fans du concept). En fait c'est en premier lieu pour balayer l'argument que "ce n'est pas compatible avec les changeurs de tête "à fichier esp"" comme Riptide...
Coucou...

Bravo pour ton initiative, c'est vraiment louable d'insuffler un peu de vie aux personnages du jeu...
Pour ma part, je me suis attaquée depuis longtemps à la création de compagnons aux réaction un peu plus vivantes que "Que voulez-vous? "Reste là"(réponse 1) "Combats à mes cotés" (réponse 2)...

Je dois avouer que, pour le moment, cela n'a pas été vraiment concluant, surtout parce qu' un personnage affublé d'un trop grand nombre de scripts se met à réagir de plus en plus lentement et que tous ces scripts finissent immanquablement par provoquer un bug ou un autre...
Mais je me suis lancée depuis peu sur une autre piste consistant à ne laisser au personnage qu'un script minimum, gérant ses déplacements, l'utilisation de ses potions le choix d'armes de mêlée ou à distance, et de confier tout le reste à un comptable, caché bien au chaud, et qui accumule ou retire des jetons à chaque fois que l'on interagit avec le compagnon ou qu'il lui arrive quelque chose...
Ainsi, et ce dès que j'aurai réussi à réécrire tous les dialogues nécessaires, je devrais avoir quelqu'un qui change d'humeur selon le climat, la région, les efforts qu'on lui a demandé, les relations que l'on entretient, etc...
En fait, c'est un essai pour donner à un personnage des besoins, une mémoire et une expérience vécue...

Derniers billets

Derniers commentaires