This repository has been archived on 2025-06-18. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
casino/projektdokumentation/Inhalt/Lootboxes.tex
jank 96aca3b293
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 9s
CI / Docker frontend validation (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 12s
CI / prettier (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m13s
chore: Add some more docs idc
2025-06-11 14:51:20 +02:00

78 lines
No EOL
5.9 KiB
TeX

\section{Lootboxes}
\subsection{Was sind Lootboxes?}
Lootboxes sind digitale Belohnungsbehälter, die gegen eine feste Gebühr geöffnet werden können und dem Spieler einen zufälligen Gewinn basierend auf vordefinierten Wahrscheinlichkeiten gewähren. Das System orientiert sich an bekannten Gaming-Mechaniken und bietet Spielern die Möglichkeit, durch Glück höhere Gewinne zu erzielen als den bezahlten Einsatz. Jede Lootbox enthält verschiedene Belohnungen mit unterschiedlichen Gewinnwahrscheinlichkeiten, wodurch ein Spannungselement entsteht.
Das Lootbox-System der Casino-Plattform umfasst sowohl die Verwaltung verschiedener Lootbox-Typen als auch ein animiertes Öffnungserlebnis, das an populäre Spiele wie Counter-Strike erinnert. Spieler können zwischen verschiedenen Lootboxes wählen, die sich in Preis und Belohnungsstruktur unterscheiden.
\subsubsection{Wahrscheinlichkeitssystem und Belohnungsverteilung}
Das Herzstück des Lootbox-Systems ist der Wahrscheinlichkeitsalgorithmus, der faire und nachvollziehbare Belohnungsverteilungen gewährleistet. Jede Belohnung in einer Lootbox hat eine definierte Wahrscheinlichkeit zwischen 0,0 und 1,0 (0\% bis 100\%). Die Gewinnermittlung erfolgt durch einen kumulativen Wahrscheinlichkeitsansatz:
\begin{enumerate}
\item Generierung einer Zufallszahl zwischen 0 und 1
\item Iteration durch alle Belohnungen mit Akkumulation der Wahrscheinlichkeiten
\item Rückgabe der ersten Belohnung, bei der die Zufallszahl kleiner oder gleich der kumulativen Wahrscheinlichkeit ist
\item Fallback zur letzten Belohnung bei keiner Übereinstimmung (Sicherheitsmechanismus)
\end{enumerate}
Dieses System ermöglicht eine präzise Kontrolle über die Verteilung der Belohnungen und gewährleistet, dass seltene Gegenstände entsprechend ihrer konfigurierten Wahrscheinlichkeit auftreten.
\subsubsection{Seltenheitssystem}
Die Lootboxes verwenden ein sechsstufiges Seltenheitssystem, das visuell durch Farbkodierung dargestellt wird:
\begin{itemize}
\item \textbf{Common (Häufig):} 40\%+ Wahrscheinlichkeit - Blau
\item \textbf{Uncommon (Ungewöhnlich):} 20-40\% Wahrscheinlichkeit - Grün
\item \textbf{Rare (Selten):} 10-20\% Wahrscheinlichkeit - Blau
\item \textbf{Epic (Episch):} 5-10\% Wahrscheinlichkeit - Lila
\item \textbf{Legendary (Legendär):} 1-5\% Wahrscheinlichkeit - Gold
\item \textbf{Mythic (Mythisch):} <1\% Wahrscheinlichkeit - Rot
\end{itemize}
Die Farbkodierung wird sowohl in der Auswahlansicht als auch während der Öffnungsanimation verwendet, um Spielern sofort die Seltenheit ihrer Belohnung zu kommunizieren.
\subsubsection{Animiertes Öffnungserlebnis}
Das Frontend bietet ein hochgradig animiertes Öffnungserlebnis, das die Spannung und das Engagement der Spieler steigert. Die Öffnungssequenz umfasst:
\begin{enumerate}
\item \textbf{Auswahlphase:} Rasteranzeige verfügbarer Lootboxes mit Preis und möglichen Belohnungen
\item \textbf{Öffnungsanimation:} 10-sekündige horizontale Scrollanimation mit 120 Gegenständen
\item \textbf{Gewinnermittlung:} Hervorhebung des Gewinnergegenstands an Position 60
\item \textbf{Ergebnisdarstellung:} Einblendanimation für Gewinn und Gewinn-/Verlustberechnung
\end{enumerate}
Die Animation generiert eine Walze mit 120 Gegenständen, wobei der tatsächliche Gewinn immer an der mittleren Position (60) platziert wird. Dies erzeugt den Eindruck einer echten Zufallsauswahl, obwohl das Ergebnis bereits vorher feststeht.
\subsubsection{Datenmodell und Verwaltung}
Das Backend verwendet ein flexibles Datenmodell, das die Erstellung und Verwaltung verschiedener Lootbox-Typen ermöglicht:
\textbf{LootBoxEntity:} Repräsentiert eine Lootbox mit Namen, Preis und zugehörigen Belohnungen. Die Beziehung zu Belohnungen erfolgt über eine Viele-zu-Viele-Verknüpfung, wodurch Belohnungen zwischen verschiedenen Lootboxes geteilt werden können.
\textbf{RewardEntity:} Definiert einzelne Belohnungen mit Wert und Wahrscheinlichkeit. Die Wahrscheinlichkeit wird als Dezimalzahl mit einer Genauigkeit von 5 Stellen und 2 Nachkommastellen gespeichert.
Die Verwaltung erfolgt über REST-Endpunkte, die sowohl das Abrufen verfügbarer Lootboxes als auch das Kaufen und Öffnen ermöglichen. Administrative Funktionen erlauben das Erstellen neuer Lootboxes und das Löschen bestehender.
\subsubsection{Kaufprozess und Guthaben-Integration}
Der Lootbox-Kaufprozess ist nahtlos in das Guthaben-Management-System der Plattform integriert:
\begin{enumerate}
\item Validierung des Benutzerguthabens gegen den Lootbox-Preis
\item Sofortige lokale Guthabenabzug für responsives Benutzererlebnis
\item Backend-API-Aufruf zur Kaufabwicklung
\item Server-seitige Belohnungsermittlung mittels Wahrscheinlichkeitsalgorithmus
\item Guthaben-Update (Preis abziehen, Belohnung hinzufügen)
\item Frontend-Synchronisation und Animationsstart
\end{enumerate}
Das System gewährleistet durch transaktionale Datenbankoperationen, dass Guthaben-Updates atomisch erfolgen und keine inkonsistenten Zustände entstehen können.
\subsubsection{Sicherheit und Fairness}
Die Lootbox-Implementierung legt besonderen Wert auf Sicherheit und Fairness:
\textbf{Server-seitige Autorität:} Alle Belohnungsermittlungen erfolgen ausschließlich auf dem Server, wodurch Client-seitige Manipulationen ausgeschlossen werden.
\textbf{Eingabevalidierung:} Sowohl die Datenübertragungsobjekte als auch die Backend-Services validieren alle Eingaben auf Korrektheit und Bereichsgrenzen.
\textbf{Wahrscheinlichkeitsintegrität:} Das System überwacht die Wahrscheinlichkeitswerte und gewährleistet, dass sie im gültigen Bereich (0,0-1,0) liegen.
Die Implementierung bietet somit ein vollständiges, produktionsreifes Lootbox-System mit robusten Frontend-Animationen, ordnungsgemäßer Backend-Validierung und nahtloser Benutzerintegration.