Ajouter README.md
This commit is contained in:
commit
061a54c816
82
README.md
Normal file
82
README.md
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
# Soulgate
|
||||||
|
|
||||||
|
Jeu coop 3 joueurs en ligne, jouable dans le navigateur. Horde survival isométrique : on défend un portail (le Soulgate) contre 3 vagues d'ennemis avec 2 boss à la fin.
|
||||||
|
|
||||||
|
Projet de fin d'année DSP CNAM Paris.
|
||||||
|
|
||||||
|
## Stack
|
||||||
|
|
||||||
|
- **Serveur** : Python 3.13, FastAPI, WebSocket
|
||||||
|
- **Client** : JavaScript (ES modules), PixiJS 8 (WebGL)
|
||||||
|
- **BDD** : SQLite (leaderboard)
|
||||||
|
- **Tests** : pytest
|
||||||
|
|
||||||
|
Le serveur est autoritaire : il fait tous les calculs et envoie le state aux clients 20 fois par seconde via WebSocket.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
### Serveur
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# venv + dépendances
|
||||||
|
python3 -m venv server/.venv
|
||||||
|
source server/.venv/bin/activate
|
||||||
|
pip install -r server/requirements-dev.txt
|
||||||
|
|
||||||
|
# lancer
|
||||||
|
cd server
|
||||||
|
uvicorn main:app --reload --host 0.0.0.0 --port 8000
|
||||||
|
```
|
||||||
|
|
||||||
|
### Client
|
||||||
|
|
||||||
|
Le client a besoin d'être servi en HTTP (pas en file://) à cause des ES modules.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd client
|
||||||
|
python3 -m http.server 3000
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis ouvrir `http://localhost:3000` dans 3 navigateurs (ou onglets).
|
||||||
|
|
||||||
|
## Tester
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd server
|
||||||
|
pytest tests/
|
||||||
|
```
|
||||||
|
|
||||||
|
49 tests, tous en vert.
|
||||||
|
|
||||||
|
## Contrôles
|
||||||
|
|
||||||
|
| Action | Touche |
|
||||||
|
|--------|--------|
|
||||||
|
| Déplacement | ZQSD ou flèches |
|
||||||
|
| Attaque | Clic gauche |
|
||||||
|
| Compétences | 1, 2 |
|
||||||
|
| Déplacement spécial | E |
|
||||||
|
|
||||||
|
## Comment jouer
|
||||||
|
|
||||||
|
1. Tape ton pseudo
|
||||||
|
2. Un joueur clique **Create Game** (il devient host) et partage le code à 6 lettres
|
||||||
|
3. Les 2 autres font **Join Game** et entrent le code
|
||||||
|
4. Chacun choisit une classe (Kael / Seris / Aldric) puis clique **Ready**
|
||||||
|
5. Le host lance la partie avec **Start Game**
|
||||||
|
6. Survivez aux 3 vagues, achetez des upgrades entre les vagues, battez Vexaris (vague 2) puis Morveth (vague 3)
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
soulgate/
|
||||||
|
├── server/ backend Python (FastAPI + game loop)
|
||||||
|
├── client/ frontend JS + assets
|
||||||
|
└── README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Une seule partie active à la fois sur le serveur (mono-instance)
|
||||||
|
- Les sprites des persos / ennemis sont en pixel art, fait à la main
|
||||||
|
- L'arène est faite avec Tiled (assets Kenney isometric-miniature-dungeon, CC0)
|
||||||
Loading…
x
Reference in New Issue
Block a user