# 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)