[Hearts of Iron IV]Entwicklertagebuch 54 - KI

Die Entwicklertagebücher und Anderes

Moderator: Moderatoren

Benutzeravatar
Marvin
Tribunus Angusticlavius
Tribunus Angusticlavius
Beiträge: 3726
Registriert: 2. Dezember 2010 19:43
:
AAR-Schreiber Teilnahme an einem Contest Pfeiler der Community Großspender Gewinner Userwahl Ein Danke vom Team SZ

[Hearts of Iron IV]Entwicklertagebuch 54 - KI

Beitragvon Marvin » 30. April 2016 08:43

https://forum.paradoxplaza.com/forum/in ... ai.924168/

Zwei große KI-Probleme in HoI IV
1: In einem dynamischen Sandbox-Spiel historische Plausibilität bewahren
2: Die Ausführung der Schlachtpläne soll sich vorteilhaft anfühlen

Für den ersten Punkt gibt es ein paar Sachen, die die KI von HoI von anderen PDX Titeln unterscheidet. Da das Spiel chronologisch deutlich kompakter und die historischen Hintergründe noch nicht so lange her sind, erwarten Spieler verschiedene Dinge von der HoI KI. Hearts of Iron IV ist zwar mehr Sandbox-orientiert als der dritte Teil, ist es doch historisch und die verschiedenen Nationen hatten Gründe für die Entscheidungen, die sie getroffen haben. Das Problem war es, eine KI zu entwerfen, die dynamisch auf neue Situationen in einer Art und Weise reagierien kann, die Sinn ergibt, egal wie historisch die Umstände sind.

Als Lösung haben wir eine dynamische KI als Grundlage und diverse Spielmechaniken, die Nationen in ihre historische Richtung drängen. Ein wichtiger Faktor hierfür ist natürlich das Fokus-System. Damit lenken wir sowohl Spieler als auch die KI vor und während dem großen Krieg. Die KI wählt ihre Foki entweder fest gescripted, wenn das Spiel historisch gespielt wird, das ist voll modbar aber es gibt auch eine Einstellung für die historischen Skripte. Ist dieser Modus nicht aktiv, wählt die KI ihre Foki aus scripted weights und einem dynamischen System abhängig von der Situation der Nation.

Das dynamische System mit scripted weights bestimmt alle Teile der KI. Neben den 200 einstellbaren Werten, die verschiedene Aspekte der KI bestimmt, gibt es noch das Triggersystem aus dem Modding Entwicklertagebuch. Es gibt praktisch keine Aspekte der KI die man nicht durch Defines, Anpassung der weights oder beidem beeinflussen kann.

Z.B. die Wahrscheinlichkeit, dass Österreich den Anschluss akzeptiert:

Code: Alles auswählen

ai_chance = {
    base = 30
    modifier = {
        add = -25
        GER = { has_army_size = { size < 20 } }
    }
    modifier = {
        factor = 10
        GER = { has_army_size = { size > 19 } }
    }
}


Deutsche Reaktion, wenn sie ablehnen.

Code: Alles auswählen

anschluss_rejected = {

    # Conditions
    enable = {
        tag = GER
        has_completed_focus = GER_anschluss
        country_exists = AUS
    }
    abort = {
        NOT = {
            country_exists = AUS
        }
    }
 
    # Modification if strategy is enabled
    ai_strategy = {
        type = antagonize
        id = "AUS"         
        value = 300
    }     
}


Außerdem gibt es für die Beziehung zwischen Nationen noch Modifikatoren. Diese können via Minister, Gesetzer oder Anführer-Eigenschaften eingesetzt werden. Das heißt, dass die Interaktionen zwischen Nationen nicht nur von der Ideologie sondern auch von den Männern an der Macht bestimmt. Eine solche Eigenschaft könnte z.B. so aussehen.

Code: Alles auswählen

warrior_code = {
    random = no
    ai_call_ally_desire_factor = -40
}


Or this:

Code: Alles auswählen

