Bei meiner Arbeit am Mod "Trade, War, Politics" (TWP) habe ich mich sehr viel mit der KI aus Gilde 2 befasst. Ich beschreibe hier, welche Ebenen der KI im Spiel zur Verfügung stehen, wofür sie eingesetzt werden (Vanilla) und worüf sie genutzt werden können (TWP).
Dynastie-KI
Die Dynastie-KI ist gewissermaßen das Pendant zum Spieler, wenn es um die Geschicke der eigenen Dynastie geht. Hier werden weitreichende Entscheidungen getroffen und die eigenen Dynastie-Mitglieder mit Aufgaben betraut.
Die Dynastie-KI verwendet eine baumartige Struktur zur Entscheidungsfindung, diese beginnt im Ordner Scripts/AI/BaseTree. Die dortigen Skript folgen diesem Ablauf:
- Der Alias "dynasty" wird initialisiert mit der aktuellen Dynastie (Schattendynastie oder Farbdynastie).
- Alle Weight()-Funktionen des ersten Ordners werden ausgeführt. Diese Funktionen geben einen Wert zwischen 0 und 100 zurück -- die Gewichtung.
- Aus den Skripten, deren Gewichtung größer 0 ist, wird ein Skript ausgewählt. Je höher die Gewichtung eines Skripts, desto wahrscheinlicher ist die Auswahl dieses Skriptes. Es kann aber nur ein Skript ausgewählt werden.
- Die execute()-Funktion des ausgewählten Skripts wird ausgeführt.
- Falls es einen Ordner mit demselben Namen gibt, wiederholt sich der Ablauf ab (2) für diesen Ordner. Falls das Skript Aliase initialisiert hat, stehen diese auch den weiteren Skripten zur Verfügung.
Generell gilt: Jede Dynastie (außer Spieler) durchläuft nacheinander diese Skripte. Damit ist die Rechenlast durch diese KI bei größeren Karten nicht höher, aber die einzelnen Dynastien treffen weniger Entscheidungen und wirken dadurch ggf. weniger aktiv. ABER: Die Skripte sind recht ineffizient, wenn zuviel Logik in der Weight-Funktion steckt.
Die Dynasty-KI ist gut geeignet für Entscheidungen, die die gesamte Dynastie betreffen. Gerade Aktionen, die die Gunst zu anderen Dynastien beeinflussen sind hier gut aufgehoben. Diese KI ist nicht geeignet für Entscheidungen, die den aktuellen Zustand von Familienmitgliedern oder Angestellten betreffen. In Vanilla wurde hier z.B. die KI der Schergen implementiert. Auch Heilung und Gebäudereparatur sind in anderen Skripten besser aufgehoben.
TWP: Der Entscheidungsbaum wurde aufwendig überarbeitet und beinhaltet jetzt diese Entscheidungsebenen:
- Was steht an? -> Wahl, Gericht, Fehde, Duell, Arbeit, Dynastie
- Was ist zu tun? -> z.B. Angreifen/Verteidigen, Gunst gewinnen, Kinder kriegen, Arbeiten, Expandieren
- Wer kann das erledigen? -> z.B. einer der Ehepartner, der Angeklagte, der Besitzer eines Betriebs, jemand der nichts zu tun hat
Vanilla: Die Entscheidungen sind teilweise recht einfach gestrickt und gehen nach dem Muster:
Wer? -> Was? -> Warum?
Gebäude-KI
TODO
SIM-KI
Die meisten Skripte des Spiels enthalten Aktivitäten einzelner SIMs. Wenn ein SIM im Spiel etwas tut, dann ist das auf diese Arten von Skripten zurückzuführen:
- Measures beschreiben Aktionen, die der SIM aktiv ausführt. Als Spieler wählt man die meisten dieser Aktionen durch Knopfdruck aus. Auch das Bewegen per Mausklick ist ein Measure.
- States beschreiben Zustände des SIM. Ein SIM kann zu einem Zeitpunkt in mehreren States sein und durchläuft dabei jeweils das State-Script. Wird ein State durch eine Aktion unterbrochen, so wird der State anschließend fortgesetzt.
- Behaviours sind Reaktionen der SIMs auf ihre Umwelt. Hier finden sich z.B. die Reaktionen auf Diebstahl, Feuer oder das Schwarze Brett.
Wenn ein SIM "nichts" tut, durchläuft er tatsächlich ein Measure. Für die meisten SIMs ist das das Measure Idle, bei festen NPCs ist es in der Tabelle BuildingNPC.dbt vorgegeben (Spalte behaviour verweist auf ID in Measures.dbt).
Scripts/Measures/Behaviour/std_idle.lua
Das Skript wird für die meisten SIMs ausgeführt, wenn diese nichts anderes zu tun haben. Der SIM wird dann v.a. seine Bedürfnisse erfüllen wie Einkaufen oder einen Gottesdienst besuchen.
TWP: Das Idle-Skript kann sehr gut verwendet werden, um untätige Angestellte mit Arbeitsaufträgen zu versorgen. In TWP ist damit die KI für Gauner-Berufe implementiert, z.B. für Dieb und Dirne. Für diese Berufe greifen die Gebäude-Skripte nicht, weil die KI-Einstellung für "Produktion" nicht aktiviert werden können.