En primer lugar, hay algunas pistas para la generación de historia sobre Dwarf Fortress. Alguien preguntó en los foros de Bay12 hace un tiempo, y se compartió una transcripción y puede encontrar dónde comienza la discusión buscando: "nuestro tema hoy es la generación mundial y la generación de historia".
No sé exactamente cómo lo hace Dwarf Fortress, pero explicaré cómo planeo implementar un primer borrador muy básico en mi juego. Voy a usar un autómata celular simple . Si observa estos prototipos de esporas , como el cultivo celular y el bioma.
Estos son ejemplos de automatizaciones celulares y lo que pueden producir. Básicamente, crearé reglas para diferentes razas. Algunos ejemplos de reglas serían:
- Su hostilidad hacia otras razas.
- Sus preferencias climáticas
- Sus necesidades de recursos
- Sus tasas de natalidad y esperanza de vida.
- Sus deseos (investigación tecnológica, comercio, existencia pacífica, dominación mundial)
- Sus capacidades (construcción de estructuras, recolección de recursos, guerra, etc.)
- Y así...
Por lo tanto, el aporte más crítico para que todo esto funcione es un mundo en el que se dediquen estas razas. El terreno determinará sus preferencias y expansión. Entonces, una vez que haya generado un mundo, elija ubicaciones aleatorias en el mundo donde estas razas vivirían adecuadamente y déjelos perder. Ahora las cosas interesantes comienzan a suceder. Ahora que tiene tierras y razas con deseos y capacidades, puede comenzar a construir una historia. Estas razas reúnen recursos, luego se construyen estructuras:
- Ciudades en áreas de altos recursos y alta habitabilidad.
- Los caminos conectan las ciudades más grandes.
- Puentes a través de ríos.
- Túneles a través de las montañas.
- Fortalezas cerca de las primeras líneas de expansión en respuesta a las batallas.
Cualquier estructura puede ser asaltada / conquistada por otras razas. Cuanto más larga sea una estructura (como una ciudad o fortaleza) en la historia, más defendible es, más difícil es hacerse cargo. Y lo más deseable es para las carreras que quieren control. Las batallas se libran donde las razas se encuentran (al menos una es hostil). Las batallas se nombran por puntos de referencia o estructuras cercanas, o si la batalla es significativa o los puntos de referencia no se nombran, los puntos de referencia se nombran después de la batalla.
Los caminos, puentes y túneles se expanden a través del comercio y el transporte de recursos. Cada uno tiene un rendimiento máximo que puede aumentar con el gasto de recursos. ¿Construir una fortaleza de piedra en medio de pastizales? Esos caminos tendrán un uso intensivo para transportar la piedra requerida. Se harán más grandes y obtendrán un nombre.
Ocurren desastres naturales que afectan a las poblaciones y al curso de la historia. Los terremotos pueden reducir una ciudad a ruinas o colapsar un túnel. Una inundación puede arrastrar un camino o puente.
No es tan profundo como Dwarf Fortress, pero es un comienzo. Ahora, como pueden imaginar, (y como Johnathan Hobbs mencionó) cuanto más se expanden estas razas, más células se simulan. No solo se simulan más células, sino que las simulaciones son más complejas, ya que ahora hay estructuras para construir / mantener, batallas para ganar, comercio para ... comercio, etc. Esto se vuelve pesado para cualquier idioma. Javascript podría ralentizarse antes. Sin embargo, siempre puedes sacrificar la complejidad para mejorar la velocidad.
Todo es una simulación (aunque compleja), solo estás registrando los eventos importantes en el camino y llamándolo historia.
También acabo de encontrar una publicación en el foro de Bay12 para personas que hacen una lluvia de ideas sobre cómo hacer que la generación mundial de Dwarf Fortress sea más rápida. No lo he leído, pero puede proporcionar algunas sugerencias si alguna vez se encuentra con problemas con la implementación demasiado lenta.