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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Peuplement automatique de zones, une approche.

Par miriandel le 4/9/2002 à 13:47:33 (#2094107)

Fatigué de créer dans chaque zone un certain nombre de PNJs, j'ai réfléchi à un moyen de créer aléatoirement une population de zone.
Cette population se crée au moment où un PJ rentre dans la zone, et est détruite quand le dernier PJ quitte la zone.
De cette façon, le serveur est sollicité au minimum, puisque chaque zone est entièrement vide de PNJs si aucun joueur ne s'y trouve.

Voici les principes que j'ai utilisés:

1° Fabrication de 30 types d'habits, avec comme blueprint resref costume_001 à costume_030
Les dix premiers sont des armures d'hommes, les 10 suivants des armures de femme et les 10 derniers des tenues légères de ville.
Temps: 1 heure

2° Création de 3 PNJs de chaque race utilisée, soit 3 nains, 3 humains, 3 elfes, etc, en versions male et femelle.
Ces PNJs sont nus et seulement différenciés par leur peau/visage/cheveux.
Temps: 20 minutes

3° Dans la routine "OnSpawn" de chaque PNJ se trouve un appel à la routine d'habillage.
Sur un D10, la routine d'habillage crée un vêtement sur le PNJ et l'en habille.
Le type de vêtement créé est différent selon le sexe et l'occupation du PNJ (pas d'armure de plaques pour le client d'une taverne...)
Temps: 10 minutes, à copier d'un pote :)

4° Dans la zone, je place autant de waypoints que je veux créer de spawns de PNJs. La routine de spawn des PNJs essaye automatiquement de les faire asseoir, donc bien placer le waypoint à équidistance des chaises, au besoin posé sur les tables, ça marche bien.
Temps: 2 minutes

5° Dans la routine "OnEnter" de la zone, je crée mes PNJs.
Pour le moment, je déclenche la création de mes persos par un trigger placé à l'entrée de la zone, car le OnEnter de la zone crashe en créant le vêtement, mais je compte trouver un fix à ça rapidement.
Cette routine balaie tous les waypoints de la zone qui commencent par "spawn_" et y pond autant de PNJs que nécessaire, d'apparence aléatoire (voir point 2).
En spawnant, les PNJs s'habillent automatiquement (voir point 3).
Temps: aucun

6° Dans la routine "OnExit" de la zone, je détruis tous les PNJs, libérant le CPU de cette charge. Je peux ainsi placer beaucoup de PNJs sans surcharger le serveur (et sans me crever à les placer à la main !)
Temps: aucun

Voilà, je voudrais savoir ce que vous en pensez, et au besoin, comme d'habitude, je publierai un petit module d'exemple.
J'ai créé ce système parce que j'en avais marre que ma garde (un autre module maison, disponible sur demande :cool: ) se ballade aux quatres coins de la ville quand on la quittait plus d'une heure, ou que mes serveuses arrêtent de servir, et autres désagréments liés à la mauvaise gestion des événements dans NWN.
Alors je me suis dit: on n'est jamais si bien servi que par soi-même, et j'ai repensé tout mon système de peuplement.
Il n'est évidemment plus possible de stocker des variables sur un PNJ...
Comme écrit en bleu, il faut moins de 2 heures pour fabriquer le système (scripts, vêtements, PNJs types), et moins de 2 minutes pour peupler une zone, avec des PNJs qui n'auront jamais la même tête et le même vêtement.

:hardos:

Par Théranthil le 4/9/2002 à 15:43:41 (#2094907)

Hummm, ca a l'air plutôt sympa. A mon avis, tu devrais juste faire plus d'humain et un peu moins d'autres races.
Mais, c'est vraiment quelque chose à creuser. ;)

Par RavenShadow le 4/9/2002 à 16:05:53 (#2095074)

Ouaip ben c'est vraiment une bonne idée (à mon avis).

Je suis plutôt d'accord avec Théranthil sur la répartition Humains/Autres races mais ça dépend surtout du monde dans lequel on joue.

Sinon je veux bien que tu nous montres ton système de Garde.

En ce moment j'ai vraiment pas le temps de faire de me plonger complétement dans Aurora et tout ces petits ajouts sont vraiment super intéressant.

Merci

RavenShadow

Par miriandel le 4/9/2002 à 20:12:48 (#2096962)

La guarde est ici.

Elle marche très bien, mais je n'aime pas l'approche des événements par OnHeartBeat, que j'avais empruntée sur un module de déplacement en formation américain (d'ailleurs buggé, ils n'ont pas résolu correctement la trigonométrie des déplacements).

A l'occasion, je ré-écrirai les événements en UserDefined.

Ah oui, la répartition des races, c'est vraiment au goût de chacun.
Comme je recrée Thorbardin, forcément... y a des nains :chut:

peuplement d'une ville

Par Ballesto le 6/9/2002 à 15:50:39 (#2108687)

Super !

Très bien, très bonne idée.

Je suis de tout coeur avec vous, mais avez vous pensé au dialogue ? Même un dialogue générique du type " Bienvenue étranger, allez donc parler à untel notre bourgmestre." parcequ'il village peuplé de Muet c'est déprimant pour un aventurer en quête d'information.

Mais sinon je trouve cela une très bonne initiative. :D :eureka:

JOL Archives 1.0.1
@ JOL / JeuxOnLine