2021-12-03 18:03:29 +01:00
|
|
|
# Game process
|
|
|
|
|
|
|
|
1. Register user
|
|
|
|
- Store name, password
|
|
|
|
- Create session token
|
|
|
|
2. Create table
|
|
|
|
- Store name
|
|
|
|
- Create id
|
|
|
|
- Add player to table
|
|
|
|
3. Wait for all players
|
|
|
|
4. Deal first 4 cards
|
|
|
|
- Store all hand cards, show only 4
|
|
|
|
5. Collect leger
|
|
|
|
- Consecutive choice for each player
|
|
|
|
6. Deal last 4 cards
|
|
|
|
- Start bidding
|
|
|
|
7. Bidding
|
|
|
|
- Choice for each player to match/increase bid
|
|
|
|
8. Select game
|
|
|
|
- Highest bidder selects game
|
|
|
|
- Move to playing
|
|
|
|
9. Play cards
|
|
|
|
- Allow shots until certain trick
|
|
|
|
- Collect completed tricks
|
|
|
|
- Determine winning card
|
|
|
|
- End game on last card
|
|
|
|
10. Finish game
|
|
|
|
- Count points
|
|
|
|
- Determine winner
|
|
|
|
- Back to 4
|
|
|
|
|
|
|
|
# Architecture
|
|
|
|
|
|
|
|
## Messages to clients over the websocket
|
|
|
|
|
|
|
|
### Table info
|
|
|
|
|
|
|
|
Contains the general information about the table:
|
|
|
|
- Player names, Table name
|
|
|
|
|
|
|
|
### ConnectionState
|
|
|
|
|
|
|
|
Indicates which players are currently online
|
|
|
|
|
|
|
|
### GameState
|
|
|
|
|
|
|
|
- Current player (either to play a card, state game intention, )
|
|
|
|
- First player in the round
|
|
|
|
- Game type (either game, or negotiation stage)
|
|
|
|
|
2021-11-29 11:54:59 +01:00
|
|
|
# TODOs
|
|
|
|
|
|
|
|
## Make UI for table
|
|
|
|
- Show players (+ connection state)
|
|
|
|
- Show played cards
|
|
|
|
- Show own cards
|
|
|
|
- Game negotiation
|
|
|
|
|
|
|
|
## Updates from server
|
|
|
|
- Players at table (+ connection state, first/current player)
|
|
|
|
- Played cards
|
|
|
|
- Current player
|
|
|
|
- Game negotiation data
|
|
|
|
- Remaining cards
|
|
|
|
- Game results
|
|
|
|
|
|
|
|
## API
|
|
|
|
- Leave table
|
|
|
|
- Start game
|
|
|
|
- Send negotiation input
|
|
|
|
- Send played card
|
|
|
|
- Send
|
|
|
|
|
|
|
|
## Logic
|
|
|
|
- Shuffle cards
|
|
|
|
- Cards, Card sets
|
|
|
|
- Determine playable cards
|
|
|
|
- Determine win of round
|
|
|
|
- Rank game types, negotiation
|
|
|
|
|
|
|
|
# Roadmap
|
|
|
|
|
|
|
|
Version 2:
|
|
|
|
- Configure game options
|
|
|
|
- Switch player positions
|
|
|
|
- Set first player
|
|
|
|
- Add game costs and player scores
|
|
|
|
- Introduce "legen" and "schießen"
|
|
|
|
|
|
|
|
Version 3:
|
|
|
|
- Private tables
|
|
|
|
- Add simple computer player
|
|
|
|
- Global statistics for players
|
|
|
|
- Save data persistently
|
|
|
|
- Table administrator can remove players
|
|
|
|
|
|
|
|
|
|
|
|
|