Problème sur module persistant

Répondre
Partager Rechercher

Bonjour,

le module sur lequel nous travaillons rencontre actuellement un problème que nous savons pas résoudre.

Le problème :
Lorsque nous effectuons des modifications de type 'ajouts' (création d'une créature dans la palette, création d'un item, création d'une map, création d'un script). Le module se sauvegarde (et compile bien si c'est un script) correctement. Ensuite lorsque nous lançons le module, il se charge normalement, puis les joueurs peuvent se connecter sans problème. Au bout d'environ 15-20 min les problèmes surviennent, nous en avons pour le moment identifié 2 (d'autres existe peut être) :
- toutes les transitions entre zones ne fonctionne plus
- certains pnjs ne parlent plus

Il y a aucun message dans le log.

Nous rencontrons ce pb sur différentes machines ce qui nous laisse à penser que le pb ne serait pas d'origine matériel ni un pb de connection.

Notre module compte un peu plus de 600 map et fait 99Mo avec 16400 fichiers. Il y a un Hakpak de 18500 fichiers divisé en 2.

Je voudrais savoir si quelqu'un à déjà rencontré ce type de problème ?
Parmi vous, y en a qui on un module avec des caractéristiques similaires (taille, nb de fichier,etc...) ?
Avez vous des suggestions pour résoudre ce pb ? ou le contourner peut être ?

Merci par avance à toute l'aide que vous pourrez nous apporter.

A+
Euh, ça fait un gros module ça non ?

A mon avis, c'est la principale source du problème. Quand le client est débordé (trop de créatures, d'objet à gérer), il arrive qu'il omette quelques actions d'importance moindre, comme par exemple gérer l'avancement du temps.
Je suppose que les transitions et les dialogues sont d'autres symptômes de ce problème, mais bon c'est pas sûr (d'autant que le problème se produit sur d'autres machines).

L'autre hypothèse, c'est qu'un des éléments du module soit corrompu, et qu'il fasse foirer le reste. J'espère pour vous que ce n'est pas le cas
La corruption d'un fichier est normalement indiqué , puis on arrive pas a lancer le module (ça m'est arrivé et j'ai dut tous recommencer depuis le début )

Ensuite je pencherai pour la "taille"du module , trop gros a mon avis pour une seule machine , essayer de ne pas changer de zone , ne rien faire et attendre pendant quelque temps , pour voir si cela le fait toujours .......
Comme le dit Taern , l'ouverture de fichier , des zones exécution de script etc etc , doit être trop lourd pour la machine , si c'est le cas , il ne vous reste plus qu'a divisez votre module en deux ....
Le module tourne avec la bdd de bioware.
Peut on gérer avec une seule bdd, 2 modules dans le cas ou nous diviserions notre module ?
Dans l'affirmative, connaissez vous la procédure pour gérer tout ca ?

Merci.
J'avais un problème similaire sur un module de ma création. En fait j'avais modifié la date de départ à 0 ou 1 an et tous mes déclencheurs ne marchaient plus, j'ai mis du temps avant de comprendre, j'ai remis une date fantaisiste et tout est rentré dans l'ordre.
Nous avons apporté aucun changement à notre date de départ entre la version du module qui fonctionne et celle qui fonctionne pas.

D'autres idées ?

Si quelqu'un peut m'éclairer sur la facon de gérer la division éventuelle du module, je suis preneur.

Merci.

[EDIT] je sais pas si ca une importance quelconque mais comme le pb a été soulevé je vous précise que notre module compte 14 factions (dont 7 de base). Y a t il une limitation en terme du nombre de faction?
Je pense pas que le pb vienne de là car nous n'en avons pas ajouté dernièrement, mais bon sait on jamais.
Le truc classique :

Faire le point sur ce qui a été changé entre le moment où ça fonctionnait et le moment où ça a commencé à déconner puis retirer progressivement tout ce qui a été modifié pour isoler le problème.
A part ça, il reste la boule de cristal de Madame Irma, mais la mienne est cassée.
Vous avait essayer pour voir si en restant juste connecter et en ne changeant pas de zone ou autres (bref juste se connecter sur le serveur sans rien faire) , cela changer quelque choses ou pas ?
Je comprends pas bien ce que tu veux dire Bjorn.

Notre module actuel tourne correctement, sans aucun pb. Mais des qu'on veut ajouter une quete (map + pnj + création de créatures + scripts, etc...) il se met à plabter au bout de 15-20 min.

Notre module actuel doit être juste à la limite maxi autorisé par NWN. C'est du moins ce dont nous posons au vu des différents tests et commentaire que nous avons pu recueillir à droite ou à gauche.

Et sur la procédure pour diviser un module en 2, aurais tu des infos ?

Merci.

a+
Bonjour,


A priori, je penche aussi pour la taille du module, ou pour un problème invisible de corruption (nb : ca m'etonnerait beaucoup, mais si j'ai bien compris, ca a commencé a foirer d'une version à l'autre.)

Afin de pouvoir mieux savoir ce qui s'est passé, peux tu nous dire ce qui a changé entre la version Ok et la version KO ? Les ajouts que tu as fait, les scripts que tu as rajouté, bref, un peu tout ce que tu as fais entre une version qui marche et une autre qui ne marche pas.

Y'a t'il, sinon, des script d'AI spécifique, remplacant ceux de bioware, que tu utilise ?

Enfin, est-ce systématique, en prod, ou bien "aléatoire" ? Y'a til beaucoup de joueurs sur ton module ?Faut il qu'il y ai beaucoup de joueurs pour que cela se produise ? Utilise tu un serveur dédié, ou bien partage tu la connexion avec d'autres applications (msn / emule/autre...) ?
Hello,

les ajouts sur lesquels on a pu constater ce pb sont relativement mineur et sans grande complexité : quelques maps, 1 ou 2 pnjs, quelques créatures et scripts associés aux pnjs pour gérer une petite quete du style 'aller chercher un objet pour en obtenir un autre'.

les scripts d'AI, ce sont ceux sur les pnjs et créatures ?
On a quelques uns de particuliers. Mais aucun a été implémenté dernièrement.(à ma connaissance).

On remarque ce pb désormais quelque soit l'ajout que nous effectuons. Si nous faisons de la place (suppression de script, de maps ou autre) c'est autant d'ajout qu'on peut faire ( à priori car on a pas testé du un pour un).

Le pb semble se produire quelque soit le nombre de joueurs. C'est plus au bout d'un certains temps (+ ou - 15/20 min) que ca plante.

Il y a rien d'autre qui tourne sur ce serveur.
Désoler je me suis mal expliquer ...


Alors en faites ce que je demander étais pour vérifier indirectement la taille , car ton modules a l'air énorme , donc peu être a la limite de ceux que peu supportez le serveur ou le moteur lui même ....
Car donc au vue de la taille du module en lui même , une fois que le serveur est lancer , les script , chargement de zone etc etc au bout d'un moment cela plante
donc pour moi si tu lance donc une session multijoueur , donc afin de ne pas lancer de chargement ou déchargement de zone , lancer des script etc etc , tu pourrait tester sans bouger de zone et voir donc si cela plante toujours au bout de 15-20 minute ou si cela ne plante pas , tu peu être sure que cela vient de la taille ...
Hello,

Quelqu'un pourrait il me dire comment comment on procède pour partager un module en 2 avec une seule bdd bioware, etc... bref toutes les infos utiles pour gérer correctement un monde persistant reposant sur 2 modules ?

Merci.

a+
C'est tout simple :


Quand tu veux enregistrer une info en BDD bioware, tu fais un SetCampaignInt, par exemple, avec en paramètre, le nom de la BDD, le nom de la variable, et la valeur.

Si tu fais
Code PHP:

void SetCampaignInt(
    
"MA_BDD",
    
"sMaVariable",
    
MA_VALEUR,
    
oObjetPorteur
); 
dans ton module 1, pour la récupérer, tu devra faire

Code PHP:

int GetCampaignInt(
    
"MA_BDD",
    
"sMaVariable",
    
oObjetPorteur
); 
sur tes modules, pour la récuperer... Quels que soient tes modules.

L'idée, c'est d'utiliser une BDD unique pour tous les modules. Après, tu l'appelle pareil dans un mod1 ou dans un mod2, il devrait se passer la même chose...

[Edit : Bizarre, ce code PHP oO]
[Edit2: Ah bein, non, en fait, après édition, il s'est auto régulé oO]
Ok, merci eMRaistlin, donc pour la sauvegarde des données ca fonctionne a priori de la même manière qu'on ait un ou n modules.

Ensuite,

1°) peut on héberger ces 2 modules sur un même serveur ? Comment procéder ?
2°) comment passe t on du module 1 au module 2 ? Par la fonction ActivePortal ?
3°) avec 2 modules, comment est alors géré le nombre de joueur par module ? Si le module 2 est full de joueurs et que le module 1 ne l'est pas, comment ce se passe si un joueur veut aller du module 1 vers le 2 ?
4°) Existe il un moyen qui permettrait aux joueurs(et dm) de communiquer d'un module à l'autre ?
5°) si vous voyez d'autres questions/réponse à évoquer, je suis preneur.

