JeuWeb - Crée ton jeu par navigateur
bestiaire dynamique - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : bestiaire dynamique (/showthread.php?tid=616)

Pages : 1 2


bestiaire dynamique - gtsoul - 08-01-2007

Bonjour,

j'écris pour trouver un concept sympa afin de dynamiser mon bestiaire. Pour rappel : Novgonia est un jdr, axé sur la colonisation d'un continent.

Actuellement, des monstres sont présents un peu partout dans les terres, ils possèdent un territoire sur lequel ils rodent, attaquent les persos qui s'approchent trop d'eux, qui les attaquent, ou les attaquent par surprise parce qu'ils campaient là.

La fonction première d'un monstre est d'attaquer un pj, en outre il possède d'autres fonctions, comme ennuyer la vie des pj, défendre des accès, subvenir aux besoins de matières premières des pj.

Une fois qu'un monstre meurt, un clone renait quelque temps plus tard et devient maitre du territoire du défunt. Plus un monstre reste en vie, plus il prend de la bouteille et plus il devient fort.

On peut classes les monstres suivant la typologie suivante :
_ prédateur : dangereux et agressif, nécessite la coordination d'un groupe entier de chasseur (ex : grand fauve)
_ nuisible : agressif, le tuer ne rapporte rien, mis à part se débarrasser de sa présence (ex : moustique)
_ gibier : non-agressif, mais on le traque pour quelque chose (ex : ben du gibier c'est du poulet ?)

Suite à la discussion métaphysique de joshua sur les planètes, je voudrais revoir le système du respawn des monstres. Comment répartir dynamiquement les monstres sur ces terres, sachant qu'ils doivent réagir aux grands mouvements de population, défendre les terres encore vierges, ne guère s'approcher des villes.
Je voudrais que ce phénomène soit similaire à celui de la déforestation :
les monstres naissent là ou une communauté de leur semblables est importante; les monstres s'attaquent entre eux; il faut quitter les villes pour en trouver (sous-entendu, la civilisation apporte paix et tranquilité mais retire l'aventure).
Bien entendu, il faut voir les limites, un monde inexploré pendant 2 semaines doit encore être franchissable, et les espèces sauvages peuvent tenter de renaître dans les lieux que la civilisation s'est appropriée et qu'elle a abandonnée.

Parlons programmation, je pensais à cela,

on distingue les membres alpha qui sont "immortels" et les simples membres. Lorsqu'un alpha meurt, il réapparait 7 jours plus tard au même endroit, lorsqu'un normal meurt, il meurt.

Toutes les heures, pour chaque regroupement de monstres de même type, on fait le jet suivant :
si(nb_monstre<20) //20 est la limite max pour éviter l'overpeuplement
{
nb_nouveau = (nb_monstre/2*0.1*rand())
}
comprenez : un couple de monstres a 10% de chances de créer un petit monstre par heure. Le 10% est arbitraire, il sera inversement proportionnel au temps de gestation. Plus un monstre est puissant, plus sa gestation est longue, plus il est rare (le moustique par contre pullulle).

Système de prédation,
pour chaque monstre, on enregistre ses prédateurs. Chaque heure les monstres fondent sur leurs proies les plus proches.


Voilà vos avis, vos remarques


RE: bestiaire dynamique - Raoull - 09-01-2007

Très interessant, mais ca suppose une gestion assez poussée de tes monstres.

Perso, dans mon petit monde, je pense gérer 2 types de monstres :

