Home Projekte Builds Elektronik Programme Makes 3D-Druck About Me
MIMO-Technology MIMO-Technology

MIMO TECHNOLOGY

Slot Machine

Die Slot Machine ist eine einarmiger Bandit Maschine für zuhause. Die Software wurde in JavaScript programmiert und wird über HTML als Webseite ausgegeben. Das Spiel kann auf der Maschine selbst, auf einem Smartphone oder auf dem Computer gespielt werden. Die Highscores werden in einer SQL-Datenbank gespeichert um eine Kompatibilität zwischen den verschiedenen Plattformen zu gewährleisten. Für die verschiedenen Jackpots wurden Soundfiles eingebaut, die als Belohnung abgespielt werden. Diese können je nach Zielgruppe angepasst werden. Die Slot Machine läuft auf einem Raspberry Pi 3 mit einem 7" Display. Über ein externes Soundboard werden zwei interne Lautsprecher angesteuert um die Spielesounds auszugeben.

1 Die Slot Machine

1 Frontansicht

1 Die Reels

1 Gewinn Tabelle

1 Rückseite

Zusammenbau

Teileliste:
  • Raspberry Pi 3B+
  • Official Raspberry Pi 7" Display
  • Netzteil 5,1V 2A
  • 2x Lautsprecher
  • Audio-Treiber Board mit 3,5mm Klinkenstecker
  • Stromversorgungsbuchse 2.1x5.5mm
  • 3D-Druck Winkel
  • 3D-Druck Display-Rahmen
  • Magnete und Eisenband (optional)
  • 2x Plexiglasplatte
  • Bastelsperrholz Pappel 4mm
Grundgerüst zusammenbauen
Die Holzteile nach Plan (skizze.pdf) ausschneiden. Je nach verwendeter Displaygrösse können die Masse auch angepasst werden.
Folgende 3D-Druck Teile erstellen:
  • 6x Winkel-40.stl
  • 10x Winkel-20.stl
  • 1xDC-power-holder.stl
  • 1x Display.stl oder 2x Display.5.stl
Vier Winkel-40 auf jede Seite der Bodenplatte kleben. Je nach Soundboard und Lautsprecher müssen die Front und Back Winkel versetzt werden.
Die Rückwand zusammen mit den Seitenwänden an die Winkel auf dem Boden kleben. Tipp: Rückwand gegen Bücher lehnen und mit den Seitenwänden ausrichten.
Die Rückwand mit vier Winkel-20 fixieren und die Front ankleben.
Die nach vorne gerichteten Winkel-20 müssen, damit die Abdeckung später bündig ist, mit dem Abstand der Magnete und dem Abstand des Eisenbands versetzt angeklebt werden. Alternativ kann die Abdeckung auch direkt verklebt werden, was jedoch die Wartung erschwert.
Bild Innenansicht
Für die Abdeckung wird zuerst das Eisenband entlang der vorderen Kante gebogen und zugeschnitten. Die Gewinn Tabelle wird mit doppelseitigem Klebeband zwischen die beiden Plexiglas Platten geklebt. Mit dem Eisenband an der richtigen Position, werden die restlichen Teile auf das Band geklebt.

Elektronik:

Für die Stromversorgung muss ein Loch in die Rückwand gebohrt werden. Zur Stabilisierung wird in das Loch der DC-power-holder angeklebt. in den Holder wird die Stromversorgungsbuchse angeschraubt. An die Buchse wird ein USB-Micro Kabel verlötet (Polarisierung beachten), welches den Raspberry Pi mit Strom versorgt.
Das Raspberry Pi wird an der Rückseite des Displays montiert und mit dem Flex Kabel verbunden. Über die Pins 4 und 5 wird das Display mit Strom versorgt. Das ganze Modul wird dann in den 3D gedruckten Displayhalter eingelassen und verkabelt.
Bild Innenansicht

Installation

Betriebssystem:

Falls die SD-Karte noch leer ist, muss zuerst ein Betriebssystem für das Raspberry Pi installiert werden.
Dazu ein aktuelles Image von der offiziellen Raspberry Pi Seite herunterladen.
Das Image mittels folgendem Befehl auf die SD-Karte schreiben.
Dabei unbedingt mittels lsblk den Pfad zur SD-Karte prüfen!
sudo dd if=<Image-Datei> of=<SD-Pfad> bs=4M conv=fsync status=progress
Für meinen fall (SD-Karte als sdb eingebunden):
sudo dd if=2021-05-07-raspios-buster-armhf.img of=/dev/sdb bs=4M conv=fsync status=progress
Nun im Hauptordner der SD-Karte eine Datei "SSH" erstellen, um die SSH Funktion zu aktivieren.
> /dev/sdb1/ssh
Raspberrypi.com bietet mittlerweile einen Imager an, der das Image in einem Installationsprozess auf die SD-Karte schreibt. Dieser funktioniert sowohl auf Linux als auch auf Windows und Mac Systemen.

Software:

