Zunächst einmal gibt es einige Hinweise für die Geschichtserstellung über die Zwergenfestung. Jemand hat vor einiger Zeit in den Bay12-Foren nachgefragt , und ein Protokoll wurde geteilt, und Sie können herausfinden, wo die Diskussion beginnt, indem Sie nach "Unser heutiges Thema ist die Generierung von Welt und Geschichte" suchen.
Ich weiß nicht genau, wie Dwarf Fortress das macht, aber ich werde erklären, wie ich vorhabe, einen sehr einfachen ersten Entwurf in meinem Spiel umzusetzen. Ich werde einfache zellulare Automaten verwenden . Wenn Sie diese Sporen-Prototypen wie Zellkultur und Biom durchsehen.
Dies sind Beispiele für zellulare Automatisierungen und was sie produzieren können. Im Wesentlichen werde ich Regeln für verschiedene Rassen erstellen. Einige Beispiele für Regeln wären:
- Ihre Feindseligkeit gegenüber anderen Rassen
- Ihre Klimapräferenzen
- Ihre Ressourcenanforderungen
- Ihre Geburtenraten und Lebensspannen
- Ihre Wünsche (Technologieforschung, Handel, friedliche Existenz, Weltherrschaft)
- Ihre Fähigkeiten (Strukturaufbau, Ressourcensammlung, Kriegsführung usw.)
- Und so weiter...
Der wichtigste Input für all das ist eine Welt, in die man diese Rassen stürzen kann. Das Gelände bestimmt ihre Vorlieben und Ausdehnung. Wenn Sie also eine Welt geschaffen haben, wählen Sie zufällige Orte in der Welt aus, an denen diese Rassen angemessen leben würden, und lassen Sie sie los. Jetzt fängt das Interessante an. Jetzt, da Sie Land und Rassen mit Wünschen und Fähigkeiten haben, können Sie damit beginnen, eine Geschichte aufzubauen. Diese Rassen sammeln Ressourcen und bauen dann Strukturen auf:
- Städte in ressourcenreichen Gebieten mit hoher Lebensfähigkeit.
- Straßen verbinden die größeren Städte.
- Brücken über Flüsse.
- Tunnel durch Berge.
- Festungen in der Nähe der Front der Expansion als Reaktion auf Schlachten.
Jede Struktur kann von anderen Völkern überfallen / erobert werden. Je länger ein Bauwerk (wie eine Stadt oder eine Festung) in der Geschichte existiert, desto schutzwürdiger ist es, desto schwerer ist es, es zu übernehmen. Und umso wünschenswerter ist es für Rennen, die Kontrolle wollen. Schlachten werden dort ausgetragen, wo sich Rennen treffen (mindestens eines ist feindselig). Schlachten werden nach Orientierungspunkten oder nahegelegenen Strukturen benannt, oder wenn der Kampf bedeutend ist oder die Orientierungspunkte nicht benannt sind, werden die Orientierungspunkte nach dem Kampf benannt.
Straßen, Brücken und Tunnel werden durch Handel und Transport von Ressourcen erweitert. Jeder hat einen maximalen Durchsatz, der sich mit dem Ressourcenaufwand erhöhen kann. Eine steinerne Festung inmitten von Grasland bauen? Diese Straßen werden stark genutzt, um den benötigten Stein zu transportieren. Sie werden größer und bekommen einen Namen.
Naturkatastrophen wirken sich auf die Bevölkerung und den Verlauf der Geschichte aus. Erdbeben können eine Stadt in Trümmer verwandeln oder einen Tunnel einstürzen lassen. Eine Flut kann eine Straße oder Brücke auswaschen.
Es ist nicht so tiefgreifend wie die Zwergenfestung, aber es ist ein Anfang. Nun, wie Sie sich vorstellen können (und wie Johnathan Hobbs sagte), werden umso mehr Zellen simuliert, je mehr sich diese Rassen ausdehnen. Es werden nicht nur mehr Zellen simuliert, sondern die Simulationen sind auch komplexer, da jetzt Strukturen aufgebaut / aufrechterhalten werden müssen, Kämpfe um Löhne, Handel um ... Handel und so weiter. Das wird für jede Sprache schwierig. Javascript wird möglicherweise früher langsamer. Sie können jedoch immer auf Komplexität verzichten, um die Geschwindigkeit zu verbessern.
Es ist alles eine Simulation (wenn auch komplexe), Sie zeichnen nur die wichtigen Ereignisse auf und nennen es Geschichte.
Ich habe auch gerade einen Bay12-Forumsbeitrag für Leute gefunden, die sich Gedanken darüber machen, wie die Generation der Zwergenfestung schneller werden kann. Ich habe es nicht durchgelesen, aber es kann einige Hinweise geben, falls Sie jemals auf Probleme stoßen, bei denen Ihre Implementierung zu langsam ist.