- Repo klonieren
- Datenbank erstellen utf8_mb4_general_ci name schikane
- Datenbank migrieren: php index.php migrate latest
- websockets am server aktivieren extension=sockets in php.ini
- vhost erstellen schikanezwei.loc od. $config['base_url'] in application/config/config.php anpassen
- composer install
- php connection.php im Hauptverzeichnis ausführen um Websockets zu starten
- Website im Browser aufrufen
Minimum Viable Product:
- Kartenspiel für 2 Spieler
- User Login
- Spielersuche
- Freundesliste
- Spiel-Einladungen
- User-Dashboard
- Statistiken
- User-Nachrichten
Optionale Features:
- Kartenspiel für 4 Spieler
- Chat
- Feedback Kanal
- geführtes Tutorial
- KI-Matches
Zwei volle Karten-Decks mit 4 Jokern werden verwendet Karten haben Werte entsprechend ihrer Position, Ass ist 1 und König 13 Jeder Spieler erhält 6 Karten als Hand-Karten Und 14 Karten als Spiel-Stapel, wobei die oberste Karte aufgedeckt wird Es gibt einen Hauptstapel, bestehend aus den restlichen Karten, welche immer verdeckt sind Jeder Spieler hat 4 Ablege-Stapel Und einen Joker-Stapel Joker-Stapel und Ablage-Stapel sind immer für alle Spieler einsehbar
Ziel ist es, den Spiel-Stapel durch ablegen im Spielfeld zu entleeren Gewonnen hat der Spieler, dessen Spiel-Stapel zuerst leer ist Karten im Spielfeld dürfen nur in aufsteigender Reihenfolge abgelegt werden Alle Spieler teilen sich die Stapel im Spielfeld Karten aus Hand-Karten, Ablege-Stapel, Joker-Stapel und Spiel-Stapel dürfen zum ablegen verwendet werden Kann ein Spieler nicht im Spielfeld ablegen, muss er eine Karte auf einen Ablagestapel legen Durch ablegen auf den Ablege-Stapel endet eine Runde
Karten dürfen in die Ablage-Stapel in beliebiger Reihenfolge abgelegt werden Aus dem Ablagestapel dürfen aber immer nur die obersten Karten agehoben werden Wenn die Karten der Hand-Karten vor Runden-Ende leer sind, dürfen Karten aus dem Hauptstapel abgehoben werden Joker aus dem Spiel-Stapel dürfen sofort in den Joker-Stapel gelegt werden Joker stehen für alle Karten, außer Ass Ist ein Stapel im Spielfeld bei König angelangt, wird er in den Hauptstapel gemischt Zu Runden-Beginn dürfen fehlende Karten in die Hand-Karten abgehoben werden, bis wieder 6 Karten in den Hand-Karten sind
User
- Registrierung mit Username, Email und Passwort
- Verifickation per Email
- Login als User
- oder Gast mit eingeschränkten Funktionen
Verbindung
- Spieler klicken auf Spielersuche
- diese Spielbereiten Spieler landet in einer Lobby
- von dort aus kann mit gegenseitigem Einverständnis ein Spiel gestartet werden
- Spielstart gibt beiden Spielern Zugang zu einem privaten Port
- zur Sicherheit werden Keys ausgetauscht
- Alternativ können aus der Lobby gerade angemeldete User eingeladen werden
- Eingeladete erhalten erhalten eine Nachricht mit Link zur Lobby
- Vielleicht auch per Email
Game
-
Karten liegen als JSON am Server, bestehen aus:
- Name, der später zur Erzeugung von SVGs verwendet wird
- Wert der Karte
- Karten ID
- Joker-Wert (merkt den Wert der Karte, die ersetzt wird)
-
ein Server-Script mischt die Karten und schickt die gerade sichtbaren an den Client
-
der Spieler klickt auf eine Karte und danach auf die Position, auf der sie gelegt werden soll
- Javscript gibt die Auswahl dann an den Server weiter
-
der Server überprüft den Zug auf Gültigkeit
- bei Gültigkeit werden die Daten verschoben und der Client wird über diese Veränderung in Kenntnis gesetzt
-
am Client werden die veränderten Karten und Stapel neu gerendert
-
ein Spiel-Script verwaltet Anzahl der Spiel und wer gerade dran ist
- ebenso die Spielenden, gewonnen unentschieden oder verloren
Daeshboard
- Nachrichten Eingang
- Als Overlay von jeder Seite zugänglich
- Statistik mit erlangten Siegen, K/D Ratio etc.
- Logout
- Account Löschung
Friendlist
- zeigt an wer gerade online ist
- User können eingeladen werden
- User können blockiert werden
- Privatnachrichten können verschickt werden
Chat
- In-Game Chat
- Emoji-Support
Nachrichten
- werden vom User-Dashboard verschickt
- vielleicht HTML-Support
- landen im Post Eingang des Dashboards
- vielleicht auch als Email
- Text-Nachrichten, oder Einladungen mit Links#
KI
-
aus sichtbaren Karten werden mögliche Züge berechnet
- potenzielle Züge erhalten eine Bewertung nach Effektivität
- je nach Schwierigkeitsgrad werden Züge mit besserer oder schlechterer Bewertung ausgeführt
- gleichwertige Züge werden per Zufall ausgeführt
-
anhand der sichtbaren Karten werden Wahrscheinlichkeit des Vorkommens noch nicht gezogener Karten berechnet
- ein potenzieller Zug wird besser bewertet, wenn das Ziehen einer nützlichen Karte wahrscheinlich ist
-
Effektivität erhöht sich durch die Anzahl der in einer Runde ablegbaren Karten
- KI macht mögliche Züge nicht, wenn die Effektivität nicht hoch genug ist und setzt aus
Statistik
-
wohnen im Dashboard
-
enthalten Daten über zurückliegende Spiele
- Gegner (KI oder Mensch)
- Sieg und Verlierung
- Spielabrüche
-
für Administratoren interessante Werte
- Zeit in Lobby
- Zeit zwischen Runden
- Ignores von andern Spielern
Geführtes Tutorial
- bei Seitenaufruf angeboten
- startet ein Pseudo-Spiel
- mit Popups werden Spielregeln erklärt
- Längen werden geskippt
- Gesamtlänge: 3 - 5 min