Die Arbeit mit dem Zufall: RandomOperations

RandomOperations ist eine Klasse für User Apps, die es bereits seit der ersten Stunde gibt. Sie hilft dabei, Zufallsereignisse in der eigenen App abzubilden.

In diesem Beitrag möchte ich über diese Dinge sprechen:

  • Wann benutzen Apps Zufall?
  • Warum macht es Sinn, RandomOperations zur Hilfe zu nehmen?
  • Was ist eine gute Herangehensweise, wenn etwas in RandomOperations fehlt?
  • Wie könnte die Zukunft von RandomOperations aussehen?

Wann benutzen Apps Zufall?

Schauen wir uns die heutige App-Landschaft an, dann gibt es an vielen Stellen Zufall, den wir vielleicht aber gar nicht so richtig bemerken.

Nach kurzer Überlegung fallen mir hier Memory, SpeedKnuffel, Knuddelonia, Crazy Fishing, Verrückte Worte und MyCloud ein. Und es gibt sicher noch mehr!

Hier sind Beispiele dafür, wie diese Apps den Zufall nutzen und wie die mögliche Nutzung von RandomOperations in der jeweiligen App aussehen könnte:

  • Memory benutzt den Zufall, um die Karten zu mischen.
    RandomOperations.shuffleObjects(memoryCards)
  • In SpeedKnuffel ist es Zufall, welche Würfel ein Spieler wirft.
    RandomOperations.nextInts(1, 6, 5, false)
  • Knuddelonia konfrontiert die Spieler mit Gegnern zufälliger Stärke
    RandomOperations.nextInt(minStrength, maxStrength)
  • Beim Angeln in Crazy Fishing ist es zufällig, welchen Fisch man fängt
    RandomOperations.getRandomObject(fishPool)
  • Verrückte Worte spuckt zwar für alle Spieler dieselben Buchstaben, aber in jeder Runde zufällig andere aus
    RandomOperations.shuffleObjects(allLetters);
  • Beim Gießen der MyCloud gibt es mal mehr und mal weniger Wasser. Auch dies hängt vom Zufall ab.
    RandomOperations.nextInt(minWaterAmount, maxWaterAmount)
  • Münzwurf mit gleicher Chance für Kopf oder Zahl
    RandomOperations.flipTrue(0.5)

Warum macht es Sinn, RandomOperations zur Hilfe zu nehmen?

Wir empfehlen die Nutzung von RandomOperations aus mehreren Gründen:

  • Die Methoden sind bereits seit langer Zeit vielfach bei Knuddels im Einsatz und intensiv getestet
  • Beim Entwickeln spart es Zeit
  • Der Quellcode bleibt lesbar im Vergleich zu normalen Zufallsfunktionen in Javascript
  • Wir können uns vorstellen, zu einem späteren Zeitpunkt etwas einzuführen, mit dem Nutzer Zufallsaktionen aus Apps einsehen können, so dass Apps mehr Vertrauen geschenkt werden kann. Im letzten Abschnitt erzähle ich mehr davon.

Was ist eine gute Herangehensweise, wenn etwas in RandomOperations fehlt?

Ideen für neue Methoden und Hinweise auf fehlende Funktionalität sind am besten im Uservoice aufgehoben. Das Uservoice ist ein Tool, in dem wir solche Dinge sammeln. Die Ideen aus diesem Tool fließen regelmäßig in unsere Arbeit ein.

Durch das Uservoice sind bereits sinnvolle Erweiterungen für die Methoden nextInt und nextInts in die API eingeflossen.

Wie könnte die Zukunft von RandomOperations aussehen?

Viele Zufallsereignisse in User Apps basieren derzeit auf den Ergebnissen von Würfelwürfen, da dies die einzige verlässliche Quelle für Nutzer ist, um sicher zu gehen, dass die App sie nicht betrügt.

Komplexere Spiele, beispielsweise Kartenspiele wie beispielsweise Poker, könnten sich damit nicht abbilden lassen.

Ein möglicher Lösungsansatz: RandomOperationsSession

Unsere Idee ist, dass Entwickler für ein Spiel eine Zufalls-Session starten können, in der alle durch die API erzeugten Events geloggt werden. Nach Ablauf des Spiels kann der Entwickler die Session freigeben und ermöglicht dadurch den Spielern die Einsicht in die Zufallswerte.

Am Beispiel der App Wahrsagen könnte dies so aussehen:

  1. Die Nutzer zahlen Knuddel ein und eine RandomOperationsSession wird erstellt
  2. Jeder Spieler setzt auf eine Zahl zwischen 0 und 10.
  3. Mit der RandomOperationsSession wird eine Zahl zwischen 0 und 10 gezogen.
  4. Das Spiel wertet aus, wer auf die richtige Zahl gesetzt hat und zahlt die Gewinne aus.
  5. Die App gibt die RandomOperationsSession frei und die Spieler können prüfen, ob die App wirklich die Zahl gezogen hat, die sie am Ende ausgegeben hat

Diskutiert mit mir über diese Idee im Forum!

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s