Spielereignisse
Spielereignisse sind die Übersetzung der zufällig generierten Gleitkommazahlen in ein relevantes Ergebnis, das spielspezifisch ist. Dies umfasst alles vom Ausgang eines Würfelwurfs über die Reihenfolge der Karten in einem Deck bis hin zum Standort jeder Bombe in einem Spiel Mines.
In unserer Version von Würfeln decken wir einen möglichen Wurf von 00,00 bis 100,00 ab, was einen Bereich von 10.001 möglichen Ergebnissen hat. Die Übersetzung des Spielereignisses erfolgt durch Multiplikation des Gleitkommawerts mit der Anzahl der möglichen Ergebnisse und anschließender Division durch 100, sodass das Ergebnis in den Bereich unserer angegebenen Würfel fällt.
// Game event translation
const roll = (float * 10001) / 100;
Wenn es um Limbo geht, verwenden wir einen zweistufigen Prozess. Zunächst multiplizieren wir den Gleitkommawert sowohl mit dem maximal möglichen Multiplikator als auch mit dem Hausvorteil. Dann, um ein Spielereignis mit Wahrscheinlichkeitsverteilung zu generieren, teilen wir den maximal möglichen Multiplikator durch das Ergebnis des ersten Schritts, um das Spielereignis in Form eines Crashpunkts zu erstellen.
// Game event translation with houseEdge of 0.99 (1%)
const floatPoint = 1e8 / (float * 1e8) * houseEdge;
// Crash point rounded down to required denominator
const crashPoint = Math.floor(floatPoint * 100) / 100;
// Consolidate all crash points below 1
const result = Math.max(crashPoint, 1);
Bei jedem Plinko-Spiel basiert das generierte Ergebnis auf dem Pfad des fallenden Balls. Das Spielereignis bestimmt die Richtung des fallenden Balls für jede Ebene im Fallprozess. Spieler können zwischen 8 und 16 Pins des Spiels wählen, was die Anzahl der für die Generierung eines vollständigen Pfads von oben nach unten erforderlichen Spielereignisse bestimmt. Da es nur zwei mögliche Richtungen (links oder rechts) gibt, wird die Übersetzung durchgeführt, indem jeder Gleitkommawert mit 2 multipliziert wird, was dem folgenden Index entspricht:
// Index of 0 to 1 : left to right
const DIRECTIONS = [ left, right ];
// Game event translation
const direction = DIRECTIONS[Math.floor(float * 2)];
Unser Roulette basiert auf der europäischen Version des Spiels, bei dem das Rad aus 37 verschiedenen Taschen besteht, die von 0 bis 36 reichen. Das Spielereignis wird berechnet, indem der Gleitkommawert mit 37 multipliziert und dann in eine entsprechende Tasche mit dem folgenden Index übersetzt wird:
// Index of 0 to 36
const POCKETS = [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36
];
// Game event translation
const pocket = POCKETS[Math.floor(float * 37)];
Traditionelle Keno-Spiele erfordern die Auswahl von 10 möglichen Spielereignissen in Form von Treffern auf einem Brett. Um dies zu erreichen, multiplizieren wir jeden Gleitkommawert mit der Anzahl der möglichen eindeutigen Quadrate. Sobald ein Treffer platziert wurde, kann er nicht erneut ausgewählt werden, was die Poolgröße der möglichen Ergebnisse ändert. Dies wird erreicht, indem die Größe der möglichen maximalen Ergebnisse für jede Iteration des Spielereignisergebnisses, das mit dem entsprechenden bereitgestellten Gleitkommawert generiert wird, mithilfe des folgenden Index um 1 verringert wird:
// Index of 0 to 39 : 1 to 40
const SQUARES = [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40
];
// The fisher-yates shuffle implementation is utilised to prevent duplicate possible hits being generated.
const hit = SQUARES[Math.floor(float * 40)];
Ein Minenspiel wird mit 24 separaten Spielereignissen generiert, in Form von Minen auf dem Spielfeld. Jede Fließkommazahl wird mit der Anzahl der noch verbleibenden, einzigartigen Felder auf dem Spielfeld multipliziert. Dies geschieht, indem bei jeder Iteration des generierten Spielereignisses die Anzahl der verbleibenden Felder um 1 verringert wird, basierend auf der bereitgestellten Fließkommazahl. Der Standort der Mine wird anhand einer Gitterposition von links nach rechts, oben nach unten, festgelegt. Die Fisher-Yates-Shuffle-Implementierung wird verwendet, um doppelte mögliche Treffer zu verhindern. Zwischen 1 und 24 Spielereignisergebnisse werden verwendet, abhängig von den gewählten Einstellungen.

