Les générateurs de village

J'ai prévu d'implémenter un jour ou l'autre des villages dans Lands of Elderlore. Ils devront être tous différents, de préférence aléatoirement en fonction du type de terrain alentours (rivières, routes, forêts, mer, montagne, ...).

Voici différents essais qui ont été faits sur ce sujet.

  • Building and City notes : un regroupement de liens et de docs intéressants sur la création automatique de villes
  • Blog: à creuser, contient des pistes de réflexion pertinentes.

Les générateurs de population

Pour peupler ces villages de villageois, plusieurs solutions existent. On cherchera ici encore les règles les plus simples qui produiront les résultats les plus riches.

De nombreux générateurs existent déjà :

Les algorithmes fractals sont le plus souvent utilisés pour générer un tableau d'altitude; c'est d'ailleurs comme cela que sont initialisés les mondes d'Elderlore. Ce sont en fait des tableaux de valeurs, échantillonnés de 0 à 100.

Imaginons maintenant que chaque case ne représente pas une portion du monde, mais simplement un individu. La valeur de la case pourra alors représenter son rang social, de 0 (le serf le plus miséreux) à 100 (le roi). Chaque case a 8 cases voisines, qui pourraient être les relations de notre individu. Le chaos du fractal déterminera dans quelles proportions un individu donné sera susceptible d'avoir des rapports sociaux avec d'autres individus de rang social différent.

Cette technique présente quelques inconvénients :

  • Tout d'abord un individu donné ne pourra connaitre que 8 autres individus, ce qui peut sembler mince. On peut contourner ce problème en considérant ses voisins à deux cases de distance, voire même plus, le nombre de cases entre les deux individus étant une bonne mesure de leur affinité respective. Ou encore considérer que l'individu à deux cases est le voisin à une case de son propre voisin, et c'est bien connu, les amis de mes amis sont mes amis...
  • le fractal est un carré de côté 2^n + 1, ce qui peut être restrictif sur le nombre d'individus créés, forcément sous la forme (2^n+1)^2, c'est-à-dire 9 (n=1), 25 (n=2), 81 (n=3), 289 (n=4), 1089 (n=5), 4225 (n=6), 16441 (n=7), et ainsi de suite. D'un autre côté, cela peut être un moyen simple pour quantifier les zones urbaines selon leur taille:
    • 9 individus dans une maison ou un ensemble de maisons (ici tout le monde se connait directement puisque chaque case a toutes les autres cases comme voisine directe)
    • 25 individus dans un hameau
    • 81 individus dans un bourg
    • 289 individus dans un village
    • 1089 individus dans un ville moyenne
    • 4225 individus dans un grande ville
    • 16441 individus dans une capitale
  • le cercle familiale n'est pas pris en compte. Si on considère un mari et sa femme sur deux cases mitoyennes, il faudrait que les enfants soient sur les cases immédiatement autour (il y a 5 cases autour de la mère et 5 aussi autour du père, soit 10 en tout, et 4 à proximité des deux à la fois). Sans parler des grands-parents...

Système de quêtes automatique

Avoir des quêtes à proposer au joueur, c'est bien. Si en plus elles présentent un intérêt supérieur à juste "aller livrer cette pizza au roi" ou "Arthur a oublié ses chausses, allez les chercher", c'est mieux. Mais ce qui serait formidable, ce serait de pouvoir générer ces quêtes à la volée, de manière pseudo-aléatoire. Tout en les intégrant dans le monde généré, avec sa population, ses donjons et ses villes... Vaste sujet, qui m'occupera sans doute pendant pas mal de temps.

En attendant, quelques liens utiles :

  • Random RPG: un site génial avec plein d'idées pour générer des énigmes, des quêtes, ... de manière plus ou moins automatique