Les monstres type PNJ, qui sont à un endroit précis (même s'il bougent un minimum...) et ont une mission précise, en fonction d'une quete, pour protéger un acces, délivrer un message, etc.

Et des monstres 'aléatoires', dont des PNJs 'mineurs' (genre brigands etc. qui pour moi seront des 'monstres') font partie.
Ces monstres la ne sont pas localisés, mais tirés aléatoirement au déplacement du joueur, selon un % qui suit différents critères : type de terrain, population alentours, caractéristiques du perso, etc.
Et selon une liste de monstre habitant ce type de terrain, classée alle aussi en % : 1% de chance de tomber sur un monstre très rare mais très fort, 10% de tomber sur un monstre courant mais plus ou moins fort.
Bref une gestion bcp plus classique.

Maintenant ta gestion des monstres est en fait une véritable IA suivants différnets critères, puisque tous tes monstres sont toujours localisés, et doivent interagir avec les persos et les autres monstres alentours, et finalement suivent leur vie comme de vrais PNJs.
C'est certes plus réaliste et bcp plus fun à jouer, mais ca me semble nécessiter bcp de mises à jour et bcp de ressources.

Quand tu dis par exemple, que les monstres se reproduisent ou chassent d'autres monstres, ne siffirait t'il pas de faire une mise à jour du nombre de monstre de chaque type à un endroit, en fonction de ce que les joueurs auront butés ?

Et pour leur migration vers les zones plus ou moins habitées, une même mise à jour de leur nombre, en fonction par exemple du nb de population, ou de la puissance de cette population (les monstres iront plus facilement visiter un village de péons qu'une forteresse de soldats).


RE: bestiaire dynamique - gtsoul - 09-01-2007

Je distingue nettement les pnj des monstres. Un pnj possède un script comportemental très strict alors qu'un monstre est une ia autonome.
Un monstre réagit de manière asynchrone, il prend une décision toutes les heures, ou quand il est menacé.
Pour la gestion des ressources, je ne me fais pas de soucis; j'arrive à faire 90% du boulot en une requete (6ms ttes les heures).

En fait, je me demande sur quels critères exacts faut-il considérer la natalité. J'ai proposé à la concentration de monstre, cela semble logique, mais cela devient vite exponentiel ; je souhaite quelque chose qui se rapproche plus d'une différentielle de gauss : accéleration exponentielle, puis arrivée à un stade déceleration puis tendre vers une valeur.

L'éloignement des villes se fait de manière naturelle, un boulot de garde existe qui est rémunéré au kilo de prédateur abattu. Le joueur aimant bien la sécurité et les villes disposant d'un statut spécial; les villes seront remplies de joueurs qui taperont les monstres les plus proches.
de plus, l'ia d'un monstre blessé le pousse à fuir le plus loin, vers le lieu le moins habité, donc naturellement les monstres quitteront les villes SI les gardes font leur taff, SINON elles deviendront des villes fantomes.

Je précise aussi que les combats gèrent la notion de simultanéité, aussi un groupe de noobs qui se coordonnent et foncent dans le tas sera plus efficace qu'un gros bourrin; idem pour les monstres.

Si vous avez d'autres idées pour rendre l'environnement dynamique, les lieux peu fréquentés sont hostiles, les lieux fréquentés sont surs mais vides.


RE: bestiaire dynamique - barst - 09-01-2007

Pour contrôler la natalité, tu peux utiliser quelques astuces pour suivre un semblant de réalité.

En effet, plus la concentration de monstre est importante plus la natalité est forte.

Mais tu peux aussi intrduire une nouvelle contrainte : au delà d'une certaine concentration de population, les monstres ont 2 choix :
- rester ensemble mais certains mourront de faim ou de maladie dû à la promiscuité
- se séparer en 2 hordes distinctes.

Ces 2 solutions régulent la répartition des monstres sur le territoire et évitent d'avoir des groupes trop importants.

Mais comme tu veux réaliser une vrai IA, cela est plus compliqué .
tu peux lire la thèse de Gabriel Robert ( http://animatlab.lip6.fr/~robert/these_gabriel_robert.pdf) que j'ai découvert et qui est très bien.


RE: bestiaire dynamique - gtsoul - 09-01-2007

le lien est down, j'ai regardé sur le site du lip6 idem
tu l'aurais quelque part ? j'aimerais bien la lire


RE: bestiaire dynamique - barst - 09-01-2007

Envoi moi ton email en MP, le pdf fait presque 2Mo.

Ca m'a donné pas mal d'idée pour coder mes IA controlant mes flottes PNJ, même si rien n'est encore fait, ca m'a fait prendre le problème sous un nouvel aspect.

- définir les actions atomiques (se déplacer, attaquer, piller, se soigner....)
- définir les buts d'un PNJ (détruire, survivre, prospérer)
- définir des objectifs immédiats (attaquer pour détruire mais aussi pour survivre, donc satisfaction de 2 buts....)

Chacun après adapte à sa facon, mais voilà tu dois vraiment définir tout se ce qui sera possible de faire pour tes montres et connaître leurs motivations.
Ensuite selon leur situation et un peu leur caractère (paramètre aléatoire), une action sera prise plus qu'une autre.


RE: bestiaire dynamique - gtsoul - 09-01-2007

gtsoul@gmail.com (il doit me rester qques Go de libre)


RE: bestiaire dynamique - barst - 09-01-2007

C'est parti....


RE: bestiaire dynamique - denisc - 10-01-2007

moi aussi je peux l'avoir ce fichier???


RE: bestiaire dynamique - barst - 11-01-2007

Parti aussi....

Je vais essayer de penser à le déposer sur un de mes comptes.