Tout d'abord, il y a quelques conseils pour la génération de l'histoire de la forteresse naine. Quelqu'un a demandé sur les forums Bay12 il y a quelque temps, et une transcription a été partagée et vous pouvez trouver où commence la discussion en recherchant: "notre sujet aujourd'hui est la génération du monde et la génération de l'histoire".
Je ne sais pas exactement comment Dwarf Fortress le fait, mais je vais vous expliquer comment je prévois d'implémenter un premier brouillon très basique dans mon jeu. Je vais utiliser un simple automate cellulaire . Si vous regardez à travers ces prototypes de spores , comme la culture cellulaire et le biome.
Ce sont des exemples d'automatisation cellulaire et de ce qu'ils peuvent produire. Essentiellement, je vais créer des règles pour différentes races. Voici quelques exemples de règles:
- Leur hostilité envers les autres races
- Leurs préférences climatiques
- Leurs besoins en ressources
- Leurs taux de natalité et leur durée de vie
- Leurs désirs (recherche technologique, commerce, existence pacifique, domination mondiale)
- Leurs capacités (construction de structures, collecte de ressources, guerre, etc.)
- Etc...
Donc, l'apport le plus critique pour que tout cela fonctionne est un monde dans lequel plonger ces races. Le terrain déterminera leurs préférences et leur expansion. Donc, une fois que vous avez généré un monde, choisissez des endroits aléatoires dans le monde où ces races vivraient convenablement et laissez-les se déchaîner. Maintenant, les choses intéressantes commencent à se produire. Maintenant que vous avez des terres et des races avec des désirs et des capacités, vous pouvez commencer à construire une histoire. Ces races rassemblent des ressources, puis des structures sont construites:
- Villes dans des zones à haute ressource et à haute habitabilité.
- Des routes relient les grandes villes.
- Ponts sur les rivières.
- Tunnels à travers les montagnes.
- Forteresses près des lignes de front d'expansion en réponse aux batailles.
Toute structure peut être pillée / conquise par d'autres races. Plus une structure (comme une ville ou une forteresse) existe depuis longtemps, plus elle est défendable, plus elle est difficile à prendre en main. Et plus il est souhaitable pour les courses qui veulent contrôler. Les batailles se déroulent là où les races se rencontrent (au moins une est hostile). Les batailles sont nommées d'après des points de repère ou des structures à proximité, ou si la bataille est importante ou si les points de repère ne sont pas nommés, les points de repère sont nommés d'après la bataille.
Les routes, les ponts et les tunnels sont élargis grâce au commerce et au transport des ressources. Chacun a un débit maximal qui peut augmenter avec les dépenses en ressources. Construire une forteresse de pierre au milieu des prairies? Ces routes vont devenir très utilisées pour transporter la pierre requise. Ils deviendront plus grands et obtiendront un nom.
Des catastrophes naturelles se produisent, affectant les populations et le cours de l'histoire. Les tremblements de terre peuvent réduire une ville en ruines ou effondrer un tunnel. Une inondation pourrait laver une route ou un pont.
Ce n'est pas aussi approfondi que Dwarf Fortress, mais c'est un début. Maintenant, comme vous pouvez l'imaginer (et comme Johnathan Hobbs l'a mentionné), plus ces races se développent, plus il y a de cellules simulées. Non seulement plus de cellules sont simulées, mais les simulations sont plus complexes car il y a maintenant des structures à construire / maintenir, des batailles à mener, du commerce au ... commerce, etc. Cela devient lourd pour n'importe quelle langue. Javascript pourrait ralentir plus tôt. Cependant, vous pouvez toujours sacrifier la complexité pour une vitesse améliorée.
Tout est une simulation (bien que complexe), vous enregistrez simplement les événements importants en cours de route et l'appelez l'histoire.
Je viens également de trouver un message sur le forum Bay12 pour les personnes qui réfléchissent à la façon de rendre la génération mondiale de Dwarf Fortress plus rapide. Je ne l'ai pas lu, mais il peut fournir des conseils si vous rencontrez des problèmes avec votre implémentation trop lente.