Capital Wars - Jeu de Gestion d'Entreprise Multijoueur

Lien vers le projet Rapport Technique Rapport Plugins

Contexte

Dans le cadre de la SAE du semestre 5 de mon BUT Informatique option IAMSI à l'IUT de Montpellier, j'ai co-développé Capital Wars, un jeu de gestion d'entreprise multijoueur en ligne. Ce projet représente la réalisation la plus ambitieuse de ma formation : concevoir de A à Z une plateforme web complète, robuste et évolutive sur une durée d'un an académique (2025–2026).

Réalisé en équipe de quatre développeurs (Andriamihaja Manu, Julien Garcia, Raphaël Lambert, Alexis Michaux-Kinet), encadrés par M. Antoine Chollet, Capital Wars simule la concurrence entre entreprises virtuelles spécialisées dans la fabrication de produits manufacturés. Les joueurs prennent des décisions stratégiques sur la chaîne de production, les ressources humaines, le marketing et la finance dans un marché compétitif.

L'innovation centrale du projet est son architecture modulaire par plugins : un noyau stable gère les fonctionnalités de base, et des modules indépendants (DLC) viennent enrichir le jeu sans impacter le moteur principal. Cette approche garantit évolutivité, flexibilité pédagogique et maintenabilité à long terme.

Gif project Capital Wars

Déroulement du projet

Fonctionnalités du noyau

Le cœur de Capital Wars repose sur Symfony 6.4 / PHP 8.1 avec Doctrine ORM et MySQL. L'architecture MVCS garantit une séparation claire entre entités métier, logique applicative et présentation via Twig.

  • Système de lobbies multijoueurs : création, administration, gestion des participants (4 à 6 entreprises)
  • Moteur de jeu par périodes : simulation de 2 à 30 sessions de gestion de 1 à 4h chacune
  • Feuille de décision : gestion de la production, des usines, des ressources humaines, du financement
  • Système financier complet : Bilan, Compte de Résultat, Prêts bancaires, Objectifs Stratégiques
  • Système de Quêtes et gamification : missions catégorisées (Économique, Social, Industriel) avec points d'XP
  • Tableau de bord administrateur : KPIs en temps réel, gestion des utilisateurs, lobbies, périodes et paramètres
  • Pages d'erreur personnalisées (404, 403, 500) et formulaire de contact avec webhook Discord
  • Chat flotant de support accessible sur toutes les pages

Système de Plugins

L'architecture de plugins est la valeur technique principale du projet. Chaque plugin implémente des interfaces SOLID (contributeToBilan, contributeToResultat, contributeToDecision) et dispose d'une commande de génération automatique via make:plugin. L'organisateur peut activer/désactiver les plugins et configurer leurs fonctionnalités individuellement via 3 packs prédéfinis (Basic, Standard, Advanced).

Plugins fonctionnalité

  • Bourse Marché boursier complet : émission d'actions, rachat (share buyback), OPA hostile, émission d'obligations, fractionnement d'actions (split), notation de crédit (AAA → D) et dividendes. Les entreprises fictives générées aléatoirement alimentent le marché.
  • Chat Messagerie temps réel par polling AJAX : chat général du lobby et conversations privées entre joueurs. Un ChatController dédié gère la création/récupération des messages.
  • Placement des Usines Trois types d'emplacements (Locality, Low Costy, Premiumy) influençant les coefficients de productivité, main-d'œuvre, exploitation, marketing et construction. Impact direct sur le Compte de Résultat.
  • Personnage RH Marché de l'emploi avec 9 types de personnages spéciaux (Directeur RH, Manager, Coach, Chercheur, Publicitaire, Comptable, Chasseur de Têtes, Marketing, Expert Construction). Chaque personnage apporte des bonus passifs ou actifs, peut être formé pour monter en étoiles et affecte les finances.

Plugins fun

  • Événements Aléatoires (PESTEL) Système de gestion des risques macroéconomiques : 6 catastrophes selon le modèle PESTEL (Politique, Économique, Social, Technologique, Environnemental, Légal). Chaque catastrophe a des impacts spécifiques atténués par un indice de résilience calculé par entreprise. Système d'assurance multi-risques configurable.
  • Paris Hippiques Module de divertissement permettant aux entreprises de parier sur des courses hippiques et diversifier leurs stratégies financières.

