twb: User-Einschätzung

Liebe alle - mein neues Spiel Reversi war schon mal Thema hier im Forum: Da ging's um einen Funktions-Check in verschiedenen OS-/Browserkombinationen, worüber ich ausserordentlich dankbar war. Bei dieser Gelegenheit kamen auch wertvolle Verbesserungsvorschläge aufs Tapet, von denen ich wie immer profitiert und die die ich allesamt eingearbeitet habe.

Mein Spiel ist mittlerweile veröffentlicht, und nun erhalte ich sehr unterschiedliche Reaktionen: von Spielern, denen das Ding zu schwierig ist und die ihr Notebook am liebsten aus dem Fenster schmeissen würden, und von solchen, die sich über den Kinderkram beschweren, da sie mein Reversi ausnahmslos vernichtend zu schlagen vermögen. Da ich die Algorithmen geschrieben habe, nach denen mein Reversi spielt, kann ich selbst nicht mehr unbefangen genug testen und wäre nun um Einschätzungen der gegenwärtigen Spielstärke dankbar (wer das Spiel nicht kennt, wird in der Wikipedia fündig). Ist ein Spiel mit diesem Einheitslevel tragbar? Oder ist es in der vorliegenden Form zu simpel?

Mit grossmächtigem Dank, twb

  1. Hallo,

    Liebe alle - mein neues Spiel Reversi war schon mal Thema hier im Forum

    ja, ich erinnere mich.

    Da ging's um einen Funktions-Check in verschiedenen OS-/Browserkombinationen, worüber ich ausserordentlich dankbar war. Bei dieser Gelegenheit kamen auch wertvolle Verbesserungsvorschläge aufs Tapet, von denen ich wie immer profitiert und die die ich allesamt eingearbeitet habe.

    Aber dein Script tut sich in manchen Situationen immer noch schwer, mich als Sieger anzuerkennen. Eben erlebt bei folgender Konstellation:

    OOOOOOOO
      OOOO++OO
      OOOO++OO
      OOOO+OOO
      OO+OOOOO
      O+OOOOOO
      +++++OOO
      OOOOOOO

    Ich bin 'O' und bin am Zug, kann aber nicht mehr. Der Gegner '+' kann aber auch nicht mehr setzen, das Spiel ist also entschieden. Trotzdem muss ich erst noch auf "Pass" klicken, damit der Sieg erkannt wird.

    Mein Spiel ist mittlerweile veröffentlicht, und nun erhalte ich sehr unterschiedliche Reaktionen: von Spielern, denen das Ding zu schwierig ist und die ihr Notebook am liebsten aus dem Fenster schmeissen würden, und von solchen, die sich über den Kinderkram beschweren, da sie mein Reversi ausnahmslos vernichtend zu schlagen vermögen.

    Naja, wenn man zwei, drei Grundprinzipien kennt und beherzigt, hat man gegen dein Script sehr gute Gewinnchancen. Ich habe bei ein paar Versuchen jetzt immer gewonnen mit 40..50 Steinen.

    Ist ein Spiel mit diesem Einheitslevel tragbar? Oder ist es in der vorliegenden Form zu simpel?

    Ich find's tatsächlich zu simpel; als fortgeschrittener Spieler muss man schon mal Tomaten auf den Augen haben, um zu verlieren. Aber spaßig ist es trotzdem. ;-)
    Dein Script hat übrigens eine andere "Strategie" als das Windows-Reversi, das ich ab und zu mal spiele. Deswegen überraschen mich die Züge zwar ab und zu, aber das Script lässt sich nur zu leicht überrumpeln.

    So long,
     Martin

    --
    Bitte komme jemand mit einem *g* zum Wochenende, damit nicht über mich gelacht wird.
      (Gunnar Bittersmann)
    1. Aber dein Script tut sich in manchen Situationen immer noch schwer, mich als Sieger anzuerkennen. Eben erlebt bei folgender Konstellation:

      OOOOOOOO
        OOOO++OO
        OOOO++OO
        OOOO+OOO
        OO+OOOOO
        O+OOOOOO
        +++++OOO
        OOOOOOO

      Eigenartig: Ich habe das Skript nach unserer letzten Debatte dahingehend erweitert, dass mein Spiel eine Blockade beider Parteien unbedingt erkennen muss; der Erfolg dieser Sequenz wurde entsprechend verifiziert. Ich werde morgen in aller Ruhe Deine Situation nachstellen und testen.

      Ich find's tatsächlich zu simpel; als fortgeschrittener Spieler muss man schon mal Tomaten auf den Augen haben, um zu verlieren. Aber spaßig ist es trotzdem. ;-)

      Das Kompliment freut mich zwar, aber ich hab' Dein Verdikt befürchtet. Ich geb' Dir absolut recht: Mein Spiel _ist_ zu einfach. Sorgen bereiten mir trotzdem die verärgerten Zuschriften, denen zufolge mein Reversi unzumutbar schwierig sei. Ich werde vermutlich entgegen meinen Absichten um zwei oder drei verschiedene Levels nicht herumkommen. (Stinkt mir zwar.)

      Dein Script hat übrigens eine andere "Strategie" als das Windows-Reversi, das ich ab und zu mal spiele.

      Das ist ohne weiteres möglich, wenn nicht gar wahrscheinlich. Ich hab' meine Variante einfach nach Gutdünken geschrieben; da ich aber weder Programmierer noch Mathematiker bin, kann es gut sein, dass ich dabei da und dort um die Ecke gedacht habe.

      Auf jeden Fall: Danke fürs Testen! twb

      1. Hi,

        Aber dein Script tut sich in manchen Situationen immer noch schwer, mich als Sieger anzuerkennen. Eben erlebt bei folgender Konstellation:

        OOOOOOOO
          OOOO++OO
          OOOO++OO
          OOOO+OOO
          OO+OOOOO
          O+OOOOOO
          +++++OOO
          OOOOOOO

        Eigenartig: Ich habe das Skript nach unserer letzten Debatte dahingehend erweitert, dass mein Spiel eine Blockade beider Parteien unbedingt erkennen muss;

        Laut Deiner Aussage dort prüfst Du aber erst, wenn der Computer einmal nicht ziehen konnte.

        Prüfst Du auch dann, wenn der Computer noch einen Zug machen konnte, aber der Spieler nicht?
        Wenn nein, warum nicht?
        So zeitaufwendig kann das ja nicht sein - es muß an maximal 60 Positionen (4 der 64 Felder sind ja schon von Anfang an belegt) für maximal 8 Richtungen (am Rand sind es weniger), also maximal 480 Tests geprüft werden, ob sich durch Setzen eines Steins dort ein gültiger Zug ergibt.
        Und sobald 1 gültiger Zug möglich ist, kann man ja schon abbrechen.

        Wenn der Spieler, der grade dran ist, nicht kann, (und nur dann) muß noch die Prüfung für den 2. Spieler gemacht werden.

        Wenn Du diese Prüfung immer machst, kannst Du auch dem menschlichen User gleich mitteilen, daß er nicht ziehen kann ...

        Und ja, die Spielstärke ist nicht allzu hoch.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hi Andreas - erst einmal: Danke! Spannende Fragen!

          Prüfst Du auch dann, wenn der Computer noch einen Zug machen konnte, aber der Spieler nicht?
          Wenn nein, warum nicht?

          Ich bin nicht ganz sicher, ob ich Deine Fragen richtig verstanden habe - zur Beantwortung stelle ich folgende zwei Situationen nach (.=leeres Feld, o=schwarz, x=weiss; vgl. Links):

          Situation 1:
          .xooooox
          ........
          ........
          ........
          ........
          ........
          ........
          ........
          Blockadenreihenfolge Computer-Spieler: Hier kann der Spieler (schwarz) noch einen letzten Zug machen, danach meldet der Computer: Kein Zug mehr möglich. Der Spieler erkennt, dass er ebenfalls nicht mehr ziehen kann, und klickt "Pass". Daraufhin ist die Partie zu Ende, das Ergebnis (gewonnen mit 7:1) wird ausgeworfen.

          Situation 2:
          ooooooox
          ........
          ........
          ........
          ........
          ........
          ........
          ........
          Blockadenreihenfolge Spieler-Computer: Dieselbe Situation, einen Zug später - hier meldet der Spieler mittels "Pass", dass er nicht mehr ziehen kann. Darauf erkennt der Computer, dass er ebenfalls blockiert ist, und wieder ist die Partie mit 7:1 zu Ende.

          Wenn Du diese Prüfung immer machst, kannst Du auch dem menschlichen User gleich mitteilen, daß er nicht ziehen kann ...

          Das ist natürlich wahr. Richtig ist, dass ich eine Zugmöglichkeitsprüfung nur computerseitig vornehme; der Spieler muss immer selbst beurteilen (und nachprüfen), ob er noch ziehen kann oder ob er blockiert ist. Diese (auch spielerseitige) Prüfung werde ich nachholen. Danke!

          Und ja, die Spielstärke ist nicht allzu hoch.

          Auch hier: Stattgegeben. Zur Zeit liegt das noch daran, dass ich selbst von Reversi im Grunde nicht die leiseste Ahnung habe - mich schlägt mein Skript noch jedes dritte Mal. Aber ich werd' mich schlauer machen und die Skriptstrategie verfeinern müssen, den genannten negativen User-Reaktionen zum Trotz.

          Herzlich, twb

          1. Hallo,

            Blockadenreihenfolge Computer-Spieler: Hier kann der Spieler (schwarz) noch einen letzten Zug machen, danach meldet der Computer: Kein Zug mehr möglich. Der Spieler erkennt, dass er ebenfalls nicht mehr ziehen kann, und klickt "Pass". Daraufhin ist die Partie zu Ende, das Ergebnis (gewonnen mit 7:1) wird ausgeworfen.

            genau, und dieses letzte "Pass" wäre überflüssig, weil es vor dem (auch nicht möglichen) Zug des Computers schon feststeht.

            der Spieler muss immer selbst beurteilen (und nachprüfen), ob er noch ziehen kann oder ob er blockiert ist. Diese (auch spielerseitige) Prüfung werde ich nachholen. Danke!

            Wahrscheinlich hatte ich das auch gemeint, aber nicht so klar ausgedrückt.

            Und ja, die Spielstärke ist nicht allzu hoch.
            Auch hier: Stattgegeben. Zur Zeit liegt das noch daran, dass ich selbst von Reversi im Grunde nicht die leiseste Ahnung habe

            Oha. Dafür ist es immerhin sehr ordentlich. Kann jemand, der vom Schach nur die Spielregeln kennt, aber keine Erfahrung mit den "guten" Strategien hat, einen Schachcomputer programmieren?

            Aber ich werd' mich schlauer machen und die Skriptstrategie verfeinern müssen, den genannten negativen User-Reaktionen zum Trotz.

            Die Spielstrategie sollte ein paar wenige wichtige Ziele verfolgen:

            * Versuche, möglichst bald möglichst viele Steine am Rand zu plazieren
            * Versuche, die Ecken zu besetzen! Einen Spielstein in der Ecke kann dir der
              Gegenspieler nie mehr abluchsen, und man kann ihn als festen Gegenpol für
              weitere "Eroberungen" nutzen
            * Versuche dann, von den Ecken aus das Feld aufzurollen

            Komplementär dazu muss man natürlich den Gegner genau daran hindern, diese Ziele zu erreichen. Der Rest ist dann nicht mehr so entscheidend.

            Schönes Wochenende noch,
             Martin

            --
            Alkohl ist ungesund,
            Rauchen ist schädlich,
            Sex ist unanständig
            - und die Erde ist eine flache Scheibe.
            1. Oha. Dafür ist es immerhin sehr ordentlich. Kann jemand, der vom Schach nur die Spielregeln kennt, aber keine Erfahrung mit den "guten" Strategien hat, einen Schachcomputer programmieren?

              Danke!

              Die Spielstrategie sollte ein paar wenige wichtige Ziele verfolgen:

              * Versuche, möglichst bald möglichst viele Steine am Rand zu plazieren

              Richtig, wie auch Ingo schon festgestellt hat.

              * Versuche, die Ecken zu besetzen! Einen Spielstein in der Ecke kann dir der
                Gegenspieler nie mehr abluchsen, und man kann ihn als festen Gegenpol für
                weitere "Eroberungen" nutzen

              Ist bereits realisiert: Mein Skript wird den Zug in eine Ecke des Spielsteins jedem anderen Zug vorziehen.

              Komplementär dazu muss man natürlich den Gegner genau daran hindern, diese Ziele zu erreichen. Der Rest ist dann nicht mehr so entscheidend.

              Ist mindestens ansatzweise realisiert: Mein Skript versucht, Züge in die "Steigbügelfelder" A2 und A7, B1, B2, B7 und B8 usw. zu vermeiden und so Züge des Spielers in eine Ecke so lange wie möglich zu verhindern. Aber danke!

      2. Hi,

        Eigenartig: Ich habe das Skript nach unserer letzten Debatte dahingehend erweitert, dass mein Spiel eine Blockade beider Parteien unbedingt erkennen muss;

        mir aber auch passiert:
        xxxxxxx
        xxoxxxxx
        xxxoxxxx
        xxooxxxx
        xxxxoxox
        xxxoooox
        xxoxxxxx
        xxxxxxxx
        Der Computer sagt, dass er nicht ziehen kann und wenn ich das letzte Feld anklicke invalid move.

        Ich geb' Dir absolut recht: Mein Spiel _ist_ zu einfach.

        Vor allem deshalb, weil es sich die Randbereiche so einfach abknöpfen läßt. Da hat es einen Stein am Rand, ich setze einen daneben und es macht dann irgend einen anderen Zug - den ich leider gar nicht erkennen kann, weil er nicht hervorgehoben wird.

        Einzig erschwerend sind die 6 3/4 * 8 Felder für 8*8 Steine und dass man sich nur sehr schlecht anhand der Randabstände orientieren kann, wieviele Felder noch dazwischen sind.
        Was soll übrigens das 9 1/4 * 8 Felder große leere Spielfeld rechts daneben?
        Oder ist das ein Bug in meinem Firefox 1.0.8?

        freundliche Grüße
        Ingo

        1. Hallo Ingo!

          Eigenartig: Ich habe das Skript nach unserer letzten Debatte dahingehend erweitert, dass mein Spiel eine Blockade beider Parteien unbedingt erkennen muss;
          mir aber auch passiert:
          xxxxxxx
          xxoxxxxx
          xxxoxxxx
          xxooxxxx
          xxxxoxox
          xxxoooox
          xxoxxxxx
          xxxxxxxx
          Der Computer sagt, dass er nicht ziehen kann und wenn ich das letzte Feld anklicke invalid move.

          Richtig - vgl. meine Antwort an Andreas anhand zweier abstrahierter Situationen.

          Ich geb' Dir absolut recht: Mein Spiel _ist_ zu einfach.
          Vor allem deshalb, weil es sich die Randbereiche so einfach abknöpfen läßt. Da hat es einen Stein am Rand, ich setze einen daneben und es macht dann irgend einen anderen Zug - den ich leider gar nicht erkennen kann, weil er nicht hervorgehoben wird.

          Erstens: richtig - eine Randpräferenz werd' ich als nächstes in Angriff nehmen müssen. Zweitens: die Erkennbarkeit des gegnerischen Zugs lässt, vor allem mit zunehmendem Verlauf der Partie, wirklich sehr zu wünschen übrig. Ich frage mich, ob ich mittels zeitlichem Versatz den gegnerischen Zug und das anschliessende "Drehen" der Steine deutlicher machen soll, oder ob ich wirklich auf die CSS-Eigenschaft opacity (Einblenden) zurückgreifen muss.

          Einzig erschwerend sind die 6 3/4 * 8 Felder für 8*8 Steine und dass man sich nur sehr schlecht anhand der Randabstände orientieren kann, wieviele Felder noch dazwischen sind.
          Was soll übrigens das 9 1/4 * 8 Felder große leere Spielfeld rechts daneben?
          Oder ist das ein Bug in meinem Firefox 1.0.8?

          Für mich sieht das ganz nach einem Bug aus: Der schon früher in diesem Forum vorgenommene Kompatibilitätscheck zeigte in verschiedensten Browsern nichts dergleichen. Das "Spielfeld" rechts dient übrigens nur zur Anzeige der Spielhilfe ("Help") und dürfte als Tabellenfeld gar nicht sichtbar sein. Meine beiden Browser MSIE 6 und 7 sowie FF 2.0.0.11 zeigen denn auch nichts dergleichen, ebensowenig Safari und Camino, die ich auf zwei verschiedenen Macs getestet habe.

          Herzlich, twb

  2. Hallo twb,

    ich finde die Spielstärke eher gering. Wenn einem halbwegs klar ist, welche Felder günstig und welche ungünstig sind, wird man wohl immer gewinnen.

    Ich würde einfach alle Spiele mitprotokollieren. Dann kannst Du Dir verschiedene vom User gewonnene Spiele anschauen und analysieren, warum Dein Algorithmus verloren hat.

    Gruß
    Olaf