
Contexte
En 2021, mes amis et moi découvrions Project Zomboid sur notre serveur privé. Nous avions choisi Raven Creek, une carte communautaire immense et ultra-détaillée.
Le problème
Il était très compliqué de se retrouver mutuellement en jeu. La carte est très grande, avec des plusieurs centaines de bâtiments sur plusieurs niveaux, jongé de zones de loot et de ressources dispersées. On passait beaucoup de temps à essayer de se reperer dans l'espace.
L'idée : créer une carte interactive, allant bien au-delà d'une simple carte statique.
Il existait déjà des maps interactives communautaires, mais elles ne correspondaient pas à ce que j'avais en tête. Je voulais une map ultra-haute résolution avec zoom détaillé, des filtres avancés (bâtiments, ressources), des marqueurs personnalisés, et surtout un système de tracking en temps réel de nos positions en jeu.
Un peu comme un Google Map pour Project Zomboid quoi...
Solution
J'ai conçu RavenCreek Map, un site web pensée comme un véritable outil de survie collaborative.
Attention, voici la seul image qu'il me reste du projet...

Fonctionnalités
- 🗺️ Navigation fluide : Zoom + Pan de qualité
- 🎨 9 calques thématiques : satellite, bâtiments, routes, végétation, topographie, etc.
- 📱 Interface responsive : Adaptée l'interface aux desktop mobiles
- 🔍 Filtre de recherche par centre d'interets :
- 🏥 Filtres par bâtiments : commissariats, hôpitaux, magasins, stations-service, bases militaires, etc.
- 🎒 Filtres de ressources : points d'eau, zones de nourriture, emplacements d'armes, véhicules
- 📍 Marqueurs personnalisés : placer des pins (base, danger, loot important, refuge, spot)
Intégration serveur et tracking en temps réel
Le projet ne s'arrêtait pas à la carte. L'objectif était de créer un écosystème complet.
J'ai donc créé un plugin pour Project Zomboid communiquant avec l'API backend du site web.
Celui-ci permettant de :
- 📡 Tracker en temps réel les joueurs et affichager leur positions en direct sur la map, recolter des statistiques de jeu** comme les distances parcourues, zones explorées, temps de survie etc
- 🧭 Système GPS qui permet la navigation assistée vers des points d'intérêt ou d'autres joueurs
OpenSeadragon
Le cœur du projet reposait sur l'affichage d'une image gigantesque. OpenSeadragon est une bibliothèque JavaScript open-source spécialisée dans la visualisation d'images ultra-haute résolution avec un système de zoom transparant.
Son fonctionnement repose sur le chargement par tuiles : l'image est pré-découpée en petites tuiles (256×256, 512×512...) organisées en pyramide de zoom. Seules les zones visibles à l'écran sont chargées, ce qui permet de zoomer indéfiniment sans ralentissement, même sur des machines moins performante ou des débits de connexion limité. C'était exactement ce qu'il me fallait pour RavenCreek.


Système de calques
La fonctionnalité de calques permet de lire la même zone selon différents besoins (exploration, navigation, loot, danger, etc.).

Défis rencontrés
Génération des tuiles
Le vrai défi était d'abord d'obtenir une exportation utilisable de la map. À l'époque, j'utilisais TileZed (l'éditeur de map de Project Zomboid) qui intégre un outil pour exporter l'intégralité de la carte Raven Creek par zone (tiles), mais les tuiles générées avaient des dimensions et des ratios incompatibles avec OpenSeadragon. OpenSeadragon nécessite un format de 1:1 pour gestion facilité et des résolutions multiples pour fonctionner correctement avec son système de zoom pyramidal.
Export de TileZed
Comme TileZed ne permettait pas de contrôler précisément la taille d'export ni la résolution, j'ai dû adapter un script Photoshop existant. J'ai découvert le Google Maps Tile Cutter de Bramus Van Damme et l'ai modifié pour Project Zomboid et OpenSeadragon.
Le script faisait quelque chose d'assez intelligent :
- Réassemblage indexé des tiles : Avant toute découpe finale, le script repositionnait chaque tuile exportée par TileZed dans le bon ordre (selon son index X/Y) pour reconstruire la map complète sans décalage. Cette étape évitait surtout que les bâtiments hauts soient mal alignés ou rognés.
- Redimensionnement en carré : Une fois la map complète reconstruite, le script prenait cette image globale et la redimensionnait au bon format. Cela garantissait une taille tileable en puissance de 2 (2048, 4096, etc.).
- Génération pyramidale : À partir du carré original, il créait automatiquement tous les niveaux de zoom (du plus détaillé au plus dézoomé) en réduisant l'image de 50% à chaque niveau.
- Découpe intelligente : Pour chaque niveau de zoom, il découpait l'image en tuiles carrées (ex: 1024×1024 pixels) et les organisait dans une structure de dossiers
z/x_y.jpg. - Gestion des snapshots : Chaque niveau de zoom était sauvegardé comme snapshot Photoshop, permettant de revenir instantanément à l'état précédent sans recalculer.
- Export XML pour OpenSeadragon : Le script générait aussi un fichier
map.xmlau format Deep Zoom (DZI) contenant les métadonnées necessaires à OpenSeadragon pour fonctionner.
C'était du bricolage, la techniques utilisées étaient vraiment pas adapté. Le fichier photoshop faisais 15Go à lui seul... mais ça a fait le job ! Avec le recul, je ferais tout ça en Python, de manière bien plus maintenable.
Communication serveur ↔ backend
Un autre défi technique était de faire communiquer le serveur Project Zomboid avec le backend :
- Développer un mod Java/Lua qui capture les positions des joueurs
- Établir une connexion stable avec le WebSocket
- Gérer la synchronisation temps réel sans surcharger les serveurs
- Assurer la sécurité des données (authentification, validation)
Ce que ce projet m'a appris
- Concevoir une application cartographique interactive orientée performance.
- Manipuler des images très haute résolution sans dégrader l'expérience utilisateur.
- Structurer une base full-stack
- Travailler l'ergonomie d'une interface technique pour un usage communautaire.
- Penser un écosystème interconnecté : jeu ↔ backend ↔ frontend.
- Gérer des flux de données temps réel entre plusieurs composants.
Ce projet reste une étape clé de mon parcours, car il m'a fait progresser à la fois sur l'architecture, la performance, les choix produit et l'intégration.
Conclusion
Même si le projet n'a pas abouti jusqu'à la version envisagée, il m'a beaucoup apporté techniquement.
Le développement du mod serveur Project Zomboid s'est révélé plus complexe que prévu. Cumulé au manque de temps et à la lassitude face aux difficultés techniques, j'ai progressivement arrêté le développement.
Néanmoins, l'expérience m'a permis de comprendre les enjeux d'un projet full-stack ambitieux avec intégration game-server, et m'a donné des bases solides pour des projets futurs similaires.