133 lines
6.5 KiB
Markdown
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]]
|