Merci.
Merci pour ces réponses Garrath, elles furent très utiles.

Nous arrivons donc à faire tourner 2 modules sur le même serveur et la transition de l'un à l'autre se fait par la fonction ActivatePortal. Tout celà fonctionne bien.
Néanmoins j'ai encore des questions :

1°) une fois que le pj a quitté le 1er module pour se rendre sur le 2nd, il y a une popup qui apparait (je précise que dans le ActivatePortal nous avons renseigné à TRUE afin que la transition soit quasiment invisible pour le joueur). Cette popup permet éventuellemen d'Annuler la connexion au second module. Nous voudrions supprimer cette popup. La seul fonction qui permet semble t il de supprimer une popup c'est celle du respawn.
Comment faire ?

2°) il nous arrive parfois de nous connecter en local afin de jouer ou (en dm). Dans ce cas l'adresse IP est différente en ce qui concerne les module selon si on vient d'une connexion à distant ou si on vient en local. Aussi nous voulions ajouter une condition par rapport à nos CdKey (ce cas concerne juste les dm) mais pour ce faire nous avons besoin d'identifier si nous somme en connexion à distance ou en local. Il faudrait donc que nous puissions récupérer nos adresses IP. Existe-il une fonction pour récupérer une adresse IP ?

Merci.

