Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

meilleur systeme de respawn ?

Par Blam le 9/1/2003 à 16:16:25 (#2981730)

Selon vous quel est le meilleur system de respawn des monstres pour un module permanant ?

Faire respawner individuellement tous les monstres a leur mort ?

Faire respawner par zones des que celles ci sont vides de PJ ?

Faire respawner par zones des que mes monstres sont morts, sans se préocuper des PJ ?

Autre ?

Quelle expérience avez vous de tout cela et quel est votre avis

Par Cassin le 9/1/2003 à 16:36:03 (#2981874)

Perso je choisirais la deuxième, "Faire respawner par zones des que celles ci sont vides de PJ".

Parce que s'il y a bien un truc que je n'aime pas, c'est nettoyer une zone, m'attarder un peu à l'explorer , et me retaper les mêmes monstres au retour qu'à l'aller...

Par Iridian le 9/1/2003 à 16:36:47 (#2981884)

Ba deja pour commencer, pourquoi ne pas profiter des possibilité de NwN pour faire spawner les monstres hors de vue de PJ, et les faire venir au combat a pied *aime pas les materialisations*

Ensuite, j'ai souvent lu sur ce forum qu'il etait profitable pour un serveur de ne spawner les monstres que lorsqu'un joueur est dans la zone (question de charge micropro).

Enfin pour le spawn en lui meme, le plus fun serai un spawn aleatoire dans le nombre, et aleatoire+dispersé dans l'espace.

Enfin bref, que du bonheur en perspective pour le scripteur :)

Par Archamedes_Fr le 9/1/2003 à 16:39:59 (#2981904)

Je dirais que cela dépends du matériel dont tu disposes, de ce que tu désires obtenir comme module...

- Pour du semi-réalisme, je dirais un respawn avec délai en fonction de la créature sans se préoccuper des personnages. Mais ça consommera des ressources.

- En terme de ressource, le script de eMRaistlin est à mon avis excellent ( avis certainement subjectif puisque je l'ai intégré :-D ). Les zones non visitées sont vides de créatures, elles consomment peu de ressources CPU.

Personnellement, j'ai fait un mixe des deux. J'ai repris le système d'eMRaistlin, ajouté un délai sur le temps de respawn des créatures et modifié les factions pour qu'ils se battent même entre ( un loup qui attaque un cerf ça fait toujours sympa ).
Bon, le délai sur l'apparition des créatures et peut-être pas ce qu'il y a de mieux en terme de ressources, mais pour l'instant mon serveur étant un PIV 2.4 avec 1.5 Go de RAM, je pense pouvoir faire tenir tout ça ensemble. Bien que je n'ai pas tester avec plus de 4 joueurs simultanéments pour l'instant.

Par coolstar le 9/1/2003 à 16:45:09 (#2981947)

Perso, je me range du côté de Archamedes, selon le principe du repeuplement naturel... :hardos:

Par Archamedes_Fr le 9/1/2003 à 16:46:17 (#2981953)

Provient du message de Iridian
Enfin pour le spawn en lui meme, le plus fun serai un spawn aleatoire dans le nombre, et aleatoire+dispersé dans l'espace.

Enfin bref, que du bonheur en perspective pour le scripteur :)


Iridian en rêvait.... eMRaistlin l'a fait...

Je me suis permis d'y ajouter un délai de respawn en fonction de la créature et un nombre de créatures, parfois fixe parfois aléatoire, en fonction de la zone.

Mmmmmmmmm

Par Blam le 9/1/2003 à 17:17:40 (#2982211)

C'est a peu de chose pres ce que j'utilise, mais une chose m'aggace prodigieusement, c'est en entrant dans une zone, voir degringoler du ciel un squelette, un ours ou un champimonstre, ca casse un peu le coté "que vais je trouver derrière la porte".

Le système d'eMraitlin est tres adéquat, pour le proc, meme si ce n'est pas ma préocupation première, mais coté "réalisme" cela m'embete un peu.
J'osait esperer un système bien meilleur, mais il semblerait que pour la cohérence, le systeme et l'application, il n'y ait rien dautre.

Ceux qui ont des idées autres, développez SVP

Merci.

NB: bien embété le Blam la !!! :)
Bravo a eMraitlin pour son travail magnifique.

Par eMRaistlin le 9/1/2003 à 17:22:14 (#2982245)

NB: bien embété le Blam la !!!
Bravo a eMraitlin pour son travail magnifique


Ahah... mais faut pas... je l'ai toujours dis : il est vain de vouloir recuperer exactement un systeme de qqu'un d'autre... Mon post est plus la pour exemple que pour pompage direct...

Pour ton systeme, on peut facilement s'arrabger pour placer les WP a des endroits strategiques, et qui plus est... si tu le veux, on peut essayer de rajouter un condition de "Ne Spawn qu'en dehors du champs de vision"...

MAIS! Mais ! mais il se moque !

Par Blam le 9/1/2003 à 18:35:36 (#2982888)

:)

J'ai dit a peu pres ! tss tss tss
je viens de mettre ton systeme sur un nouveau module d'essai et la que vois je ? mmmmh ? RIEN ! ca ne marche pas
J'ai du m...... quelque part, il y a un truc que j'ai pas compris
tu as l'air de dire que le ref et le tag sont pareil alors que moi il sont systematiquements differents et il m'est impossible de changer le ref.

la par pure curiositée j'ai perdu du temps (enfin ca forme un peu !)

Par Archamedes_Fr le 9/1/2003 à 19:04:06 (#2983114)

Exemple, j'ai une zone

Nom: Collines de Hapdent
TAG: HAPDENT_0002
resref: hapdent_0002

Si tes zones n'ont pas leur TAG et resref identiques, tu peux copier la zone. Lors de la création d'une zone, tu lui donnes comme nom le TAG ( donc tout en majuscule ) comme ça il prends tout de suite le bon resref. Ensuite tu renommes la zone comme tu veux.

Par eMRaistlin le 9/1/2003 à 20:34:26 (#2983842)

Pour les tags/resref des creature, plus la peine de t'emvbeter, j'ai corriger le script... (par contre, faut que je modifie la page ci-presente...)

Sinon, essaye de bien verifier les tags des WP :

-si tu obtiens des badger : c'est que la liste des monstres est mauvaise.

-si tu obtiens le monstre du default, c'est que tu ne decode pas bien le tag de l'area, donc il est mal note : reverifie.

-si les monstres n'apparaissent pas, il est probable que cela vienne des WP

voila ^^

Pas la peine

Par Blam le 9/1/2003 à 20:43:43 (#2983916)

de s'embeter avec ca, je voulais tester le tiens pour voir si il convenait mieux que le mien.
1 on est parti du meme principe
2 c'est pas tout a fait la meme chose
3 pas été foutu de mettre en place le tiens sur un petot module de test pour voir les differences.
4je bidouille beaucoup pour combler le retard de mon monde online et je regarderais plus tard comment c fait chez toi :)
5 je cherche toujours une idée brillante pour alleger le monde et qu'il apparaisse plausible.

merci a ceux qui ont des idées et qui les partagent


NB: heuuuuuu, nan j'ai rien oublié !!!
:)

Par RAT le 9/1/2003 à 20:56:30 (#2984019)

Ba moi j'ai conçu le mien depuis peu, mais je n'ai pas terminé tous les tests.

Le principe, est d'agir surtout dans le onmoduleload. Pourquoi? car cela chauffera moins le processeurs logiquement que sur le onheartbeat.

L'idée :

Faire un script au premier chargement du module qui va s'occuper à vider tous les NPC qui ne portent pas en début de tag un "ares_" ou les NPC qui ne sont pas invulnérable. En même temps que de les supprimer, je sauvegarde tout cela dans de multiples variables locales, dont le resref de la créature, un compteur , sa location etc... répertorié par les differentes zones.

Cela me permet de pouvoir spawner les NPC quand le premier PC rentre, et il le resupprime quand il n'y a plus de NPC du tout dans la zone.

Mais si un PC reste dans la zone plus de 10 minutes (il charge la fonction qui se trouve dans le OnModuleLoad toutes les 10 minutes qui cette derniere possède 4 fonctions :) ), et qu'il a tué une créature alors je la fais respawner automatiquement.

L'avantage de tout sauvegardé au premier chargement du module, c'est que vous pouvez agir sur toutes vos zones sans problème.

Le seul hic, c'est que le chargement du module , est un tout petit plus longue que les autres. Mais je n'ai encore jamais eu de probleme.

je l'ai testé pour l'instant avec 24 zones avec en moyenne entre 10 et 30 créatures par zones.

Je vais continuer à augmenter le nombre , pour voir :).

Sinon grâce à ce code, j'ai pu faire, de multiple respawn pour module persistant.

Enfin bon, pour l'instant je n'ai pas eu un seul probleme, mais je prefere continuer à faire mes tests tout de même.


[Edit]

Bon apres un test sur mes 24 zones, dont 3 zones remplies en moyenne entre 20 et 30 et une zone avec + de 180 npc, aucun plantage quand on rentre dans la zone.
Le seul hic c'est ua chargement du module qui prend un certain temps. Mais après tout se gere à merveille , en libérant quand même des grosses ressources lol :).

Je continue mes tests.:)

Par (Gadjio) le 9/1/2003 à 23:22:28 (#2985095)

Question très bête (désolé hin :D) : les "rencontres" gérées par l'éditeur, dans cette optique de respawn, on oublie ? De l'extérieur ça me semblait utilisable, mais je n'ai pas vraiment approfondi pour l'instant. (Ni fait de recherches sur le forum, je profite un peu de ce thread en fait. ;))

L'idée de RAT me semble bien pensé, surtout pour ceux avares en ressources systèmes (c'est hélas mon cas). Je vais essayer quelques scripts dans ce sens aussi.

Mais je n'ai pas compris ça :

Mais si un PC reste dans la zone plus de 10 minutes (il charge la fonction qui se trouve dans le OnModuleLoad toutes les 10 minutes qui cette derniere possède 4 fonctions ), et qu'il a tué une créature alors je la fais respawner automatiquement.


C'est sur le onHeatBeat du module, cet appel à la fonciton du onModuleLoad ? Pourquoi elle est appelée toutes les dix minutes ? (ou plutôt : comment ?)

onmoduleload

Par Blam le 10/1/2003 à 0:12:11 (#2985454)

Un peu long au chargement...........oui et pour un monde persistant ca pose le problème de délestage des zones

peux tu être plus précis stp :)

Par RAT le 10/1/2003 à 0:24:46 (#2985536)

nononon je ne fais jamais agir le onheartbeat du module. Mais je m'excuse, je suis parti dans le délire de la destruction de mes npc lol sans vous expliquer tout le systeme.

Bon je recommence, je n'utilise donc jamais le onheartbeat du module.
Dans le onmoduleload, donc au chargement du module, je pense à détruire tous les NPC donc répertorié par differentes sauvegardes de toutes les zones.

Après 2 scripts vont réagir, le area_enter, et le area_exit.

dans le area_enter: il va détecter le premier PC qui rentre.
Dès qu'il rentre, il charge la zone, grâce aux sauvegarde faites avec le onmoduleload. (je vous dis j'ai réussi à charger + de 180 NPC dans une zone de 32 sur 32, zone de forêt d'ailleurs).
Et c'est là ou je me suis gourré dans mon explication c'est que c'est dans le onenter de la zone, grace à un delaycommand mit à 10 minutes, il va charger à la 10èmes minutes une fonction, qui est une fonction récursive, qui va donc se rappeler à chaque fois.
Dans cette dernière j'appelle donc ma fonction qui va lui permettre de respawner les NPC. Car elle va faire une recherche dans toute la zone, et à chaque NPC sauvegardé qu'elle trouve inexistant, elle va les recréer, en resauvegardant son objet par une variable local.
Après je fais appelle à une autre fonction qui lui va respawner tous les items se trouvant dans des placeables.
Après une autre fonction encore, qui lui va respawner des placeables si le code ne les détecte plus (fait par le mm principe que les respawn des NPC) etc....

dans le area_exit:
il detecte que s'il n'y a plus de PC, ils resupriment tous les NPC, puis il va supprimer aussi tous les items qui se trouvent sur le sol que les PC ont laissé trainer.


Donc voilà en gros mon systeme.

Grace à celui là, car je n'ai pas terminer de tout tester comme je vous ai dis, dont les respawns :). Je vais essayer de refaire le systeme de réenclencher les piéges par le même principe:).

Enfin voilà, en gros mon système, je vous le montrerai plus en détail quand je serai sur qu'il ne comporte pas de bug.

Sinon pour répondre à ta question, perso je n'utilise plus du tout le onheartbeat du module. Mais pour avoir les mêmes effets , je vais mettre le code dans une fonction récursive, que je vais la faire rappeler tous les X secondes dans mon Onmoduleload. Et je te promets que cela marche :). L'avantage, c'est que cela prend quand même moins de ressources :).

Voilà,

RAT

[EDIT]
PS:Mille excuse, si je me suis fais mal comprendre lol :D.
Et non, pour les zones, cela ne ram presque pas. Bien sur, si tu fais comme moi + de 180 NPC ds la zone, cela ram un peu plus lol. mais ça marche :)

eMRaistlin

Par Blam le 10/1/2003 à 1:40:50 (#2985914)

Effectivement la liste ne doit pas etre bonne
j'ai que des blaireaux
if ((0<=nPourcent)&&(nPourcent<=30))
{
return "monstre_rat001";
}
if ((31<=nPourcent)&&(nPourcent<=70))
{
return "monstre_rat001";
ect...

Par eMRaistlin le 10/1/2003 à 2:10:08 (#2986043)

et les resref de tes rats ?

Par Blam le 10/1/2003 à 2:15:05 (#2986068)

nw_rat001 (le resref)

mais meme resultat que le
monstre_rat001
monstre_nw_rat001
ou
nw_rat001


NB: mais que fait LYS !!!!!!!!!!!!!!!!!!!
(vais me faire eng....guirlander de vouloir changer de systeme!)

au fait tes blaireaux/monstres apparaissent en nombres variable alors que sur notre systeme c'est individu par individu ! ca vient de quoi ?

Par eMRaistlin le 10/1/2003 à 2:17:38 (#2986078)

;) :D

bein voila... met les resref... comme je le disais, le tag, c'est un vieux reste, mais c'et plus obligatoire...

tiens, vu que j'ai 2 minutes, je vais supprimer cette ligne inutile de mon commentaire... ^^

Par Blam le 10/1/2003 à 2:22:51 (#2986092)

mais si je met

nw_rat001 ca m'envoie des blaireaux aussi !!!

je capte completement, la !

Par Jaha Effect le 10/1/2003 à 2:28:56 (#2986120)

heu place un rat dans ta zone et prends son resref directement sur lui, un resref qui commence par nw_ , ben y'a de grande chance qu'il ai pas du tout le même resref en jeu et ça marche pas ;)

Jaha Effect :D

Par Blam le 10/1/2003 à 2:34:22 (#2986144)

j'ai fait ca aussi
c'est ca qui est terrible

et je ne comprends pas d'ou vient le coup !

Par Jaha Effect le 10/1/2003 à 2:36:11 (#2986149)

Et le rat dans ta zone, il a quel resref?

Jaha Effect :D

Par Blam le 10/1/2003 à 2:38:09 (#2986159)

exactement le meme, tres exactement
et si je tente mon rat modifié il est en nw_rat002

j'ai remplacé mes rats par des vaches (c'est joli aussi)
exactement le meme probleme.

Par Jaha Effect le 10/1/2003 à 2:40:03 (#2986169)

Ben je vois pas alors :(

Jaha Effect :D

eMRaistlin

Par Blam le 10/1/2003 à 12:39:51 (#2988041)

[monstre_x] c'est bien a remplacer par le resref ???
j'ai pas fait d'erreur ?

si dans ma liste pour le test je met le meme resref

genre [nw_rat001] qui est le refres du rat de base, ou,
[nw_rat002] le rat ameliré, ca devrait marcher ?

car ce n'est pas le cas!

Par Jaha Effect le 10/1/2003 à 13:00:08 (#2988177)

Je pense que le problème dois pas venir de là mais quand je vois ça ça me choque

if ((0<=nPourcent)&&(nPourcent=nPourcent)&&(nPourcent<=30))

un pourcentage susceptible d'étre négatif ça me choque

Jaha Effect :D

Par eMRaistlin le 10/1/2003 à 13:05:38 (#2988226)

euh... justement...


si 0 >= nPourcent, alors nPourcent <= 0...

donc, c'est negatif...

d'ou l'inverse : 0 est inferieur a nPourcent... (en gros, ca donne nPourcent compris entre 0 et 30


On va dire qu'il se fait tard :p

@Blam : vi, le string attendu est le resref du monstre. Essaye avec un monstre custom, plutot qu'avec un monstre predefini de Bioware, juste pour tester :)

Par Jaha Effect le 10/1/2003 à 13:12:07 (#2988272)

attends je te traduis comment je lis ça

si (0 inferieur ou egal a nPourcent) et (nPourcent inferieur ou egal a 30)
Dans le prmier cas tu est bien d'accord que ça done un chiffre negatif ou egal a 0, c'est ou que je me plante ?

Jaha Effect :D

J'AI TESTE !!!!

Par Blam le 10/1/2003 à 13:12:31 (#2988278)

ce me rends fou !
j'en ai marre des ces trucs que je comprends pas !

vais bouffer ce script comme j'ai bouffé les blaireaux la vache et les rats ! et s'il reste que de l'herbe et des cailloux...........................je les manges en salade !!!!!!!

eMRaistlin

Par Blam le 10/1/2003 à 13:49:51 (#2988566)

Je viens de voir des choses curieuses

des que j'enleve le script listmonster (ton ro_listmonster)
j'ai tres exactement la meme chose le jeu se comporte de la meme manière avec creation de blaireaux et tout et tout....
pourtant il y a bien dans le createmonster un
#include "listmonster" (ex ro_listmonster)

si j'ai bien compris la manoeuvre
le create monster se sert de l'include (la liste des monstre pour creer ces monstres) mais peut fonctionner sans (ce qui me met des blaireaux partout)
si il y a la listmonster il devrait s'en servir, hors ce n'est pas le cas .
Donc j'ai tout recommencé (puisque c'est pour tester) en laissant les noms originaux de tous les fichiers scripts
tous a base de "ro_script" cela me donne la meme chose.
Ca marche sur ragnarok, et pas ici ou est l'erreur, que manque t il ?

NB: devant un probleme je suis un acharné !!

Par Jaha Effect le 10/1/2003 à 13:54:39 (#2988610)

heu si je me souviens bien la liste de monstre de Ragnarok est particulière car il y a beaucoup de monstres fabriqué et utilisant un hakpak.
Me trompe je?

Jaha Effect :D

Heu ! Joker !

Par Blam le 10/1/2003 à 13:57:56 (#2988637)

j'ai changé les references de monstres quand meme..........
le probleme est autre, puisque il ne prends pas en consideration la liste en question !!!!

Par eMRaistlin le 10/1/2003 à 14:04:19 (#2988681)

OK... j'ai oublie une precision :

Tu doit a chaque modification de tes include recompiler le script qui comprend ces inclues (ici : le onenter..)

en effet, si tu ne le fait pas, seul le fichier nss est modifie, et le ncs reste compilé dans l'ancienne version...

@Jaha : tu est sur qu'un chiffre negatif est superieur a 0 ??

Pasque si on s'arrange pour que 0 soit inferieur a nPourcent, ca veut du coup dire que nPourcent est superieur a 0.. non ?;)

Par Jaha Effect le 10/1/2003 à 14:09:07 (#2988710)

Arf oui c'est la fatigue, autant pour moi ;)

Jaha Effect :D

C'est ca !

Par Blam le 10/1/2003 à 14:15:00 (#2988745)

C'est tres exactement cela
le probleme c'est que le script et moi.................Donc je ne pouvais trouver que par hazard
Je viens de recompiler en cascade
listmonster-createmonster-creation (dans le onEnter) et

ca marche du premier coup...(enfin, premier depuis la recompilation, hein ? :))

du coup je viens de comprendre une erreur récurante sur une partie de mon monde, et comme ma scripteuse attitrée est en vaccances, je me vois mal corriger ca tout seul.

Dans tous les cas MERCI a tous, Bravo a eMRaistlin pour ce boulot, qui viens de me faire faire un grand pas en avant dans la comprehension du script en général.

Par eMRaistlin le 10/1/2003 à 14:21:13 (#2988797)

A ton service ^^

(si tu pouvais savoir comment j'ai galéré avant de trouver ca... :))

Par RAT le 12/1/2003 à 2:47:05 (#3000839)

Mes tests sont tous fini mon systeme marche parfaitement :). Je vais rajouter si j'y arrive le fait de pouvoir remettre un piège qi quelqu'un la désarmorcer ( d'ailleurs à ce sujet là, Bioware n'ont pas mis beaucoup de fonction permettant justement de réinstaller les pièges).

Rat

Par Blam le 12/1/2003 à 12:56:33 (#3002459)

Ce serait bien que tu postes le travail effectué, avec des expliçations détaillées.
C'a m'intéresse, en fait tous les systèmes aboutis m'intéresse, et ça intéresse sûrement toute notre petite communauté.

Il me tarde déjà de voir comment ca peut fonctionner :)


blam

Par RAT le 12/1/2003 à 15:21:27 (#3003358)

oui oui je posterai tout cela, ne t'inquiete pas :):D. Mais je préfère bien vérifier qu'il ne comporte aucun bug, et mettre avant de le poster le systeme de réenclencher les pièges.

Par contre, sur mon système, mais je pense que bioware ne l'autorise pas mais je peux me tromper, c'est de spawner des portes. Je sais pas mais en tout cas, je n'ai pas réussi à respawner mes portes lol

mais Dès que c'est fini, je le mettrai oui :)

JOL Archives 1.0.1
@ JOL / JeuxOnLine