Qualité & Gestion de Projet

  • Méthodologie Agile Scrum : sprints, mêlées quotidiennes, revues et rétrospectives
  • GitHub : backlog avec tags de priorité, tableau Kanban, issues et workflow automatisé de création
  • Tests PHPUnit avec mocks et stubs, GitHub Actions CI/CD (branches main et development)
  • SonarQube : analyse de qualité de code avec couverture à 60%
  • Discord : récaps journaliers, notifications de maintenance, merge, tests automatisés et centralisation des documents

Défis Techniques

  • Conception de l'architecture modulaire par plugins respectant les principes SOLID : interfaces multiples (PluginBilanContributorInterface, PluginResultatContributorInterface, DecisionsContribute), activation dynamique via JSON en base de données et commande make:plugin pour la génération automatique du squelette
  • Modélisation d'une base de données complexe : ~20 entités interconnectées (Lobby, Entreprise, PeriodeDeJeu, Décision, Résultat, Bilan, Prêt, ObjectifStratégique, Usine, Quêtes, et toutes les entités des plugins) avec des contraintes d'isolation strictes entre le noyau et les plugins
  • Système financier multi-entités : calcul automatique du Compte de Résultat et du Bilan à chaque fin de période en agrégeant les contributions de toutes les décisions, usines et plugins actifs, avec gestion des amortissements, intérêts et report de résultat
  • Plugin Bourse : dupliquer les entités Entreprise en EntrepriseBourse (réelle ou fictive), gérer les cours boursiers variables, les OPA hostiles avec calcul de part majoritaire, les obligations avec intérêts périodiques et la notation de crédit dynamique (AAA → D) impactant les taux d'emprunt
  • Plugin Événements PESTEL : génération aléatoire de catastrophes selon probabilité configurable, calcul des indices de résilience multi-dimensionnels par entreprise, application différenciée des impacts selon la résilience et gestion des catastrophes multiples par période
  • Chat temps réel par polling AJAX sans WebSocket : synchronisation des messages public/privé sans rechargement de page, gestion des conversations via ChatController avec réponses JSON
  • Infrastructure serveur : hébergement des deux services distincts (application Symfony + BDD MySQL) sur serveur personnel, déploiement Docker et configuration de l'environnement de production

Compétences Acquises

  • Architecture logicielle avancée : conception modulaire, principes SOLID, design patterns (Plugin, Strategy, Observer), séparation des responsabilités en couches MVCS
  • Symfony 6.4 expert : Security, Doctrine ORM, Twig Extensions, Form Types personnalisés, Commandes console, Event Listeners, Attributs personnalisés
  • Modélisation de données complexes : schéma relationnel à ~20 entités, migrations Doctrine versionnées, optimisation des requêtes et gestion des relations Many-to-Many avec tables de liaison
  • Gestion de projet Agile Scrum : sprints planifiés, backlog GitHub, mêlées quotidiennes, intégration continue CI/CD avec GitHub Actions
  • Qualité logicielle : tests PHPUnit (unitaires et fonctionnels) avec mocks/stubs, analyse SonarQube (couverture 60%), revue de code systématique
  • Simulation économique et mathématiques financières : implémentation des formules comptables (Bilan, Compte de Résultat), modélisation boursière, calcul de risques PESTEL et indices de résilience
  • Travail collaboratif en équipe de 4 : coordination via Discord, GitHub, partage de responsabilités sur des domaines fonctionnels distincts (plugins individuels) et revues croisées

Conclusion

Capital Wars est le projet le plus ambitieux et complet de mon parcours en BUT Informatique. Il m'a permis de mettre en pratique l'intégralité des compétences accumulées sur trois ans : architecture logicielle avancée, développement full-stack Symfony, gestion de projet Agile, qualité logicielle et travail collaboratif en équipe de 4.

La conception du système de plugins, pensé pour respecter les principes SOLID tout en restant accessible à l'extension, est la réalisation technique dont je suis le plus fier. Elle démontre ma capacité à concevoir des architectures évolutives répondant à des besoins complexes et changeants. Ce projet, déployé et accessible en version alpha publique, constitue la preuve concrète de ma maturité technique en tant que développeur web.

← Projet Précédent Projet Suivant →
Back to top