From 061a54c8162861aabc376c3dca89897941fec234 Mon Sep 17 00:00:00 2001 From: ylies Date: Mon, 4 May 2026 03:38:30 +0200 Subject: [PATCH] Ajouter README.md --- README.md | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..edb0512 --- /dev/null +++ b/README.md @@ -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)