Point de passage...

Répondre
Partager Rechercher
J'ai un soucis (depuis le début en faite) avec les points de passages... tantôt ça fonctionne très bien et les pnj ou spawn d'ennemis suivent le chemin que j'ai tracé pour eux, tantôt ils ne bougent pas... ou ils se mettent d'un coup à suivre les points, alors que le boot d'avant ils ne bougeaient pas... bref j'ai loupé quoi? J'utilise la fonction de base lié au pnj, c'est à dire clic droit sur le pnj / point de passage.
Je n'ai pas tout le temps ce soucis, mais quand ça arrive, je n'ai d'autre solutions que d'attendre que ça veuille bien fonctionner... ce qui finit par arriver dans un délai plus ou moins long...
Les joies de l'IA dans nwn2.

Le peu que je me souvienne concernant cette fonctionnalité, elle marchait bien tant que
1. les aires ne sont pas trop grandes (ie. points assez concentrés pour un PNJ)
2. le nombre de PNJ avec ce système n'est pas trop élevé (ie. quelques PNJs qui se baladent seulement).

Je suspecte de nos jours la mauvaise qualité du "pathfinder" dans l'IA, soit les routines chargées de trouver le meilleur chemin d'un point A vers un point B.

En l'occurence, il suffit qu'il y ait une créature qui bloque ce meilleur chemin pour que certaines fonctions ne marchent plus : le "Dynamic Objects Avoidance" est mauvais.

Dans ton cas, il se pourrait qu'un PNJ bloque le chemin d'un autre à tel moment et pas à tel autre.
ActionForceMoveToObject( object oMoveTo, int bRun = FALSE, float fRange = 1.0f, float fTimeout = 30.0f )
permet de s'assurer que le PNJ sera téléporté automatiquement à l'issue du délai passé en paramètre, si pour une raison x ou y l'IA n'a pas trouvé de chemin.

On peut commencer à avoir ce genre de problème dès que l'on dirige simultanément de l'ordre de 5 PNJs relativement groupés vers le même point.
Pour le coup il s'agit de groupes d'ennemis effectuant des patrouilles et qui effectivement, spawn en quantité variable, pouvant dépasser la quantité de 5.

En multipliant les points de spawns, ça pourrait peut être eviter ce "groupage"... je vais tester et sinon, je me pencherai sur la fonction cité par Claudius33.
Exact, j'utilise aussi ActionForceMoveToObject() qui est plus sûre, à tel point que pour les situations de fuite où je calcule la location du point géométriquement, je positionne des waypoints temporaires que je détruis automatiquement.
Je reviens à mon histoire de waypoint... en faite les points de passages fonctionnent très bien quand je teste en local, les spaws se déplacent de waypoint en waypoint, mais c'est une fois en ligne que là ça ne fonctionnent pu...

Une idée..?
Mon module est de taille importante (presque 3 gigas et je passe par le striptease-module pour pouvoir le charger en ligne), donc lorsque que je teste une ou plusieurs maps, je les exporte pour pouvoir les tester en local, c'est plus souple pour moi.
Ainsi, en local donc, les créatures suivent parfaitement les points de passages que je leur indique, mais une fois en ligne c'est ANARCHIQUE je dirai... j'ai récemment fait 2 maps ou il y a les mêmes spawns, et sur l'une d'elle, ça fonctionne plus ou moins, et sur la seconde, les créatures restent immobiles.
J'ai aussi testé une mise en ligne d'une map seule, et les spawns suivent bien les points de passages.
Je boot mon server en mode campagne, et je me demande si j'ai pas un script général qui gène... chose étrange, c'est que les points peuvent rester inactifs plusieurs boot, et puis d'un seul coup se mettre à fonctionner correctement sans que je n'ai changé aux waypoint ou au TAG des créatures.
N'y aurait-il pas possibilité de mettre un script genre dans le on_enter de la map pour forcer les créatures de suivre les points de passages?
Ce script est déjà présent dans le script de spawn par défaut, le 9, donc faut-il l'isoler et le mettre à part? (genre dans le script récurrent...?)

Truc bête, hein, mais est-ce que tu as activé les variables de debug écran et fichiers ? On en parlait récemment, c'est dans les .ini

Parce qu'une bonne solution pour ne pas rester dans la conjecture et se baser sur les faits réels serait que tu ajoutes des PrettyDebug() dans la fonction WalkWaypoints() qui contrôle le mouvement automatique afin de savoir si elle se déclenche bien et éventuellement à quel moment elle pète.

