KI ist ein Schlagwort. Der AI-Bot ist eine in C# geschriebene Komponente der Tichu.One-App. Da steckt kein DeepLearning dahinter.
Mit 1750 Zeilen Code ist noch längst nicht das "gute" Spiel erreicht. Zum Vergleich: Die Komponente CardFunctions (ist das ein Fullhouse?, kann ich diese Strasse stechen ...) hat 2500 Zeilen, die Komponente UserInput (Anordnung der Karten auf dem Tisch, Anzeige der Buttons ...) 2000 Zeilen, TichuCore (Spielablauf) 7700 Zeilen und dann gibt es noch weitere 47 Komponenten mit 10 bis ein paar Hundert Zeilen Code.
Die KI-Komponente ist zuständig für:
- Schupfen. Macht sie recht gut entlang einem starren Schema
- Entscheid ob passen oder stechen. Gegner wird meistens gestochen, Partner wird nur bei tiefen Einzelkarten oder tiefen Paaren gestochen.
- Finden der "richtigen" Kombination, wenn der AI-Bot das Ausspielrecht hat. Die Handkarten werden in möglichst wenig Kombinationen eingeteilt und diese Kombinationen gewichtet. Das Vorgehen ist bei nur noch 2 Kombinationen anders als bei 3 oder 4 Kombinationen und dies wiederum anders als bei 5 oder mehr nötigen Abwürfe. Natürlich spielen Ansage dabei eine Rolle und auch die Anzahl Karten der Mitspieler. Hier liegt das grösste Verbesserungspotential der KI-Komponente.
- Werfen einer allfälligen Bombe. Nur bei 3-2-1. Oft wird die Bombe zu spät geworfen.
- Ansage eines (G)Tichu
Mein Ziel ist, die KI so zu verbessern, dass sie etwas besser spielt als 50% der Spieler/innen. Das ist noch ein weiter Weg, da mein zweites Ziel ist, dass die Entscheide den Menschen einleuchten. Darum kennt die KI die Karten der Mitspieler nicht und merkt sich auch nicht alle Karten, die bereits gespielt worden sind. Das kann nur ein Computer oder ein paar wenige Autisten.
Seit Sommer 2024 konsultiert die KI eine umfangreiche Tabelle mit Wahrscheinlichkeiten, dass bei gegebenem Kontext (Ansage, Anzahl Karten aller Spieler) eine bestimmte Kombination gestochen wird. Diese belastbaren Wahrscheinlichkeitswerte aus 21 Millionen Runden von Brettspielwelt haben keine spürbare Verbesserung der KI-Stärke gebracht. Vorher hatte ich grobe Schätzungen in der Form
case "2": return 0.1f + 0.06f * comboValue; // 22 => 22%, 99 => 64%, KK => 94%
Die grösste der Stärke der KI ist: sie spielt ohne Emotionen; die grösste Schwäche: sie spielt schematisch. Ein bisschen Abweichung ist allerdings einprogrammiert., beispielsweise wenn der Gegner ein Ass mit dem Phoenix sticht, so wird gewürfelt ob der KI-Drache gespielt wird oder nicht; unabhängig von einer weiteren Bewertung (ausser in der Endspielphase).
Mit 1750 Zeilen Code ist noch längst nicht das "gute" Spiel erreicht. Zum Vergleich: Die Komponente CardFunctions (ist das ein Fullhouse?, kann ich diese Strasse stechen ...) hat 2500 Zeilen, die Komponente UserInput (Anordnung der Karten auf dem Tisch, Anzeige der Buttons ...) 2000 Zeilen, TichuCore (Spielablauf) 7700 Zeilen und dann gibt es noch weitere 47 Komponenten mit 10 bis ein paar Hundert Zeilen Code.
Die KI-Komponente ist zuständig für:
- Schupfen. Macht sie recht gut entlang einem starren Schema
- Entscheid ob passen oder stechen. Gegner wird meistens gestochen, Partner wird nur bei tiefen Einzelkarten oder tiefen Paaren gestochen.
- Finden der "richtigen" Kombination, wenn der AI-Bot das Ausspielrecht hat. Die Handkarten werden in möglichst wenig Kombinationen eingeteilt und diese Kombinationen gewichtet. Das Vorgehen ist bei nur noch 2 Kombinationen anders als bei 3 oder 4 Kombinationen und dies wiederum anders als bei 5 oder mehr nötigen Abwürfe. Natürlich spielen Ansage dabei eine Rolle und auch die Anzahl Karten der Mitspieler. Hier liegt das grösste Verbesserungspotential der KI-Komponente.
- Werfen einer allfälligen Bombe. Nur bei 3-2-1. Oft wird die Bombe zu spät geworfen.
- Ansage eines (G)Tichu
Mein Ziel ist, die KI so zu verbessern, dass sie etwas besser spielt als 50% der Spieler/innen. Das ist noch ein weiter Weg, da mein zweites Ziel ist, dass die Entscheide den Menschen einleuchten. Darum kennt die KI die Karten der Mitspieler nicht und merkt sich auch nicht alle Karten, die bereits gespielt worden sind. Das kann nur ein Computer oder ein paar wenige Autisten.
Seit Sommer 2024 konsultiert die KI eine umfangreiche Tabelle mit Wahrscheinlichkeiten, dass bei gegebenem Kontext (Ansage, Anzahl Karten aller Spieler) eine bestimmte Kombination gestochen wird. Diese belastbaren Wahrscheinlichkeitswerte aus 21 Millionen Runden von Brettspielwelt haben keine spürbare Verbesserung der KI-Stärke gebracht. Vorher hatte ich grobe Schätzungen in der Form
case "2": return 0.1f + 0.06f * comboValue; // 22 => 22%, 99 => 64%, KK => 94%
Die grösste der Stärke der KI ist: sie spielt ohne Emotionen; die grösste Schwäche: sie spielt schematisch. Ein bisschen Abweichung ist allerdings einprogrammiert., beispielsweise wenn der Gegner ein Ass mit dem Phoenix sticht, so wird gewürfelt ob der KI-Drache gespielt wird oder nicht; unabhängig von einer weiteren Bewertung (ausser in der Endspielphase).
Zuletzt bearbeitet: