Aller au contenu
← projets / Catan

Catan

Adaptation web multijoueur du jeu de société Catan, jouable à plusieurs dans un navigateur en temps réel.

Fiche
année
2025
rôle
Conception et développement full-stack
statut
En production
front
Vue 3
back
FastAPI, Python, WebSocket
données
PostgreSQL
Catan — vue carte plein écran
Catan — vue d'ensemble

Contexte

Le projet

Une version numérique de Catan, jouable en multijoueur dans le navigateur : plateau généré aléatoirement, placement des colonies et des routes, production de ressources, échanges entre joueurs, voleur et décompte des points de victoire.

Architecture

Stack : Vue 3 · FastAPI · PostgreSQL · WebSocket

L'état de la partie vit sur le serveur, jamais dans le client. Chaque action envoyée par un joueur est validée côté serveur — est-ce son tour, a-t-il les ressources, l'emplacement est-il légal — avant d'être appliquée puis rediffusée à tous les participants.

C'est la seule architecture défendable pour un jeu multijoueur : un client qui calcule lui-même ce qu'il a le droit de faire est un client qu'on peut modifier.

Ce que le jeu apprend

Catan est un excellent exercice de modélisation. Le plateau est un pavage hexagonal où les colonies se placent sur les sommets et les routes sur les arêtes — trois systèmes de coordonnées cohabitent donc, et la moitié du travail consiste à naviguer proprement entre eux : quelles tuiles touchent ce sommet, quelles arêtes partent d'ici, quels sommets sont trop proches pour accueillir une nouvelle colonie.

Une fois cette géométrie posée correctement, les règles du jeu deviennent presque triviales à implémenter. Posée de travers, chaque règle devient un cas particulier.

Architecture

01 · État

L'état de la partie vit entièrement sur le serveur, jamais dans le client.

02 · Validation

Chaque action est vérifiée côté serveur — tour, ressources, légalité — avant application.

03 · Diffusion

Le nouvel état est rediffusé à tous les participants par WebSocket.

04 · Persistance

Partie et déroulé conservés en PostgreSQL, environnement démarré en une commande docker compose.

Interface

Panneau de filtres et sources
Fiche détail d'un élément

Projet suivant

Thanos

Continuer