The Shape of Card Games: Erforschung von Struktur, Dynamik und Mechanismen von Kartenspielen

  • Beim Thema LAMA fiel mir The Shape of Card Games ein. In diesem Projekt analysieren Mark Goadrich und sein Team verschiedene Kartenspiele u. a. mit Hilfe von Simulationen und versuchen diese ein Stück weit zu quantifizieren – oder in seinen Worten:

    … is an attempt to quantify the mechanics, genres, strategy, and tactics found across many different types of card games. Each week, we'll discuss a different game, showing how the rules can be captured with RECYCLE and simulations with both random and AI players in CardStock can sketch out the heuristics of the game.

    For the past four years, I’ve been working with some amazing students (Connor Bell, Colin Shaddox, Anna Holmes, and Daniel Sweeney) to build a card game simulation engine called CardStock, along with a new language for programming card games named RECYCLE. This blog is a culmination and continuation of this research project investigating the structure, dynamics, and mechanics of card games.

    Dabei stellen sie sich u. a. diese Fragen:

    At a minimum, is each game fair, balanced, and interesting?

    Can we cluster card games by their rules, structure, or behavior?

    What AI techniques are most feasible for general card game playing?

    Can insights from studying natural card game evolution help computers create new games?

    What are appropriate heuristics for evaluating card games?


    Eines der bisher betrachteten Spiele ist LAMA (LAMA: Coding, LAMA: One Round). Zwar fehlt noch die Analyse des kompletten Spiels, aber auch jetzt schon gibt es ein paar interessante Ergebnisse, wie z. B. den Average Trend Graph für eine Runde:

  • Danke für den Link; die Seite wird gleich gebookmarkt. Hoch interessant - erstaunlich, was man alles analysieren kann: Am besten finde ich den "Drama"-Wert. :)

  • Guter Ansatz, hatte auch mal so ein ähnliches Schema für Spiele allgemein.


    Aber entgegen der Beschriftung sieht es so aus, als würde die AI genauso oft gewinnen, wie man es bei purem Zufall erwarten würde. 50% bei 2 Spielern, 1/3 bei 3 Spielern, usw....


    Trotz der Zufallsbestimmtheit des Spieles würde ich für eine gute AI höhere Werte erwarten.


    Ok, Graph falsch gelesen, aber wo ist nun der AI Wert genau? Ich werde aus der Darstellung nicht schlau. Ist das ein Bereich, oder was ist da dargestellt?

  • Aber entgegen der Beschriftung sieht es so aus, als würde die AI genauso oft gewinnen, wie man es bei purem Zufall erwarten würde. 50% bei 2 Spielern, 1/3 bei 3 Spielern, usw....

    Trotz der Zufallsbestimmtheit des Spieles würde ich für eine gute AI höhere Werte erwarten.

    Ich gehe davon, dass du es nur falsch verstanden hast. Falls du die LAMA Random Win Rate meinst: Da geht’s nur darum, ob Position 1 häufiger gewinnt als die anderen. (Es sind alles AIs.)

  • Ok, das war AI gegen Random:


    Boxplot-Kurzfassung: rotes Dreieck = Mittelwert, grüne Linie = Median, Box = 2. und 3. Quartil, unten und oben 1. und 4. Quartil mit Extremwerten


    Details auch in Heuristics Overview.

    Einmal editiert, zuletzt von yzemaze () aus folgendem Grund: unten <-> oben

  • Urgs, Boxplots. Da werden Alpträume wiedererweckt...

    Wieso das denn? Gibt nichts besseres, um auffällige Sachen an Verteilungen mit einem Blick zu sehen. In den Plots oben fällt z.B. sofort auf, dass die grüne Linie, vermutlich der Median, mehrfach auf den Quartilen sitzt, was direkt die Fragen nach Stichprobengröße und Wertebereich des Messwertes aufwirft.

  • Was heißt "random"? Dass man einen zufällig bestimmten erlaubten Zug macht, incl. Karte ziehen, wenn man eine Handkarte ausspielen könnte?

    Die Vermutung liegt nahe. Ich habe nicht in alle Bereiche der oben verlinkten CardStock Doku geguckt. Vermutlich ließe sich dort eine genauere Beschreibung finden, falls nicht wird wohl ein Blick in den Quellcode oder eine Frage an die Autoren nötig sein.

    Boxplots. Da werden Alpträume wiedererweckt...

    Sag nix gegen Boxplots! Nur für dich einer zum Genießen ;) Mehr sind dort verlinkt :P

    In den Plots oben fällt z.B. sofort auf, dass die grüne Linie, vermutlich der Median, mehrfach auf den Quartilen sitzt, was direkt die Fragen nach Stichprobengröße und Wertebereich des Messwertes aufwirft.

    Jap. Ich hatte ad hoc nichts dazu gefunden, aber auch nicht tiefer gebuddelt. (Wenn’s nicht der Median wäre, wäre das gegen sämtliche Konventionen …)

    PS: Bei den anderen Spielen sehen die Boxplots „normal“ aus. Ich werde mal nachhaken …

    Einmal editiert, zuletzt von yzemaze ()

  • Die Vermutung liegt nahe.

    Das vermute ich auch und dann ist das, mit Verlaub gesagt, ziemlicher Käse. Die Referenz müsste ein Basis-Algorithmus sein, so etwa in folgender Art:

    • Spiel, wenn möglich, eine Karte des ausliegende Wertes. Ansonsten:
    • Spiel, wenn möglich, eine Karte des nächsthöheren Wertes. Ansonsten:
    • Wenn ein Mitspieler nur noch eine Karte hat, steige aus. Ansonsten:
    • Ziehe eine Handkarte nach.

    Ich bin mir ziemlich sicher, dass gute Spieler und auch eine gute AI deutlich besser als dieser Basis-Algorithmus sein können.


    Wenn man mit AI Leistungen argumentiert, dann sollte wirklich sowas in dieser Basis-Algorithmus-Art die Referenz sein, die es zu schlagen gilt, und nicht zufälliges Spielen der Sorte "ich könnte zwar mein einziges Lama ablegen, aber, och, ich ziehe dann mal lieber eine Karte nach". Zu zeigen, dass eine AI besser performt als sich selbst ins Knie schießen, das ist keine große Leistung.

  • Es zeigt zumindest das ein irgendwie planvolles Vorgehen einen Unterschied zum puren Zufall macht.


    Aber ähnlich wie beim Nachweis der Fairness, ist das natürlich nicht ausreichend für weitere Aussagen. Ich gehe davon aus das bei Fairness auch komplett Random gespielt wurde. Das heißt aber eben nicht, das es nicht doch einen Startspielervorteil gibt.


    Eine Näherung wäre die KI an jeder Position einmal spielen zu lassen, und zu sehen ob an einer Position ein reproduzierbarer Ausreißer bei der Gewinnwahrscheinlichkeit ist.

  • MetalPirate

    Schau halt in die Doku (AIPlayer) oder den Quellcode. Wenn das nicht hilft, kannst du ja dort kommentieren und entsprechende Methoden anregen.

    Die Antwort bzgl. Boxplots kam binnen 12 Minuten:

    To calculate win probability, I took the 100 simulations and divided them into 10 groups of 10. This means the estimates are a little rough, with large deviations in the box plots, but this was enough to get me started. Ultimately, I plan to run 1000 simulations to get more precise estimates, and will update the post when I get these results.