Den Raspberry Pi starten und mit dem Internet verbinden. Über SSH mit dem Raspberry Pi verbinden und das Betriebssystem Updaten.
sudo apt-get update
sudo apt-get upgrade
Für den Betrieb des Spieles wird ein Webserver inklusive SQL-Server benötigt, der die Webseite hostet sowie ein Webbrowser, der sie anzeigt.
sudo apt-get install apache2
sudo apt-get install php
sudo apt-get install mariadb-server mariadb-client
sudo apt-get install php-mysql
sudo apt-get install phpmyadmin
sudo apt-get install firefox
Wenn alles installiert ist, kann das Spiel auf dem Webserver installiert werden. Dazu den Inhalt des Spieles nach /var/www/html/ verschieben.
cd /var/www/html
rm index.html
wget http:// <link to slot-machine-game.zip>
unzip slot-machine-game.zip
rm slot-machine-game.zip

SQL-server konfigurieren:

Über den Webbrowser kann nun auf phpMyAdmin des Raspberry Pi zugegriffen werden.
Dazu http://<raspberrypi-IP>/phpmyadmin aufrufen und mit den in der mariadb Installation angegebenen Benutzer root und Passwort anmelden.
Nun wird ein neuer Benutzer für die Webseite erstellt. In der Waagrechten Navigationsleiste auf Benutzerkonten klicken und unter Neu auf "Benutzerkonto hinzufügen" klicken. Die Textfelder wie in der folgenden Grafik ausfüllen und bei "Erstelle eine Datenbank mit gleichem Namen und gewähre alle Rechte." ein Haken setzen.
Bild Innenansicht
Nun sollte eine neue Datenbank mit dem Namen "slotmachine" im linken Menü erscheinen.
Nach einem Klick auf diese kann im oberen Menü "SQL" ausgewählt werden.
Mit dem folgenden Befehlt wird die SQL-Tabelle erstellt.
CREATE TABLE `score` (
`id` int(11) NOT NULL,
`date` datetime(6) NOT NULL DEFAULT current_timestamp(6),
`score` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Damit das Spiel funktioniert, muss der erste Eintrag manuell eingetragen werden. Als Startguthaben wird 100$ gutgeschrieben. Dazu nochmal auf "SQL" klicken und folgenden Befehl eingeben:
INSERT INTO `score` (`id`, `date`, `score`) VALUES ('','', 100),
Somit ist die SQL Datenbank vorbereitet.
Das Spiel muss jedoch noch die gerade erstellten Serverdaten erhalten. Dafür nochmal über SSH auf dem Raspberry Pi aufschalten. Mit folgendem Befehl die SQL-Konfigurationsdatei öffnen.
nano /var/www/html/slot/sql.php
Der auf phpMyAdmin erstellte Benutzer in die jeweiligen Felder eintragen. Mit ctrl-o speichern und mit ctrl-x schliessen.
Als letztes wird ein Autostart Eintrag erstellt, der das Spiel nach dem Hochfahren des Systems automatisch im Vollbild Modus startet.
crontab -e
Im geöffneten Editor als letzte Zeile folgenden Eintrag einfügen:
@reboot sleep 15 && DISPLAY=:0 firefox --kiosk --incognito --disable-pinch --overscroll-history-navigation=0 http://localhost/slot &
Ebenfalls abspeichern und schliessen und das System mit sudo reboot neu starten.
Nach dem Neustart wird das Spiel gestartet und kann verwendet werden. Über die Internetadresse http://<raspberrypi-IP>/slot kann das Spiel auf dem Computer oder auf dem Smartphone gestartet werden.

Gewinnchance

Auszahlungsquotient:

Die Gewinnchancen von Einarmigen Banditen in Casinos hängt nicht vom Glück ab, sondern sind Mathematisch berechnet. Im Casino werden die Automaten so eingestellt, dass das Casino Gewinn erzielen kann. Der Spieler soll Geld verlieren ohne es zu bemerken und gleichzeitig den Spielspass und die Hoffnung auf den grossen Gewinn behalten.
Dazu wird ein sogenannter Auszahlungsquotient berechnet. Er beschreibt wieviel des eingesetzten Geldes der Spieler zurückgewinnt. Ist der Quotient über eins (grösser 100%), verliert das Casino auf lange Sicht Geld. Ist der Quotient unter eins (kleiner 100%), verliert der Spieler auf lange Sicht Geld. In Casinos sind Auszahlungsquotienten um 90% üblich. Quelle
Da es sich um ein Glücksspiel ohne Geldeinsatz handelt, soll der Auszahlungsquotienten leicht über eins liegen.

Auszahlungsquotient berechnen:

Der Auszahlungsquotient berechnet sich mit der folgenden Formel:
Ausschüttung/Kosten=Rückgabewert

Kosten:

Für die Berechnung der Kosten wird angenommen, dass nur das 1$ Spiel gespielt wird. Daher sind die Kosten um alle Kombinationen einmal zu spielen genau die Anzahl aller Kombinationen. Auf jedem Reel sind 25 Zeichen. Somit gibt es auf jedem Reel 25 Mögliche Ausgänge. Da es 3 Reels gibt, werden die Möglichkeiten miteinander Multipliziert.
25*25*25=15'625 Möglichkeiten
Somit kostet es 15'625$ um alle Kombinationen ein Mal zu spielen.

Ausschüttung:

Die Ausschüttung zu berechnen ist etwas schwieriger. Dazu muss die Wahrscheinlichkeit der verschiedenen Kombinationen ermittelt werden.
Welches Zeichen angezeigt wird, wird mit einem Pseudo Zufalls Generator ermittelt. Jede Position hat somit dieselbe Wahrscheinlichkeit angezeigt zu werden. Daher kann für die Berechnung der Häufigkeit ein Laplace-Experiment verwendet werden.
p(A)=(#günstige Fälle)/(#mögliche Fälle)=k/n
Wendet man die Formel auf die verschiedenen Zeichen der Reels an, ergibt sich folgende Tabelle:

Zeichen Reel 1 p(1) Reel 2 p(2) Reel 3 p(3)
Seven 2 8% 2 8% 2 8%
Bar 3 12% 3 12% 2 8%
Diamond 3 12% 4 16% 3 12%
Gold 4 16% 3 12% 6 24%
Bell 6 24% 6 24% 3 12%
Lemon 5 20% 6 24% 6 24%
Cherry 2 8% 1 4% 0 0%
Clover 0 0% 0 0% 3 12%
TOTAL 25 100% 25 100% 25 100%

Um zu gewinnen benötigt der Spieler drei gleiche Zeichen. Um den Spielspass zu wahren gibt es die Kirsche, die auf jeden Fall einen Gewinn erzielt.
Bild folder.jpg
Um die Chancen auf die verschiedenen Gewinne zu ermitteln, werden die Wahrscheinlichkeiten miteinander Multipliziert. Die ermittelte Gewinnchance wird mit der Anzahl Kombinationen multipliziert. Daraus ergibt sich die Häufigkeit, in der die Gewinnkombination vorkommt.
Multipliziert man die Häufigkeit mit der Gewinnausschüttung für jede Kombination mit dem Preisgeld und addiert die Gewinne zusammen, erhält man die Ausschüttung.
Summe(p_n (1,2,3)*#mögliche Fälle*Preisgeld_n)
Daraus ergibt sich folgende Tabelle:
Kombination p(1) p(2) p(3) p(1,2,3) Häufigkeit Preisgeld Gewinn
Seven,Seven,Seven 8% 8% 8% 0,05% 8 200$ 1'600$
Bar,Bar,Bar 12% 12% 8% 0,12% 18 100$ 1'800$
Diamond,Diamond,Diamond 12% 16% 12% 0,23% 36 50$ 1'800$
Gold,Gold,Gold 16% 12% 24% 0,46% 72 25$ 1'800$
Bell,Bell,Bell 24% 24% 12% 0,69% 108 20$ 2'160$
Lemon,Lemon,Lemon 20% 24% 24% 1,15% 180 10$ 1'800$
Cherry,Cherry,ANY 8% 4% 100% 0,32% 50 5$ 250$
Cherry,ANY,ANY 8% 96% 100% 7,68% 1200 3$ 3'600$
ANY,Cherry,ANY 92% 4% 100% 3,68% 575 3$ 1'725$
TOTAL 14,38% 2247 16'535$

Somit ergibt sich eine Ausschüttung von 16'535$.
Ebenfalls interessant ist die Summe aller Wahrscheinlichkeiten. Sie besagt, dass bei jedem versuch eine 14,3% Chance besteht zu gewinnen. Dies entspricht etwa einem Gewinn nach jedem siebten Spiel.

Auszahlungsquotient Simulieren:

Mit den berechneten Werten lässt sich ein Auszahlungsquotient von 105,8% folgern. Da die Software digital läuft, kann der Auszahlungsquotient auch simuliert werden. Dazu wurde eine Statistik zu jeweils 100'000 simulierten Spielen erhoben:
Games Played Start-credits end-credits returnvalue wins looses win-ratio
100'000 100 7387 107% 14217 85783 17%
100'000 100 7874 107% 14486 85514 17%
100'000 100 5454 105% 14392 85688 17%
100'000 100 5337 105% 14332 85668 17%
100'000 100 10085 109% 14352 85648 17%
100'000 100 2381 102% 14865 85935 16%
100'000 100 5454 105% 14392 85688 17%
100'000 100 4939 104% 14399 85601 17%
100'000 100 5146 105% 14205 85795 17%
100'000 100 5002 104% 14277 85723 17%

Der simulierte Auszahlungsquotient liegt zwischen 102 und 109%. Dies bestätigt, dass der Auszahlungsquotient tatsächlich um 105% liegt.
Die Win-ratio stimmt jedoch nicht mit unserer Berechnung überein, liegt jedoch sogar höher als erwartet.

Download

Demo
HTML
index.html-SHA256:
SourceCode
PHP/SQL
slot-machine-game.zip7,96 MB
(8.350.482 Bytes)
SHA256:
Document
PDF
Gewinn-Tabelle.pdf268 KB
(274.517 Bytes)
SHA256:
Document
PDF
skizze.pdf71,5 KB
(73.316 Bytes)
SHA256:
3D-Druck
STL
3D-Teile.rar6,55 KB
(6.715 Bytes)
SHA256: