Projet

7 min de lecture

Domnhon — RPG web en pixel art

🎮 Un RPG en pixel art jouable dans le navigateur, avec combats, personnages, inventaire et progression, développé avec Phaser, Symfony et PostgreSQL.

Publie le 17/08/2026 Mise a jour 17/08/2026 Lien en ligne disponible
Domnhon — RPG web en pixel art

Vue d'ensemble

🎮 Un véritable RPG directement dans le navigateur
Domnhon est un projet personnel ambitieux né d’une envie simple : réunir ma passion pour le développement web et celle du jeu vidéo. L’objectif n’était pas de réaliser une simple démonstration graphique, mais de construire une application complète proposant de vraies mécaniques de jeu, une progression persistante et une architecture capable d’évoluer.
Le joueur peut créer son compte, choisir un personnage et une classe, consulter son profil, gérer son équipement, accéder à une boutique et participer à des combats. L’univers visuel en pixel art apporte une identité rétro, tandis que les animations, les effets sonores et les différentes scènes rendent l’expérience plus immersive.
🕹️ Un frontend interactif avec Phaser et Vite
La partie visible du jeu repose sur JavaScript et Phaser, un framework spécialisé dans la création de jeux HTML5. Le projet est organisé en plusieurs scènes indépendantes : écran d’accueil, création du personnage, hub principal, profil, boutique et arène. Cette séparation facilite la maintenance du code et permet de faire évoluer une fonctionnalité sans déstabiliser l’ensemble du jeu.
Vite est utilisé pour le développement et la génération des fichiers de production. Les sprites, animations, interfaces HTML, musiques et ressources graphiques sont préchargés afin de limiter les coupures pendant la partie. Une couche de configuration centralise également l’adresse de l’API pour distinguer proprement les environnements.
⚙️ Une API Symfony pour porter toute la logique métier
Le frontend communique avec un backend Symfony chargé de l’authentification et de toutes les données persistantes. L’API gère notamment les utilisateurs, les classes, les personnages, les compétences, les objets, la boutique, les combats et les succès.
La logique sensible reste côté serveur : initialisation d’un combat, vérification de l’utilisateur connecté, calcul des résultats, attribution des récompenses et mise à jour de la progression. Ce choix évite de faire confiance au navigateur pour les opérations importantes et limite les possibilités de manipulation des données par un joueur.
🗄️ Une base PostgreSQL structurée et persistante
PostgreSQL stocke les comptes, les personnages, les équipements, les combats et toutes les données de référence nécessaires au jeu. Les relations entre les entités ont été modélisées avec Doctrine ORM et les évolutions du schéma sont suivies par des migrations versionnées.
Une migration de réparation et d’initialisation garantit la présence des données essentielles et remet en cohérence les séquences PostgreSQL. Les données restent conservées dans un volume Docker persistant, même lors d’une reconstruction ou du remplacement des conteneurs.
🔐 Sécurité et protection des échanges
L’authentification s’appuie sur le composant Security de Symfony. Les contrôleurs sensibles vérifient l’identité de l’utilisateur et son droit d’accéder aux ressources demandées. La politique CORS limite les origines autorisées et plusieurs en-têtes HTTP renforcent la protection du navigateur : Content Security Policy, interdiction d’intégration dans une iframe, contrôle du type de contenu et restrictions des fonctionnalités inutiles.
Le frontend et le backend sont uniquement exposés en HTTPS derrière le reverse proxy. La base de données, elle, reste isolée sur un réseau Docker interne et n’est jamais publiée directement sur Internet.
🐳 Une mise en production entièrement conteneurisée
L’infrastructure est découpée en trois services : un conteneur Nginx pour le jeu, un conteneur Apache/PHP pour Symfony et un conteneur PostgreSQL. Chaque service possède des limites de ressources, une politique de redémarrage et des réseaux adaptés à son rôle.
Des contrôles de santé permettent de confirmer que les services sont réellement disponibles. Les images sont construites en plusieurs étapes afin de ne conserver en production que les fichiers nécessaires. Le reverse proxy gère les certificats TLS et distribue les requêtes entre le domaine du jeu et celui de l’API.
🚀 Ce que ce projet démontre
Domnhon montre ma capacité à mener un produit de bout en bout : conception d’une expérience interactive, développement frontend, logique métier backend, modélisation de données, sécurisation et exploitation sur un serveur réel. C’est également un terrain d’expérimentation qui peut continuer à évoluer avec de nouvelles classes, de nouveaux objets, davantage de combats et un système de progression encore plus riche.