warmonger = {
    random = no
    ai_focus_aggressive_factor = 0.5
}


Es gibt für Modder auch die Möglichkeit für bestimmte Nationen höheren Fokus auf bestimmte Division zu legen. Außerdem kann das dynamische System z.B. auch von selbst passende Divisionen für überschüssige Ausrüstung anlegen.
Auch die Bewertung von verschiedenen Friedensoptionen ist sowohl abhängig von Nation als auch Ideologie voll skriptbar. Vielen Dank hierfür an Groogy.


Die zweite Herausforderung, die Schlachtpläne. Wenn man der KI die Kontrolle über ein System überlässt, muss man sich immer Gedanken über dessen Schwächen machen. Wenn eine KI seine eigene Truppenaufstellung versaut, wird nicht viel passieren, läuft aber was mit den Einheiten des Spielers schief, führt das zu Frustration.
Dies soll vor allem über das Design geregelt werden, das System soll keinen "Gewinne Krieg" Knopf darstellen, sondern ein Werkzeug sein um große ARmeen zu organisieren ohne sich um jedes Detail kümmern zu müssen. Sowohl die KI als auch der Spieler werden kritische Operationen leiten, aber sie müssen sich keine Gedanken über offensichtliche Situationen machen und haben damit mehr Möglichkeiten sich um größere Armeen und Operationen zu kümmern. Die internen Abläufe der KI sind allgemein simpler gehalten und haben damit weniger Punkte an denen etwas schief gehen kann. Es war harte Arbeit, aber hat sich gelohnt!

Lasst uns einen Blick in den Kopf der KI werfen.
Hier hat das Deutsche gerade Polen den Krieg erklärt. Der Tooltip beschreibt die allgemeine Einsetllung ggü andere Nationen. Das Deutsche Reich mag seine benachbarten Demokratien nicht, aber unterstützt seine faschistischen Fraktionsmitglieder.

Bild

Die Niederlande fühlen sich vom Deutschen Reich bedroht und wollen es entweder geschwächt sehen oder sein Freund sein, haben aber auf jeden Fall Angst sie direkt verägern.

Bild

Wenn wir nach Englands Einstellung ggü den Niederlanden schauen, sehen wir, dass sie sie beschützen wollen.

Bild

Da England aber gerade dem Deutschen Reich den Krieg erklärt hat, wollen die Niederlande nicht wirklich den Alliierten beitreten, da das die Gefahr seitens des Deutschen Reiches erhöhen würde.

Bild

Und am Ende schauen wir uns die Befehlskette der KI an. Man muss hier bedenken, dass viele Gruppen sich die Truppen teilen und am Ened mit weniger als sie wollen oder brauchen auskommen müssen, wenn andere Gruppen eine höhere Priorität haben.

Bild

Welche Arten von Truppen in welcher Reihenfolge enden ist ebenso dynamisch, aber ich h abe keinen tollen Tooltip zum Zeigen dazu.

Der stolzeste Moment eines jeden KI-Programmierers ist es, wenn die eigene KI einen auf unerwartete Weise besiegt. Ich hatte solch eine Moment vor zwei Wochen als das Deutsche Reich. Ich hatte ohne Probleme durch überlegene Plannung und Bewaffnung Westeuropa übernommen. Da ich England vor dem Ostfeldzug erobern wollte, habe ich meine Küste befestigt, falls die Alliierten D-Day Ambitionen hatten, auch die Grenze zur SU wurde befestigt und der Rest meiner Ressourcen wurde für den Aufbau einer Marine-Invasion verwendet. Dann schafften es England und die USA sowohl die italienische als auch die spanische Küstenverteidigung zu überwältigen und einen Brückenkopf zu errichten. Bis meine Truppen zur Unterstützung ankamen hatten USA & UK beretis deutlich mehr Truppen stationiert und überwältigten auch meine Truppen. Einer von Beiden wäre noch gegangen, aber beide zusammen mit einem ordentlichen Brückenkopf waren zuviel.
Abgesehen davon sind meine besten Tage wenn Da9l (HoI4 Streams) mir erzählt, dass die KI ihn besiegt oder zumindest zum Ändern seiner Pläne gezwungen habe.