A+
1) Non, tu ne peux pas l'enlever, surtout qu'au moment de cette popup, tu n'est déjà plus sur l'ancien mod, et pas encore sur le nouveau (resultat, si tu clique sur annuler, tu te retrouve sur gamespy)

2) Pas que je sache. Mais pourquoi ne pas faire en sorte que si la clef CD est une de celle des DM, tu ai une créature qui spawne, et qui recupère l'IP via une patterne d'écoute ? Comme ca, sio t'es DM, c'est dynamique ^^

PS : les IP de transfert en DNS sont acceptées, et c'est vachement plus simple comme ca
Citation :
Publié par Fantome
2°) il nous arrive parfois de nous connecter en local afin de jouer ou (en dm). Dans ce cas l'adresse IP est différente en ce qui concerne les module selon si on vient d'une connexion à distant ou si on vient en local. Aussi nous voulions ajouter une condition par rapport à nos CdKey (ce cas concerne juste les dm) mais pour ce faire nous avons besoin d'identifier si nous somme en connexion à distance ou en local. Il faudrait donc que nous puissions récupérer nos adresses IP. Existe-il une fonction pour récupérer une adresse IP ?
Ben je comprends pas exactement ce que tu veux mais sinon pour recuperer l'adresse IP d'un joueur y a :
Code PHP:

string GetPCIPAddress(object oPlayer); 

Je reviens à la charge avec ce topic sur l'utilisation de la fonction ActivatePortal.

Dans cette fonction, on peut mentionner un mot de passe, mais comment fait on pour gérer à la fois le mot de passe joueur et celui des dm ? (dans le cas ou sur le module il y a un mot de passe pour les joueurs et un pour les dm (différent l'un de l'autre biensure)).

Nous avons essayé de changé le mot de passe en fonction de qui (pj ou dm) utilise le portail, mais ca fonctionne pas.

Avez vous une idée pour solutionner ce problème ?

Merci.
Répondre

Connectés sur ce fil

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