KI - Echt oder mogeln?

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von nafets.

    KI - Echt oder mogeln?

    Diese Frage quält mich noch ein wenig und ich hoffe, dass mir Jemand helfen kann. Derzeit bastel ich an einem Onlinekartenspiel, welches normalerweise zu zweit gespielt wird. Nun gibt es natürlich eine Menge Menschen, die vielleicht keine Lust haben gegen einen Freund zu spielen. Deshalb habe ich mich für eine KI-Variante entschieden.

    Die Regeln des Spieles sind sehr umfangreich und es müssen eine Menge Faktoren beachtet werden.

    Jede Karte hat einen Angriffswert, ein Special (unterschiedlich), ist zudem unter 3 Kategorien unterteilt, die bestimmen auf welches Feld die Karte im Spiel gelegt wird. Zusätzlich können die Karten von anderen Karten beeinflusst werden oder auch zerstört, verschoben etc..

    Meine Frage ist relativ simpel. Im Grunde läuft das ganze Spiel auf dem Server ab, so auch die KI. Meine Frage ist, nehme ich zur Berechnung für einen Sieg, einfach die Karten der KI, des Spielers und lasse die KI (wenn es möglich ist) einfach gewinnen oder versuche ich möglichst eine echt KI zu bauen, die mitunter lernfähig ist und die Karten des Gegners nur "vermutet" (ich also der KI nicht mitgebe, welche Karten der Gegner genau hat)?

    Macht es Sinn, Wahrscheinlichkeiten anhand vergangener Spiele mit VB zu realisieren und die Ergebnisse der letzten Spiele nicht nur als Ergebnisse zu schicken, sondern auch direkt für die KI auswerten zu lassen, damit sie immer neue Verhaltensmuster lernt? Oder wäre sie dann einfach unschlagbar?

    Ein Lösungsansatz, eine Idee oder vielleicht auch nur eine Meinung, welche Variante besser sein könnte, ist sehr Willkommen!
    Nun, mogeln ist immer so 'ne Sache... Würde ich nicht gut finden.
    Dem Spieler würde ja die Lust vergehen, wenn er immer wieder verliert, weil die KI einfach den Vorteil genießen könnte, zu wissen, welche Karten der Spieler hat.

    Ich würde versuchen es so zu realisieren, dass die KI anhand der gespielten Karten reagiert-
    die nächste Frage aber ist; Weiß man ungefähr welche Karten jemand haben könnte?
    Wenn ja, woher? Gibt es vordefinierte Decks, wie genau würde sich das ausüben? Sieht man die vor Beginn der Runde?

    Grüße
    Option Strict On!
    Jeder Spieler kann bis zu 255 Karten "besitzen". Es müssen mindestens 22 Karten im Deck sein. Nach oben ist das ganz allerdings offen. Ein Spieler kann auch mit einem 255er Deck antreten.

    Jedes Spiel wird mit 10 Karten gespielt (die aus dem Deck gezogen wurden) und einem Nachziehstapel von 30 Karten + eine Spezialkarte.

    Deshalb ist es für eine KI relativ schwer die Karten zu erahnen. Ich finde es gut, dass Du auch für eine echt KI bist. Das gleiche denke ich mir auch.

    Zusätzlich geht das Spiel allerdings über mindestens 2 oder aber auch 3 Runden, denn 2 müssen gewonnen werden. Es ist unheimlich schwer für die KI zu wissen, wann sie beispielsweise passen sollte oder eben nicht.

    Man kann das zwar an ein paar Eckpunkten ausmachen, jedoch finde ich das ganze Procedere doch recht komplex.
    Ich würde den Computergegner "einfach" anhand der eigenen Karte reagieren lassen.
    Die Karten könnten ein "Ranking" haben so das der CP anhand des Rankings festmachen kann ob die eigene Karte im globalen Vergleich gut oder schlecht ist.
    Dann könnte er ja nachdem wie die Karte gerankt ist reagieren.
    In die Außwertung des Rankings würde ich die Gespielten Karten mit einfließen lassen.

    Den Schwierigkeitsgrad des CP könnte man dadurch einstellen wie gut er sich Karten die gespielt wurden und damit aus dem Spiel sind merken kann.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Vielen Dank,

    die Karten haben kein direktes Ranking. Manche Karten sind zwar verschieden, sind aber von den Werten her sehr ähnlich und einige wenige sind gleich. Die Idee an sich finde ich auch sehr gut, jedoch ist auch das schon eine Art mogeln, da die KI ja im Grunde nicht nur auf die eigenen Karten zurückgreift, sondern auf alle (wenn sie ein Ranking hätten). Die KI kann im Grunde nur auf ihr eigenes Deck reagieren und maximal "schätzen" was der Gegner für Karten hat. Wobei ich mich nun wieder frage... Soll der Computer wirklich ein Random Deck haben aus ALLEN Karten oder sollte man diese in etwa an die Kartenstärke der Gegner anpassen. Normalerweise kann jeder Spieler eben auch alle Karten besitzen. Ein Spieler mit dem ersten Deck (30 Karten) hat dann natürlich gegen einen Gegner mit 255 keine wirkliche Chance, selbst wenn es Random ist?
    Bei den meisten etwas komplexeren Kartenspielen ist der Computer ja deutlich begrenzt durch eine schlechte AI. Daher würde ich die Schwierigkeit anhand der Auswahl der Karten gestalten. Bei schwer hat er halt eine Auswahl an guten Karten. Bei leicht eine an eher schlechten Karten.
    Das ist meine Signatur und sie wird wunderbar sein!

    Schmandal schrieb:

    sondern auf alle (wenn sie ein Ranking hätten).


    Naja ich denke da an eine Poker KI.
    Diese muss die eigenen Karten Bewerten.
    8P + 8K + 9P + 9K + DK wäre besser (höheres Rating) wie 6P + 6K + BK + AH + 9H

    Wenn es keine möglichkeit gibt die Karten zu bewerten dann braucht man auch keine KI dann reicht ein Zufallsgenerator.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    keine KI dann reicht ein Zufallsgenerator


    @Schamash nunja grundsätzlich könnte man die Karten schon bewerten. Da sie aber wie beschrieben mehrere Faktoren besitzen, finde ich das recht schwer.

    Beispiel: Du hast eine Karte auf der Hand mit einem niedrigen Angriffswert von Beispielsweise 2. Die Karte hat ein Special Overburn. Mit diesem Special können vom Gegner Karten eines bestimmten Typs entfernt werden.

    Ergo: Im Grunde ist die Karte der größte Mist, es sei denn der Gegner hat die Karten auf der Hand, die durch diese vernichtet werden können. Dann wäre es eine der mächtigsten Karten überhaupt. Wie soll ich diese Karte dann einordnen?

    Ich bin mir da nicht sicher, wie man diese anhand mehrerer Kriterien einordnen sollte. Gerade weil es eben 255 Stück sind und weitere in Planung sind.

    EDIT:
    @Mono nun hätte ich deine Antwort beinahe vergessen. Das stimmt genau mit dem was Du sagst: Die meisten Kartenspiel KI's sind äußerst "dumm". Deshalb hatte ich irgendwie vor das ganze besser zu machen. Es lebe die künstliche Kartenintelligenz! Dennoch ein guter Lösungsansatz wenn ich daran verzweifle und der dritte PC aus dem Fenster flog!

    Schmandal schrieb:

    Beispiel: Du hast eine Karte auf der Hand mit einem niedrigen Angriffswert von Beispielsweise 2. Die Karte hat ein Special Overburn. Mit diesem Special können vom Gegner Karten eines bestimmten Typs entfernt werden.


    Das ist doch genau das was ich meinte.
    Dadurch wird die Karte je mehr Karten des spieziellen Types noch im Spiel sein können.
    Wenn die Karten auf der Spieler / KI Hand doppelt und zufällig sind und dem Gegenspieler unbekannt fällt diese Form der Bewertung natürlich aus.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Eine KI ist eine hohe Kunst. Selbst bei Hearthstone, was ja eines der erfolgreichsten Kartenspiele ist, kann man die KI leicht austricksen. Von daher die Frage: Soll die KI nur ein Übungspartner sein,
    um das Spiel zu lernen, oder wirklich ein ernsthafter Gegner? Bei zweiterem wirst du über einen Thread hier im Forum nicht zu einem Ergebnis kommen, da sollte man erstmal entsprechende Fachliteratur
    hinzuziehen und sich gründlich einarbeiten.

    Bist du dir sicher, dass du eine beliebige Anzahl an Karten in einem Deck zulassen willst? Bei allen mir bekannten Kartenspielen ist eine feste Größe des Decks ein extrem wichtiger Faktor beim Balancing und
    ich kann mir nicht vorstellen, dass Decks mit unterschiedlicher Kartenanzahl fair gegeneinander spielen können.
    Option strict = on

    If it's stupid and it works it ain't stupid.
    @Nils_Kr Vielen Dank für deine Ausführungen. Du hast vollkommen Recht mit dem was Du sagst. Ich möchte die KI schon als einen "normalen" Gegner mit diversen Schwierigkeitsgraden an Board haben. Das KI, gerade bei Kartenspielen, natürlich nicht so funktionieren, wie bei Schach, TicTacToe oder Sudoku, ist mir klar ;). Grundsätzlich habe ich mich schon immer für sowas interessiert und habe mir auch dazu Bücher gekauft. Doch steht dort natürlich auch nur viel über die Theorie. Da ich die meist "komischen" KI Gegner zu gut kenne, wollte ich zumindest versuchen, etwas "Besseres" auf die Beine zustellen. Ich bin mir auch sehr sicher, dass ich daran recht schnell scheitern werde und auch nur eine DKI ("dümmliche künstliche Intelligenz") aus dem Boden stampfe werde. Dennoch waren mir Eure Meinungen recht wichtig. Die Karten ohne Logik, ohne Wahrscheinlichkeitsrechnungen und einfach nur pro Spiel auszurechnen, wäre hingegen kein Problem, obwohl ich diese Lösung ungern wählen würde.

    Zu den Decks: Jeder Spieler beginnt mit einem Basis-Deck, welches immer gleich ist. Im Spielverlauf kann man sich bis zu 255 Karten erspielen. Je mehr Karten man hat, desto höher wird das Spielerlvl.
    Jeder kann trotzdem gegen Jeden spielen und hat reelle Chancen. Denn aus den 255 Karten (wenn man sie denn mitnimmt), werden zu Beginn immer 10 Karten für die Hand ausgewählt und 20 für den Nachziehstapel. Somit hat jeder Spieler nur 30 Karten / Spiel zur Verfügung. Es ist ja dem Spieler selbst überlassen wieviele Karten er gerne in die Partie mitnehmen möchte.
    @Eddi hat hier: KI für Vier Gewinnt ein ganz fabelhaftes Pdf zur Spiele-KI ergoogelt. Allerdings am Beispiel 4-Gewinnt, also ein vollständig informiertes Spiel.
    Kartenspiel-KI wird ähnlich "denken", nur muss da ganz viel Wahrscheinlichkeitsrechnung einfließen, denn der Witz an uninformierten Spielen ist ja, dass man nix genaues weiß.

    Aber das Pdf ist trotzdem empehlenswert, einfach um mal zu sehen, wie ausführlich und differenziert die Taktik eines Spiels analysiert werden muss, bevor man auch nur anfangen kann mit dem Anfang eines Konzepts.

    Aber vlt. findest du ja auch noch speziellere Literatur, evtl. sind die Ansätze bei unvollständig informierten Spielen auch noch anders.
    Danke für den Hinweis. Das PDF ist echt sehr, sehr gut gemacht. Die Bücher über Spieletheorien, die ich gelesen habe, sind auch allesamt interessant und manche sind mir ehrlich gesagt ein wenig zu kompliziert. Was daran liegen mag, dass ich schon bei der mathematischen Wurstkatastrophe ausgestiegen bin (obwohl es sich ja auch noch nicht erklären lässt).

    Ich habe heute im Laufe des Tages ein Konzept ausgearbeitet, mit dem ich einen Gegner mit verschiedenen Schwierigkeitsstufen bauen kann. Allerdings ist das keine KI sondern eher eine KG (künstlich gerechnet). Ich habe die Berechnung nach Kartenbesitz des Spielers und des Computers zur Berechnung genommen. Dabei habe ich dann Random Fehler des Computers eingebaut. Natürlich hat das mit KI nichts zu tun. Ich werde mich in den nächsten Tagen dennoch daran versuchen. Wenn es doch ein PDF in dieser Machart für Uniformierte geben würde.