Ein paar allgemeine Infos:
  • Es gibt kein "Hard Coding" außerhalb der Skripts. Es gibt nirgends Code-zeilen nach dem Prinzip "Ist Nation X, tue Y"
  • Die dynamische KI cheatet nicht. Sie nutzen dieselben Infos wie der Spieler, inklusiver Schätzungen feindlicher Truppenstärke basierend auf Geheimdienstinfos.
  • Mit Ausnahme dem Fördern von Parteibeliebtheit, gibt es kein Feature, dass die KI nicht nutzen darf. Dies ist mehr ein Sandbox-Feature für den Spieler. Wir mussten sie auch in Sachen Coups anzetteln begrenzen.

Vielen Dank hierbei auch an Wiz, unserem KI-Chef und Groogy der immer aushalf, wenn die Arbeit zu viel für eine Person wurde. Außerdem möchte ich mich bei allen Beta-Testern bedanken, die viel Feedback und Unterstützung geliefert haben.
I'm insane. What's his excuse?
Deutsche Paradox Livestreams: https://twitch.tv/legendarymarvin

Benutzeravatar
Hjalfnar
Tribunus Laticlavius
Tribunus Laticlavius
Beiträge: 6683
Registriert: 29. März 2012 08:11
Wohnort: Hannover
:
User des Monats AAR-Schreiber Gewinner Userwahl

Re: [Hearts of Iron IV]Entwicklertagebuch 54 - KI

Beitragvon Hjalfnar » 30. April 2016 11:30

Hui, das klingt nach deutlich mehr Schraubmöglichkeiten für Modder...
"So sleep soundly in your beds tonight...for judgement is coming for you at first light! I'm the hand of god, I'm a dark messiah, I'm the vengeful one!" - Disturbed

Benutzeravatar
Ardrianer
Tribunus Laticlavius
Tribunus Laticlavius
Beiträge: 6035
Registriert: 22. November 2010 14:19
Wohnort: Sachsen
:
Teilnahme an einem Contest Modder Gewinner Userwahl

Re: [Hearts of Iron IV]Entwicklertagebuch 54 - KI

Beitragvon Ardrianer » 30. April 2016 12:41

Mal schauen, wie es schließlich in der Praxis aussieht.
Bild
Brothers of War Clan - Der Clan mit dem Möp
Aktiv auf Twitter und Bluesky.

SCool
Sagittarius
Sagittarius
Beiträge: 67
Registriert: 30. Juli 2013 16:05

Re: [Hearts of Iron IV]Entwicklertagebuch 54 - KI

Beitragvon SCool » 30. April 2016 22:13

Das klingt tatsächlich zu gut, als dass es wahr sein könnte. Das könnte den Entwicklern noch um die Ohren gehauen werden, wenngleich die Informationen ja implizieren, dass die Entwicklicher das Problem erkannt, dass bisweilen die Herausforderung nicht bestand, weil die KI gewisse Operationen und taktische Züge nicht durchführen kann (HOI 3).

Interessanter ist für mich, dass man das Spiel nicht so exakt-historisch spielen muss und die KI (angeblich) dynamischer Situationen einschätzen und dann überraschender handeln. Ohne solch ein System, ist HOI3 für mich hinsichtlich der Langzeitmotivation schwach.

Benutzeravatar
Xylli
Hastatus Posterior
Hastatus Posterior
Beiträge: 980
Registriert: 27. Juli 2012 16:37
Wohnort: Zuhause =)

Re: [Hearts of Iron IV]Entwicklertagebuch 54 - KI

Beitragvon Xylli » 1. Mai 2016 00:39

Hjalfnar hat geschrieben:Hui, das klingt nach deutlich mehr Schraubmöglichkeiten für Modder...

Noch dazu die Modding Tools =D
Bild