Files
2026-06-09 18:40:21 +02:00

133 lines
6.5 KiB
Markdown

---
title: Razzia
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, gaming, mini-jeux, web, python]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?search=Razzia]
---
# Razzia 🕹️
> Collection de mini-jeux web multijoueurs jouables en navigateur — soirée LAN improvisée ou partie rapide entre amis sans rien installer.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://razzia.ninja |
| **GitHub** | https://github.com/nicokrause/razzia |
| **License** | MIT |
| **Langage** | Python / HTML5 / WebSockets |
| **Étoiles** | 10 |
| **Dernière MAJ** | 2024 |
| **Catégorie** | [[cat-gaming]] |
## Description
Razzia est un projet modeste mais attachant qui regroupe une **collection de mini-jeux web multijoueurs** accessibles depuis un simple navigateur. L'idée est de fournir un kit prêt à l'emploi pour animer une LAN party, un team building ou une pause déj, sans Steam, sans comptes à créer, sans installations clientes. L'utilisateur ouvre une URL, crée ou rejoint un salon avec un code à 4-6 lettres, et joue immédiatement.
L'architecture serveur est écrite en **Python** (Flask/FastAPI + WebSockets via Flask-SocketIO ou websockets) et gère la logique de jeu, le state management par salon, la synchronisation des inputs et la diffusion des frames. Côté client, les jeux sont écrits en **HTML5 Canvas / WebGL** ou parfois en SVG/DOM pour des mécaniques plus simples (Blind Test, Quiz, Tic-Tac-Toe, dessin collaboratif, etc.). L'esthétique est volontairement dépouillée, façon « jeux de soirée entre potes ».
Parmi les jeux typiques embarqués : quiz musical (blind test), bataille de dessin façon Pictionary, trivia personnalisée, tic-tac-toe géant, jeux de mots type Codenames, memory, etc. Chaque jeu gère ses propres salons, ses scores et ses règles. Le code est pensé pour être **hacked** : ajouter un mini-jeu revient à écrire une classe Python héritant d'une interface commune, et un front HTML/JS consommant les événements WebSocket.
Razzia est **opinionated** : pas d'auth (juste un pseudo par salon), pas de persistance long-terme (les salons disparaissent à l'arrêt), pas de comptes utilisateurs. C'est sa philosophie : un projet minimaliste, lisible, modifiable, parfait pour apprendre les WebSockets et l'organisation d'un serveur de jeux multijoueurs.
## Installation
### Prérequis
- Python 3.9+ (recommandé 3.11).
- Pip et virtualenv.
- Navigateur moderne côté client (WebSockets, Canvas).
- Port 5000 (ou autre) libre sur l'hôte.
### Docker Compose
```yaml
version: "3.8"
services:
razzia:
image: ghcr.io/nicokrause/razzia:latest
container_name: razzia
restart: unless-stopped
ports:
- "5000:5000"
environment:
- SECRET_KEY=unSecretAleatoireTresLong
- MAX_PLAYERS=16
- IDLE_TIMEOUT=1800
volumes:
- ./data:/app/data
```
### Installation manuelle
```bash
git clone https://github.com/nicokrause/razzia.git
cd razzia
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
# Lancer (selon l'implémentation exacte)
python app.py
# Ouvrir http://localhost:5000
```
L'interface est minimaliste : on clique sur « Créer une partie », on partage le code à 6 lettres, les joueurs rejoignent et choisissent un pseudo.
## Configuration
Les options sont volontairement limitées pour rester simples :
- **Port d'écoute** : 5000 par défaut, modifiable via variable d'environnement `PORT` ou argument CLI.
- **Secret key** : pour signer les sessions WebSocket (`SECRET_KEY`).
- **Liste des jeux actifs** : certains fichiers `games.json` ou modules Python peuvent être activés/désactivés.
- **Limites** : nombre max de joueurs par salon (`MAX_PLAYERS`, souvent 12-16), durée max d'inactivité avant fermeture du salon (`IDLE_TIMEOUT`).
- **Nom de domaine / proxy** : si exposition publique, mettre derrière Caddy/Traefik avec TLS.
- **Personnalisation** : modifier `static/css/`, `templates/`, ajouter des sons dans `static/sounds/`.
Il n'y a **pas** de panneau d'administration, pas d'analytics, pas de logs persistants. C'est assumé.
## Alternatives
### Open Source
- **Skribbl.io** (clone open source) — Pictionary en ligne.
- **Gartic** (clone open source) — téléphone arabe version dessin.
- **HaxBall** (clone open source) — football 2D multijoueur.
- **OpenTrivia** — quizz multi-joueurs.
- **Codenames** (clones web) — jeu de mots d'Ilya Borisov, plusieurs implémentations open source.
- **moodlequiz**, **trivyeah** — quizz live style Kahoot open source.
- **Spyfall** (implémentations web) — jeu de société adapté.
### Propriétaires
- **Kahoot** — quizz en classe, freemium.
- **Gartic Phone** — site officiel propriétaire.
- **Jackbox.tv** — jeux de société TV-style, achat par pack.
- **Skribbl.io** — site officiel avec pubs.
- **Codenames** (Codenames.game) — clone web propriétaire.
- **Psych!** (Amazon) — bluff multijoueur.
## Sécurité
- **Pas d'auth native** : Razzia ne gère pas d'authentification, n'importe qui avec le code salon peut rejoindre.
- **Reverse proxy** : si exposition WAN, **toujours** mettre TLS (Caddy, Traefik, Nginx + Let's Encrypt), sinon les codes salon et pseudos transitent en clair.
- **Rate limiting** : le serveur Python de base n'a pas de rate limit robuste ; en production, ajouter un WAF (Crowdsec, fail2ban) ou un reverse proxy avec rate limit.
- **Modération** : absence totale — pas de filtre de pseudos, pas de signalement, pas de mute. À ajouter ou à garder pour usage privé (LAN, famille).
- **Isolation** : le conteneur doit lire un `SECRET_KEY` fort et être lancé avec un utilisateur non-root.
- **Surface d'attaque** : limiter le conteneur aux ports nécessaires, désactiver les capabilities non requises, lire les logs (`docker logs razzia`) pour traquer les comportements anormaux.
- **Mises à jour** : projet jeune, mises à jour peu fréquentes ; surveiller les CVE sur Flask, Werkzeug, websockets.
## Ressources
- GitHub : https://github.com/nicokrause/razzia
- Démo en ligne : https://razzia.ninja (si disponible)
- Issues et discussions : https://github.com/nicokrause/razzia/issues
- Documentation Flask-SocketIO : https://flask-socketio.readthedocs.io
- MDN WebSockets : https://developer.mozilla.org/fr/docs/Web/API/WebSockets_API
- Tutoriel « build a multiplayer game » : https://github.com/topics/multiplayer-game
## Pages Liées
- [[cat-gaming]]
- [[recettes-docker-compose]]
- [[app-crafty-controller]]
- [[app-foundry-virtual-tabletop]]
- [[app-traefik]]