NWN2 Toolset : (SoZ) Carte du monde interactive

L'une des nouveautés les plus importantes est la carte du monde interactive (Overland Map), réunissant elle-même plusieurs sous-systèmes. Ce guide, destiné aux créateurs de modules, expliquera la manière d'intégrer un tel système à un module, ou une campagne.

La carte en elle-même.

Il s'agit d'une représentation à une échelle réduite, voire non-respectée, du terrain qu'un joueur pourra parcourir. Afin d'avoir une idée du fonctionnement de la carte interactive de SoZ, il sera possible d'ouvrir les modules de campagnes suivants :

  • [Répertoire d'installation du jeu]\Modules\F_X2.mod
  • [Répertoire d'installation du jeu]\Modules\G_X2.mod

Dans ces modules, les zones concernées sont respectivement "f00_overland" et "g00_overland". On notera que la carte interactive comporte un grand nombre fonctionnalités complexes, et permet de gérer différentes situations de jeu au sein de la campagne Storm of Zehir. Ces deux zones ne sont qu'un petit exemple des capacités réelles de ce système. Il ne faut pas hésiter à creuser plus profondément dans ces deux modules, et de poser un maximum de questions dans les forums communautaires.

Propriétés de la zone.

Dans les propriétés de chacune des zones citées précédemment, la case correspondant à "Overland Map" est cochée. Ceci indique que la zone est destinée à être une carte interactive, et active des fonctionnalités d'interface particulières. Il est également possible de vérifier au sein d'un script, si une zone est une carte interactive ou non. Il faut donc cocher cette option pour chaque zone destinée à ce système.

Scripts

Une carte interactive nécessitera certains scripts pour fonctionner correctement, et que l'on rattachera à des événements précis. Comme l'on peut voir sur les zones citées précédemment, ces scripts sont :

  • Evénement déclenché lorsqu'un un joueur entre : nx2_ol_client_enter
  • Evénement déclenché lorsqu'un objet sort : ka_olmap_exit
  • Evénement récurrent : nx2_ol_hb

Ces scripts permettront entre autre d'exécuter nos propres scripts, si l'on décide de personnaliser leur fonctionnement. Pour exécuter un script personnalisé, il suffira de mettre le nom de ce script en variable locale (de type "string"). Les noms de variable à employer sont :

  • Evénement déclenché lorsqu'un un joueur entre : sSpawnScript
  • Evénement récurrent : sHeartbeatScript

Variables locales

Certaines variables locales permettront de paramétrer une carte interactive. Celles-ci sont :

NomTypeDescription
nEncounterTableintDésigne une rangée dans le fichier om_encounter_table.2da et définit la table à utiliser pour une rencontre neutre. Il est possible d'utiliser "om_encounter_table" autant qu'une autre table issue de la campagne, ou encore une table personnalisée.
sSpecialEncounterTablestringDésigne le nom d'une table de rencontre spéciale. Ceci sera décrit plus en détail.
sHeartbeatScriptstringDésigne le nom d'un script personnalisé, destiné à l'événement récurrent de la zone.
sSpawnScriptstringDésigne le nom d'un script personnalisé, destiné à l'événement déclenché lorsqu'un joueur entre dans la zone.
nTotalGoodiesintDéfinit le nombre total d'objets optionnels que l'on souhaitera faire apparaître. Ceci sera décrit plus en détail.
nDetectDCintDéfinit le facteur de difficulté à atteindre pour détecter une rencontre. Lorsqu'une rencontre est détectée, la (ou les) créatures créée apparaîtra à une distance respectable du joueur. Si le test de détection échoue, le joueur ne verra cette créature qu'à une courte distance./td>

Déclencheurs de terrain

En examinant de plus près les cartes interactives dans l'éditeur, on remarquera que de vastes déclencheurs recouvrent la majeure partie de la surface accessible de la zone. Il s'agit de déclencheurs de terrain, qui définissent les différents types de terrain dans la carte. Dans la surface qu'ils recouvrent, ces déclencheurs permettent de désigner :

  • Le type de terrain : Détermine le type de terrain (marécage, jungle, etc.), la vitesse à laquelle le joueur pourra se déplacer, quelle musique sera jouée, et encore la zone de rencontre où un groupe sera transféré en cas de rencontre.
  • La table de rencontre aléatoire : Chaque déclencheur de terrain sélectionne une rencontre, issue des tables de rencontres définies dans le fichier "om_encounter_table.2da". Il est possible de partager des tables de rencontre entre différents types de terrains, différents déclencheurs de terrain, ou encore créer des tables séparées pour chacun d'entre eux.
  • Risque de rencontre aléatoire : A chaque fois que l'événement récurrent se déclenche (toutes les 6 secondes), il y a un risque qu'une rencontre se produise lorsqu'un joueur se trouve dans un déclencheur. Plus grand est le risque de rencontre, plus dangereuse sera le déclencheur (logiquement).

Quand on crée une carte interactive, il vaut mieux couvrir la plus grande surface possible avec des déclencheurs de terrain, et faire en sorte qu'ils respectent au mieux l'aspect du terrain. Les joueur auront une impression correcte du terrain qu'ils parcourent, lorsqu'ils voyageront à travers la carte. S'il y a trop d'espace entre les déclencheurs, la carte pourra sembler vide et peu intéressante.

Tag

Les déclencheurs de terrains doivent porter le tag "nx2_tr_terrain". C'est ce qui leur permet de se différencier des autres types de déclencheurs.

Scripts

Les scripts suivants doivent êtres associés aux déclencheurs de terrain :

  • Evénement déclenché lorsqu'un objet entre : nx2_tr_terrain_en
  • Evénement déclenché lorsqu'un objet sort : nx2_tr_terrain_ex
  • Evénement récurrent : nx2_tr_terrain_hb

Variables locales

Celles-ci contrôlent les paramètres du déclencheur de terrain sur lequel elles sont placées :

NomTypeDescription
nTerrainintDésigne une ligne dans le fichier "om_terrain_rate.2DA", au même titre qu'une constante déclarée dans la bibliothèque "ginc_overland.nss". Les types de terrains définis par défaut par SoZ sont :
  1. Jungle
  2. Désert
  3. Plage
  4. Route
  5. Plaines
  6. Marécages
  7. Collines
  8. Forêt
  9. Montagne
nEncounterChanceintDéfinit le pourcentage de chances (de 0 à 100) qu'une rencontre aléatoire sera générée toutes les 6 secondes, lorsqu'un joueur parcourt la surface du déclencheur. En général, les valeurs sont :
  • 10 à 20 : Faible risque
  • 20 à 30 : risque modéré
  • 30 ou plus : Risqué
nEncounterTableintDésigne une ligne dans le fichier "om_encounter_table.2DA", correspondant à une table de rencontre. Cette table détermine quelle type de créature sera générée par le déclencheur de terrain. On notera que le déclencheur générant la rencontre peut être différent que celui dans lequel le joueur se trouve. En admettant qu'un joueur s'approche d'une forêt, qu'il se trouve encore dans une plaine, et que la rencontre de la plaine est générée dans la forêt (oui oui), celle-ci sera déterminée à partir de la table de la forêt et non de la plaine (relisez plusieurs fois s'il faut).

om_terrain_rate.2DA

Ce fichier, contenu dans la campagne de SoZ (que l'on peut trouver dans le dossier [Répertoire d'installation du jeu]\Campaigns\Neverwinter Nights 2 Campaign_X2\) définit diverses valeurs associées aux différents types de terrain. Il comporte trois colonnes :

  • Terrain_Type : Définit le nom du type de terrain, afin d'être plus facilement répertorié. Le nom du terrain ne devra pas comporter d'espaces, étant donné que les séparations entre les différentes rubriques d'un tableau 2DA sont définit par des espaces et des tabulations.
  • Movement_Rate : Détermine le facteur de déplacement appliqué à un joueur lorsqu'il entre dans le type de terrain associé. Pour SoZ, la valeur .5 est la plus rapide (utilisée pour les routes), et la valeur .2 la plus lente (utilisée pour la jungle ou les marécages). Cette valeur de déplacement est ensuite modifiée selon la compétence "Survie" du joueur, et selon sa vitesse de déplacement de base, afin de déterminer la vitesse finale à laquelle il pourra parcourir la carte. Il faut être vigilant lorsque l'on modifie cette valeur. Certaines animations peuvent paraître particulièrement étranges si la vitesse est trop basse, ou trop rapide.
  • Music_Track : Désigne une ligne du fichier "ambientmusic.2DA", correspondant à la musique d'ambiance jouée lorsque le joueur entre dans le déclencheur de terrain.

Localisations statiques

Les localisations statiques sont des lieux, tels que les villes, villages, temples, toujours visibles pour le joueur pendant qu'il parcourt la carte. Il ne s'agit pas de lieux apparaissant grâce à la compétence "Fouille" - ceux-ci seront détaillés plus bas. Etant données les multiples manières de créer ces lieux, la méthode utilisée pour la campagne de SoZ sera expliquée ici - ce qui vous permettra peut-être de gagner beaucoup de temps.

Les localisations statiques sont composées de plusieurs objets, à la fois sur la carte interactive et à la zone dont la destination correspond :

  • Un plaçable devra représenter le lieu sur la carte interactive.
  • Un point de passage devra définir l'endroit où le joueur réapparaîtra sur la carte interactive, lorsqu'il quittera la zone correspondante.
  • Un point de passage dans la carte interactive devra afficher une "note sur la minicarte".
  • Une conversation devra s'engager lorsque le joueur utilisera le plaçable représentant le lieu sur la carte interactive.
  • Un point de passage, ayant un Tag normalisé, devra être placé dans la zone de destination.

Plaçable de la carte interactive

La première chose requise pour une localisation statique est un plaçable permettant de la représenter "physiquement". Il est possible d'utiliser des plaçables prédéfinis (ils ont leur propre catégorie dans la liste des plaçables de l'éditeur), ou d'en créer de toutes pièces.

Un plaçable destiné à la carte interactive devra comporter certains paramètres :

  • Tag et ResRef : En utilisant la même méthode que pour SoZ, le Tag et le ResRef du plaçable devront être dans le format suivant : XXXX_plc_to_YYYY. De ce fait, lorsque le script "ka_olmap_visit" est lancé à partir de la conversation du plaçable, il enverra automatiquement le joueur au point de passage dont le tag sera : YYYY_wp_from_XXXX. XXXX et YYYY pourront être définis librement, mais ne devront pas comporter le caractère "_", celui-ci désignant déjà une séparation.
  • Conversation : Elle devra être déjà sélectionnée dans les paramètres du plaçable. Celle-ci s'engagera lorsque le joueur cliquera dessus, et aura la charge d'envoyer ce joueur dans la zone appropriée (ou de supporter d'autres fonctions selon le besoin).
  • Inventaire : Ce paramètre devra généralement être désactivé. Sans cela il pourrait y avoir des sons de coffre assez déplaisants, lorsque le joueur utilise le plaçable.
  • Intrigue : Pouvant être exposés à divers dégâts, il est recommandé d'activer ce paramètre.
  • Statique : Ce paramètre devra être déactivé, au risque de ne pas pouvoir interagir avec le plaçable.
  • Utilisable : Bien entendu, cette option devra être activée, afin qu'une interaction soit possible.

Le plaçable devra supporter les scripts suivants :

  • Evénement récurrent : kp_mapnote_hb
  • Déclenché lors de l'utilisation : gp_talk_object

Note sur la minicarte

Il faudra placer un point de passage destiné situé le plus au centre du plaçable représentant le lieu, afin d'afficher une note sur la minicarte. Ce point de passage devra porter le Tag "ol_mapnote", et devra avoir les paramètres suivants :

  • "A une indication carte" coché
  • "Indication carte activée" décoché
  • Le champ "Indication" devra comporter le nom du plaçable sur la carte interactive.

Point de passage de sortie

Ce point de passage déterminera l'endroit où le joueur sera envoyé lorsqu'il quittera la zone associée. A moins d'un cas particulier, ce point de passage devra porter un Tag défini selon le modèle suivant :

XXXX_wp_from_YYYY

Ce, de la même manière que pour le plaçable lui-même. La porte située dans la zone correspondante peut aussi bien utiliser le script "the ka_olmap_visit" qu'un script banal, pour pouvoir envoyer le joueur à ce point de passage.

Point de passage de destination

Ce point de passage devra être placé dans la zone de destination. Ce point devra être situé à l'endroit où le joueur devra apparaître, et porter un Tag défini selon le modèle suivant :

YYYY_wp_from_XXXX

Comme décrit dans la partie "Plaçable de la carte interactive".

Conversation

Cette conversation aura pour fonction de décrire le lieu au joueur, et lui permettre de s'y rendre (bien entendu, il est possible de définir diverses conditions pour pouvoir y entrer, comme des tests de compétence, états de quête, etc.). Dans le noeud approprié, il faudra utiliser le script d'action "ka_olmap_visit" - et, en estimant que tout a été paramétré correctement, le joueur devrait être correctement envoyé dans la zone correspondante. Les modules F_X2 or G_X2 comporteront divers exemples de conversations.

Localisations masquées

Ces lieux ressemblent beaucoup aux localisations statiques, mis à part le fait qu'elles sont... masquées. Le joueur devra s'approcher à une certaine distance, et réussir un test de compétence "Fouille", pour pouvoir les dévoiler.

Afin de créer un lieu masqué, il faudra suivre les mêmes étapes que pour une localisation statique, mais sans placer le plaçable sur la carte.

A la place, il faudra placer un "marqueur" à l'endroit où le plaçable devra être découvert. Ce "marqueur" est un plaçable qui devra avoir l'apparence du "Ipoint" (donc invisible en jeu). Les paramètres devront être définis de la manière suivante :

  • Apparence : Il faudra s'assurer que l'apparence "Ipoint" est bien désignée, afin de ne pas être visible en jeu.
  • Nom ressource/Tag : Ils devront tous les deux porter le nom XXXX_ip_to_YYYY, où XXXX et YYYY correspondront aux mêmes XXXX et YYYY que le plaçable approprié. Il est important que le Tag du marqueur et du plaçable soit correctement écrits, pour pouvoir faire apparaître le plaçable.

Scripts

Le marqueur ne devra supporter qu'un seul script, placé dans l'évènement récurrent : "gb_hidden_loc_hb".

Variables locales

Les variables locales suivantes devront être inscrites sur le marqueur :

NomTypeDescription
iSpotDCintCe nombre entier détermine le seuil de difficulté du test de compétence "Fouille" requis pour découvrir le lieu. Toutefois, le joueur découvrira automtiquement le lieu s'il se déplace directement dessus. Il est possible de le révéler uniquement par script (pour éviter cette détection automatique) en utilisant la valeur 100.
fDistfloatCette valeur détermine la distance maximum à laquelle un joueur devra se trouver pour pouvoir détecter le lieu. Comme décrit ci-dessus, si le joueur se tient exactement au même endroit que le marqueur (et que iSpotDC n'est pas égal à 100), le joueur détectera le lieu quelque soit sa compétence "Fouille".

Réactions (2)

Afficher sur le forum

Que pensez-vous de Neverwinter Nights 2 ?

127 aiment, 20 pas.
Note moyenne : (155 évaluations | 5 critiques)
8,4 / 10 - Très bien

315 joliens y jouent, 840 y ont joué.