Ist Angry Birds deterministisch?

Während ich versuchte, 3 Sterne auf den komplexeren Ebenen zu bekommen (die mit vielen zerstörbaren Entitäten), bemerkte ich, dass auch nach dem Spielen des gleichen Levels über 50 Mal, immer das Gleiche, ich habe noch nie das gleiche Ergebnis gefunden. Etwas geht immer anders.

Gibt es die gleiche Eingabe immer in der gleichen Ausgabe, oder gibt es dort einen zufälligen Faktor?

  • Wo sind die Chrome Dimension Pickups in Chrome.Angrybirds?
  • Wie vervollständige ich das Goldene Ei-Level mit all den Klängen?
  • 5 Solutions collect form web for “Ist Angry Birds deterministisch?”

    Der Algorithmus ist deterministisch, aber es ist behauptet, dass das Gesamtergebnis des Startens eines Vogels effektiv nicht deterministisch ist, weil er auf (außerordentlich sensible) Benutzereingaben beruht.

    Um den Algorithmus zu testen und die Effekt-Benutzereingabe auf ihn zu haben, habe ich folgendes Verfahren verwendet:

    • Laden Sie die Google Chrome Version von Angry Birds
    • Belastungsstufe 1-1
    • Ziehen Sie die Maus zurück zu einer bestimmten XY-Koordinate. (Das war an der Spitze des "Vollzugs" für den Vogel.)
    • Lassen Sie den Vogel los und warten Sie, bis das Spiel einen festen Zustand erreicht hat.

    Um meine XY-Koordinate zu messen, öffnete ich ein Hintergrund-Chrome-Fenster und navigierte es auf diese Seite . Ich richtete die beiden Fenster so aus, dass ich die X- und Y-Positionen der Maus sehen konnte, während ich noch in der Lage war, etwas zu verursachen, als ich den Vogel veröffentlichte. Ich habe meinen Mauszeiger mit der unteren linken Ecke des Feldes um diese beiden Zahlen ausgerichtet und dann freigegeben. Ich habe die Position meines Mauscursors dann (wie die Anzeige nur aktualisiert, wenn die Maus nicht freigegeben wird und der Cursor über diesem Fenster) und dann notiert die resultierende Kerbe in Angry Birds. Wenn Sie Probleme mit der exakten Mauspositionierung haben, können Sie eine von Ihrem Betriebssystem angebotene Barrierefreiheit ausführen, z. B. Mouse Keys unter Windows.

    Ich bekam die gleiche Punktzahl, solange mein Cursor genau so war wie bei früheren Iterationen.

    Vor dem Aufkommen mit einem verbesserten Prüfstand, der es mir erlaubte, die Position meines Cursors zum Pixel zu messen, lief ich dieses Experiment etwa 10 mal mit einem Referenzpunkt im Hintergrundbild des Spiels. Ich bekam Punkte, indem ich den ersten Vogel abfeuerte, der zwischen 8.000 und 11.000 Punkten variierte. Mit der erweiterten Teststrategie, wenn ich von einem einzigen Pixel ausgeschaltet wäre, könnte ich zwischen durchschnittlich zwischen 150 und 500 Punkten eine Punktzahl erwarten.

    Ich werde feststellen, dass der Cursor außerhalb des Randbereichs des Spielfeldes war , außerhalb des Browserfensters, weit über die maximale Distanz hinaus, die der Vogel zurückgezogen werden kann, und ich bemerkte immer noch Unterschiede beim Bewegen meines Cursors sogar ein einziges Pixel.

    Außerdem habe ich Screencaps für einen extremen Fall, wo mein Cursor war auf einem anderen Monitor als das Spielfenster, und lief mehrere Iterationen, wo ich hielt meinen Cursor an der gleichen Stelle, oder zog es leicht. Durch meine Berechnungen (basierend auf Messstrecke von Screencaps) konnte das Spiel ein anderes Ergebnis (Score 32960 vs 31520) basierend auf einer Ein-Pixel-Höhendifferenz (544 vs 545 Pixel) über einen Abstand von etwa 1.284 Pixeln Breite erzeugen. Dies erweist sich als Winkelabstand von 0,03 Grad.

    Ich würde sagen, dass für irgendwelche praktischen Zwecke, können Sie erwarten, die gleiche allgemeine Strategie auf der gleichen Ebene wiederholt zu verwenden und erwarten, dass sehr unterschiedliche Ergebnisse. Das Niveau der Empfindlichkeit in den Kontrollen ist so extrem, dass es keine praktische Möglichkeit, um es zu tun, die gleiche Sache zweimal. Dies wird durch die Tatsache verschärft, dass, wenn Sie auf einem Touchscreen spielen, es außerordentlich schwierig wäre, die gleichen Bewegungen auf das einzelne Pixel zu reproduzieren.

    Angry Birds verwendet Box2D Bibliothek für Physik.

    Ist Box2D deterministisch? Für dieselbe Eingabe und dieselbe Binärdatei wird Box2D jede Simulation reproduzieren. Box2D verwendet keine zufälligen Zahlen und basiert keine Berechnungen auf zufälligen Ereignissen (wie z. B. Timer usw.).

    Allerdings wollen die Menschen oft strengeren Determinismus. Menschen wollen oft wissen, ob Box2D identische Ergebnisse auf verschiedenen Binärdateien und auf verschiedenen Plattformen produzieren kann. Die Antwort ist nein. Der Grund für diese Antwort hat zu tun, wie Floating Point Mathematik in vielen Compilern und Prozessoren implementiert ist. Ich empfehle, diesen Artikel zu lesen, wenn Sie neugierig sind: http://www.yosefk.com/blog/consistency-how-to-defeat-the-purpose-of-ieee-floating-point.html

    http://code.google.com/p/box2d/wiki/FAQ#Determinismus

    Einige Stufen unterliegen zufälligen Explosionen kurz nach dem Niveau beginnt, und einige Steine ​​können auf ihre eigenen fallen, bevor Sie jemals einen Vogel geworfen haben. Diese Ereignisse treten selten auf, aber durch die Zeit, in der du drei Levels in jedem Spiel gezeigt hast, wirst du es wahrscheinlich ein paar Mal gesehen haben, wie ich es habe.

    Ich würde erwarten, dass dies aufgrund von Timing-Probleme, möglicherweise im Zusammenhang mit Threading. Ich bin mir ganz sicher, dass, wenn Sie einen Test, wo Sie jede Ebene ein Dutzend Mal geladen und wartete dreißig Sekunden, die Sie am Ende mit einem Nicht-Null-Score mindestens einmal. Angesichts der Antwort von Pubby kann ich nur davon ausgehen, dass die Angry Birds App nicht immer den gleichen Eingang zu den Box2D-Funktionen zu Beginn eines Levels bietet.

    Ich habe auf Facebook mit einem Makro-Recorder gespielt. Ich startete den Blockflöte, ging zu wütendes Vögelfenster, dann zog es heraus und spielte die ersten beiden Vögel. Ich habe dann den Blockflöte gestoppt. JEDER Zeit ging die Maus auf die exakten Pixel und freigegeben mit der exakt gleichen Macht etc. Es musste, weil die Mausbewegung aufgezeichnet die gleiche Sache jedes Mal, Pixel für Pixel. Jedes Mal bekam ich eine andere Punktzahl, und nicht jedes Mal die gleiche Anzahl von Schweinen getötet etc. Dieses Spiel ist uneinheitlich

    Ich habe 10 Tests, zog an den gleichen Punkt jedes Mal (auch Chrome Angry Birds, Level 1, wie in agent86's Tests).

    Rotes Fadenkreuz des Testflecks

    Ich habe nie die gleiche Punktzahl zweimal erhalten, obwohl ich sorgfältig darauf gehe, an die exakt gleiche Stelle zu ziehen und es so schnell wie möglich nach dem Start des Levels zu tun. Ich glaube, Angry Birds ist sehr viel nicht deterministisch.

    Das ist ziemlich einfach zu erklären: es wurde entworfen, um auf kleinen Touchscreens zu arbeiten. Wenn es deterministisch war, konnten die Benutzer aufgrund der begrenzten Präzision des Eingabegeräts leicht Bewegungen wiederholen. Das könnte schlecht sein, da ihr Gerät buchstäblich nicht die nötige Präzision haben könnte, um auf den genauen Winkel und die nötige Kraft zu zielen. Indem sie die Ergebnisse leicht verkrampfen und durch den Eingang eines "Fingers" die Benutzer den Mangel an Präzision nicht bemerken würden, und sie würden auch nicht frustriert sein, indem sie niemals einen gewünschten Schuss machen konnten.