Ceci dit, est-ce que comme l'a indiqué Mythy tu as cherché où et quand cette fonction est appelée ? rechercher la référence dans tous les scripts du module pourrait t'aider.
Citation :
Publié par Laban
Truc bête, hein, mais est-ce que tu as activé les variables de debug écran et fichiers ? On en parlait récemment, c'est dans les .ini
Hum... non j'ai loupé ça... qu'est-ce? Une méthode permettant de voir quand et où un script ne fonctionne pas?

Et pour ce qu'a dit Mythyzyn, j'utilise les scripts de base du jeu, donc pour moi, la partie gérant les points de passages à suivre se trouve dans le nw_c2_default9, mis dans le spawn (pas vérifié si le script apparaissait ailleurs et j'ai pas l'éditeur sous les yeux là).

Après dans mes TAG de créatures, j'utilise le symbole suivant -> _
Comme les Waypoint commence par WP_ peut être que la syntaxe peut géner dans certains cas...
Pour les tags je ne pense pas

Pour les variables regarde ici http://nwn2.wikia.com/wiki/Starting_a_PW

Code:
; Logging Scripts Print To Log=1 Scripts Print To Screen=1
ça c'est coté serveur et côté joueur je crois qu'il faut que tu ajoute Debug Mode = 1 (ou DebugMode = 1 ) dans ton nwn2.ini

Trouve ensuite la référence de la fonction, vérifie que la librairie 'ginc_debug" est appelée
Code:
#include "ginc_debug"
Et truffe si besoin est avec des méthode de debug comme PrettyDebug les différentes étapes de la fonction : début pour valider qu'elle est appelée, différentes boucles, et fin.

Les messages de debug apparaîtront sur ton écran et se trouveront aussi dans le dossier C:\Documents and Settings\%USER%\Local Settings\Temp\NWN2\LOGS
Juste pour signaler qu'on a le même problème mais que sur une zone, pas sur toutes. C'est complètement aléatoire et change à chaque reboot. Un coup ça bouge, un coup pas du tout, un coup certains oui et d'autres non.
Alors pour ma part, j'avais tenter de forcer par script le déplacement via Waypoint mais bon en faite... sur un boot ça fonctionnait et sur un autre ça fonctionnait en partie... ou pas du tout. Par contre pas de soucis sur les zones ou les npc sont en "amis". Des fois c'est en cliquant sur le npc que le "walk" devient actif...

Par contre j'avais des zones où aucun problèmes à ce niveau se poser donc... j'ai laissé tomber en faite... désolé de pas pouvoir t-aider... je comprends pas l'origine du problème en faite... :-/
C'est peut-être une piste le fait que si tu cliques sur "parler" ça lance le déplacement. Pour le moment on est en alpha donc on a des bugs plus graves mais on pensera à regarder ça dès que possible.
__________________
http://image.noelshack.com/fichiers/2012/46/1353252187-foret-bleue.png
La seconde version est arrivée : http://fanelya.fr !
IP : fanelya.no-ip.org

Liste de tous les serveurs : http://nwnlist.com
Contenus personnalisés?

Dans le nouveau module sur lequel je travaille, je viens de m'apercevoir qu'un contenu rajouté (j'dois encore identifier lequel...) m'avait tout bonnement désactiver la transition des portes nouvellement rajoutées (celles déjà placées fonctionnaient toujours).
En vidant le dossier Override, je peux à nouveau mettre en place des portes à transitions fonctionnelles. Et si je remets l'Override utilisé, ça rebug à nouveau.
Donc je me demande si certains contenus rajoutés ne viendraient pas perturber les scripts de bases, comme celui gérant les points de passages, ou son déclenchement...
Non mais au final j'ai mal fait mes tests. En faite, c'est lorsque je conditionne l'ouverture d'une porte par une clef que la transition ne fonctionne plus... donc je sais pas pourquoi d'un coup ce phénomène se produit... :-/
Désolé de te répondre aussi tard Charlouloute, j'suis pas mal occupé avec mes dialogue partant dans tous les sens que je leur donne lol ^^
Bref... pour le moment j'ai mis de côté ce souci, peut être que j'y reviendrai plus tard, en attendant j'ai trouvé une solution de remplacement
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés