expanded basic game features
This commit is contained in:
79
docs/README_SERVER.md
Normal file
79
docs/README_SERVER.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# VCK Online FastAPI Server
|
||||
|
||||
Simple REST API server for developing and testing the Valeria Card Kingdoms Online game.
|
||||
|
||||
## Setup
|
||||
|
||||
1. Install dependencies:
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
2. Make sure database is accessible (SSH tunnel if needed):
|
||||
```bash
|
||||
ssh -L 3306:localhost:3306 lukesau.com
|
||||
```
|
||||
|
||||
## Running the Server
|
||||
|
||||
```bash
|
||||
python3 server.py
|
||||
```
|
||||
|
||||
Or with uvicorn directly:
|
||||
```bash
|
||||
uvicorn server:app --host 0.0.0.0 --port 8000 --reload
|
||||
```
|
||||
|
||||
The server will start on `http://localhost:8000`
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### Lobby
|
||||
|
||||
- `POST /api/lobby/join` - Join lobby with name
|
||||
```json
|
||||
{"name": "Player Name"}
|
||||
```
|
||||
Returns: `{"player_id": "...", "message": "Joined lobby"}`
|
||||
|
||||
- `POST /api/lobby/ready` - Mark player as ready
|
||||
```json
|
||||
{"player_id": "..."}
|
||||
```
|
||||
Returns game info if all players ready
|
||||
|
||||
- `POST /api/lobby/unready` - Mark player as not ready
|
||||
- `POST /api/lobby/leave?player_id=...` - Leave lobby
|
||||
- `GET /api/lobby/status?player_id=...` - Get lobby status
|
||||
|
||||
### Game
|
||||
|
||||
- `GET /api/game/{game_id}/state` - Get current game state
|
||||
- `POST /api/game/{game_id}/action` - Perform game action
|
||||
```json
|
||||
{
|
||||
"player_id": "...",
|
||||
"action_type": "hire_citizen|buy_domain|slay_monster|act_on_required_action|roll_phase|harvest_phase|play_turn",
|
||||
"citizen_id": 123, // for hire_citizen
|
||||
"domain_id": 456, // for buy_domain
|
||||
"monster_id": 789, // for slay_monster
|
||||
"gold_cost": 5, // for hire_citizen/buy_domain
|
||||
"strength_cost": 3, // for slay_monster
|
||||
"magic_cost": 0, // optional
|
||||
"action": "choose 1" // for act_on_required_action
|
||||
}
|
||||
```
|
||||
|
||||
## Web Client
|
||||
|
||||
Visit `http://localhost:8000` for a simple HTML client to test the API.
|
||||
|
||||
## Development Notes
|
||||
|
||||
- Games are stored in-memory (will be lost on server restart)
|
||||
- Inactive games are cleaned up after 3 minutes of no activity
|
||||
- Inactive lobby players are removed after 60 seconds
|
||||
- This is a development/testing server, not production-ready
|
||||
|
||||
|
||||
Reference in New Issue
Block a user