... | ... | @@ -24,6 +24,49 @@ Der Singleplayer funktioniert Server-seitig komplett stateless. |
|
|
Auswertung und GameLogik werden komplett vom Client übernommen, das Fetchen der Fragen funktioniert über SvelteKit Load Funktions, die anhand des Cookies die bereits benutzen Fragen aus Redis auslesen kann.
|
|
|
Der Highscore wird im Browser mit Hilfe von Lokalstorage gespeichter.
|
|
|
|
|
|
|
|
|
## Multiplayer
|
|
|
Im Multiplayer wird für jedes Spiel ein
|
|
|
|
|
|
```mermaid
|
|
|
classDiagram
|
|
|
class Game{
|
|
|
String id
|
|
|
Map players
|
|
|
Enum status
|
|
|
Number roundTime
|
|
|
Number currentRoundTime
|
|
|
Array questions
|
|
|
Number round
|
|
|
Object activeQuestion
|
|
|
Array usedQuestionIDs
|
|
|
Number maxPlayers
|
|
|
Number maxPoints
|
|
|
Object socket
|
|
|
constructor Game(Object socket)
|
|
|
join(Object Player)
|
|
|
leave(String Player.ID)
|
|
|
startTimer(Enum status)
|
|
|
startGame()
|
|
|
fetchQuestions()
|
|
|
getNewQuestion()
|
|
|
roundOver()
|
|
|
checkAnswer(String answerID, String playerID)
|
|
|
gameOver()
|
|
|
}
|
|
|
class Player{
|
|
|
String id
|
|
|
String name
|
|
|
Number points
|
|
|
Boolean correctAnswer
|
|
|
Boolean ready
|
|
|
Boolean answer
|
|
|
Number deltaPoints
|
|
|
constructor(String name, String id)
|
|
|
resetAnswer()
|
|
|
}
|
|
|
```
|
|
|
|
|
|
# Technologien
|
|
|
## SvelteKit
|
|
|
> UI-Framework, das außerdem auch Routing und Data-Loading unterstützt.
|
... | ... | |