You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Aus der Spielabnahme vom 2026-08-18 (Arbeitsstand e650864, macOS Editor). Befund des Projektinhabers beim Spielen, nicht aus einem Testbericht.
@arn-c0de — das betrifft den Einheitenstrang. Scripts/AI/ und Scripts/AI.Data/ liegen in deiner Schreibhoheit (13-15_Parallelbetrieb.md, Tabelle „Schreibhoheit"), deshalb ein Issue statt eines PR von uns.
Beobachtung
Beim Spielen gegen die Skirmish-KI:
Der Sammelplatz ist ein Freifahrtschein. Ich fahre mit einem einzelnen Panzer zum Aetheriumfeld der KI und erschieße dort Einheit um Einheit. Es standen KI-Einheiten in der Nähe — zurückgeschossen hat niemand, nachgerückt ist auch niemand.
Der Harvester wird nicht bewacht. Er erntet unter Beschuss weiter, bis er stirbt. Kein Begleitschutz, keine Reaktion, kein Rückzug.
Spielerisch ist das der billigste Sieg im Spiel: die KI verliert ihre Wirtschaft und beliebig viele Einheiten, ohne dass ein einziger Schuss zurückkommt. Der Harvester ist die teuerste und wichtigste Nicht-Kampfeinheit — dass er unbewacht ist, hebelt die gesamte Verknappungsmechanik aus #80/D-102 aus.
Warum das so ist — der Code beantwortet beides
1. Die Verteidigungsregel kennt nur das HQ
DefendHome (r8, PR #96) ist die einzige Regel, die eine KI-Einheit von der Wellensammlung abzieht. Ihr Auslöser ist ausschließlich ein Radius um die HQ-Zelle:
Der Docstring derselben Methode sagt es wörtlich und war damals bewusst so entschieden:
„Around the headquarters, not around any building: the entity scan has that cell in hand, the observed and measured case is the one at the headquarters […] If the measurement later shows attacks on the refinery going through the same way, that arrives as its own number."
Das ist die Messung. Ein Angriff am Aetheriumfeld — bei der kanonischen Kartenlage weit außerhalb von 10 Zellen um das HQ — hebt HomeThreatened nie, also fällt in ResolveGoal nie DefendHome, und jede wartende Einheit bleibt bei Hold am Sammelpunkt stehen. Es gibt in GoalKind schlicht kein Ziel, das „mein Harvester wird beschossen" heißt.
2. Der Harvester selbst hat keine Reaktion
Die KI behandelt Harvester ausschließlich als Wirtschaftsobjekt: untätige Harvester bekommen ein HarvestPayload auf das nächste nicht erschöpfte Feld (SkirmishAiSystem.cs:306 und :447). „Wird beschossen" kommt in diesem Pfad nicht vor — es gibt weder Flucht noch Feldwechsel noch einen Hilferuf.
3. Warum auch die Nebenstehenden schweigen
Die Auto-Zielerfassung aus D-087 wäre der eine Mechanismus, der ohne KI-Regel zurückschießt — sie greift aber nur unter zwei Bedingungen:
Also: nur ohne gültigen Angriffsbefehl und nur innerhalb der eigenen Waffenreichweite. Beides passt zum Beobachteten — eine Einheit ein paar Zellen neben dem Feld ist außer Reichweite, und nichts in der KI bringt sie näher heran; eine Einheit mit stehendem Auftrag aus einer früheren Welle wird gar nicht erst umgelenkt. Welcher der beiden Fälle es im konkreten Lauf war, sollte einmal am Lab/DebugHud nachgesehen werden, bevor die Regel gebaut wird — davon hängt ab, ob es eine reine Zielregel braucht oder auch eine Bewegung.
Was wir uns wünschen (Ausgestaltung liegt bei dir)
Kein fertiger Entwurf, sondern die Wirkung, die im Spiel fehlt:
Ein Angriff auf einen eigenen Harvester löst eine Reaktion aus. Nicht „immer bewachen" — ein dauerhaft abgestellter Begleitschutz ist eine Balancing-Entscheidung, die niemand getroffen hat. Aber wenn geschossen wird, muss etwas passieren.
Der Sammelplatz ist verteidigt, wenn dort gekämpft wird — im Zweifel über dieselbe Mechanik, die DefendHome schon hat, nur mit einem zweiten Ankerpunkt (Feld/Raffinerie) statt nur dem HQ.
Der Harvester ist unter Beschuss nicht wehrlos-dumm — Ausweichen, Feldwechsel oder Rückzug zur Raffinerie sind alle akzeptabel; „weiterernten bis tot" ist es nicht.
Was dabei zu beachten ist (aus dem Bestand, nicht als Vorgabe)
GoalKind-Werte werden angehängt, nie umnummeriert. Der Enum-Docstring begründet das ausführlich: die Zahl steht als blanke Ganzzahl in goals.ndjson, Umnummerieren würde jeden aufgezeichneten Lauf still umetikettieren.
Die Prioritätsreihenfolge ist die Testreihenfolge in ResolveGoal, nicht der Zahlenwert. Wo eine neue Regel zwischen Retreat, DefendHome und Attack einsortiert wird, ist die eigentliche Design-Entscheidung.
DefendBase ist an genau dieser Stelle schon einmal gescheitert (Verhaltensjournal V002): ein bewegliches Ziel erzeugte jeden Entscheidungstakt einen frischen Befehl für jede Einheit, +23 % Intents und ein schlechteres Match. Der Harvester bewegt sich — das ist die Falle dieses Issues. Das Feld bzw. die Raffinerie steht still und ist der naheliegende statische Anker.
Ein Regelschalter gehört ins Profil, so wie DefendHomeCells es vorgemacht hat — AiProfile.ProfileHash bewegt sich damit ohnehin.
Das bewegt den Ausgangspin.CanonicalAiOutcomeTests (Netzstrang, D-101) hält Entscheidungstick und Endzustand der kanonischen KI-Partie; SkirmishAiTests.AiBehaviorId_TracksWhichAiThisIs gehört dir. Neue Baseline bitte ansagen, damit das Merge-Fenster mit dem Netzstrang abgestimmt ist.
Abnahmekriterium
Ein einzelner Panzer am Aetheriumfeld der KI darf dort nicht mehr risikolos abernten: er bekommt Feuer, oder das Ziel weicht aus. Nachweisbar am Lab-Lauf (Verluste beider Seiten am Feld) und in einer gespielten Runde.
Aus der Spielabnahme vom 2026-08-18 (Arbeitsstand
e650864, macOS Editor). Befund des Projektinhabers beim Spielen, nicht aus einem Testbericht.@arn-c0de — das betrifft den Einheitenstrang.
Scripts/AI/undScripts/AI.Data/liegen in deiner Schreibhoheit (13-15_Parallelbetrieb.md, Tabelle „Schreibhoheit"), deshalb ein Issue statt eines PR von uns.Beobachtung
Beim Spielen gegen die Skirmish-KI:
Spielerisch ist das der billigste Sieg im Spiel: die KI verliert ihre Wirtschaft und beliebig viele Einheiten, ohne dass ein einziger Schuss zurückkommt. Der Harvester ist die teuerste und wichtigste Nicht-Kampfeinheit — dass er unbewacht ist, hebelt die gesamte Verknappungsmechanik aus #80/D-102 aus.
Warum das so ist — der Code beantwortet beides
1. Die Verteidigungsregel kennt nur das HQ
DefendHome(r8, PR #96) ist die einzige Regel, die eine KI-Einheit von der Wellensammlung abzieht. Ihr Auslöser ist ausschließlich ein Radius um die HQ-Zelle:Der Docstring derselben Methode sagt es wörtlich und war damals bewusst so entschieden:
Das ist die Messung. Ein Angriff am Aetheriumfeld — bei der kanonischen Kartenlage weit außerhalb von 10 Zellen um das HQ — hebt
HomeThreatenednie, also fällt inResolveGoalnieDefendHome, und jede wartende Einheit bleibt beiHoldam Sammelpunkt stehen. Es gibt inGoalKindschlicht kein Ziel, das „mein Harvester wird beschossen" heißt.2. Der Harvester selbst hat keine Reaktion
Die KI behandelt Harvester ausschließlich als Wirtschaftsobjekt: untätige Harvester bekommen ein
HarvestPayloadauf das nächste nicht erschöpfte Feld (SkirmishAiSystem.cs:306und:447). „Wird beschossen" kommt in diesem Pfad nicht vor — es gibt weder Flucht noch Feldwechsel noch einen Hilferuf.3. Warum auch die Nebenstehenden schweigen
Die Auto-Zielerfassung aus D-087 wäre der eine Mechanismus, der ohne KI-Regel zurückschießt — sie greift aber nur unter zwei Bedingungen:
Also: nur ohne gültigen Angriffsbefehl und nur innerhalb der eigenen Waffenreichweite. Beides passt zum Beobachteten — eine Einheit ein paar Zellen neben dem Feld ist außer Reichweite, und nichts in der KI bringt sie näher heran; eine Einheit mit stehendem Auftrag aus einer früheren Welle wird gar nicht erst umgelenkt. Welcher der beiden Fälle es im konkreten Lauf war, sollte einmal am Lab/
DebugHudnachgesehen werden, bevor die Regel gebaut wird — davon hängt ab, ob es eine reine Zielregel braucht oder auch eine Bewegung.Was wir uns wünschen (Ausgestaltung liegt bei dir)
Kein fertiger Entwurf, sondern die Wirkung, die im Spiel fehlt:
DefendHomeschon hat, nur mit einem zweiten Ankerpunkt (Feld/Raffinerie) statt nur dem HQ.Was dabei zu beachten ist (aus dem Bestand, nicht als Vorgabe)
GoalKind-Werte werden angehängt, nie umnummeriert. Der Enum-Docstring begründet das ausführlich: die Zahl steht als blanke Ganzzahl ingoals.ndjson, Umnummerieren würde jeden aufgezeichneten Lauf still umetikettieren.ResolveGoal, nicht der Zahlenwert. Wo eine neue Regel zwischenRetreat,DefendHomeundAttackeinsortiert wird, ist die eigentliche Design-Entscheidung.DefendBaseist an genau dieser Stelle schon einmal gescheitert (Verhaltensjournal V002): ein bewegliches Ziel erzeugte jeden Entscheidungstakt einen frischen Befehl für jede Einheit, +23 % Intents und ein schlechteres Match. Der Harvester bewegt sich — das ist die Falle dieses Issues. Das Feld bzw. die Raffinerie steht still und ist der naheliegende statische Anker.CommandKind. Das Register ist eingefroren (13-15_Parallelbetrieb.md); ein „Bewachen"-Befehl im Spielersinn ist „Bewachen"-Befehl für Eskorten — Folge der langen Harvester-Wege #90 und braucht erst eine Registerentscheidung. Für die KI genügen bestehende Move-/Attack-Payloads.DefendHomeCellses vorgemacht hat —AiProfile.ProfileHashbewegt sich damit ohnehin.CanonicalAiOutcomeTests(Netzstrang, D-101) hält Entscheidungstick und Endzustand der kanonischen KI-Partie;SkirmishAiTests.AiBehaviorId_TracksWhichAiThisIsgehört dir. Neue Baseline bitte ansagen, damit das Merge-Fenster mit dem Netzstrang abgestimmt ist.Abnahmekriterium
Ein einzelner Panzer am Aetheriumfeld der KI darf dort nicht mehr risikolos abernten: er bekommt Feuer, oder das Ziel weicht aus. Nachweisbar am Lab-Lauf (Verluste beider Seiten am Feld) und in einer gespielten Runde.
Zusammenhänge
DefendHomeeingeführt — das hier ist der zweite Fall, den derselbe Docstring bereits ankündigt