Bienvenue dans les coulisses techniques d'un jeu de stratégie en ligne !
Découvrez comment fonctionnent l'architecture client/serveur, la boucle d'états, le moteur de règles, la programmation backend et la création graphique avec l'IA.
Créer un fief et tester le moteur →
Projet Éducatif Père & Fils • Studio d'Apprentissage

Les Secrets de Fabrication d'OpenShogun

Bienvenue dans notre atelier partagé ! Découvrez comment fonctionne un jeu vidéo de stratégie en ligne depuis ses fondations : de la boucle logique aux algorithmes du serveur, jusqu'à la création d'un univers visuel complet avec l'Intelligence Artificielle.

DN
David NAU
Papa • Informaticien de métier
Infrastructures, logique PHP & transmission
GN
Gabriel NAU
Fils • Apprenti Développeur
Gameplay, tests & prompt engineering

1. Qui sommes-nous ?

L'origine du projet et le choix d'une architecture accessible, solide et sans artifice.
Genèse & Esprit de transmission

Démystifier la technologie à travers le jeu vidéo

Je m'appelle David NAU. Informaticien de métier fort d'une longue expérience dans les infrastructures systèmes, les réseaux et le développement d'applications, je suis un passionné de longue date de culture numérique et d'univers vidéoludiques. Au fil des ans, j'ai vu l'informatique se complexifier, s'enfermer dans des couches d'abstractions opaques où l'on perd souvent de vue la beauté des mécanismes fondamentaux.

Ce projet est né d'une volonté simple et sincère : partager cette passion avec mon fils, Gabriel. Les jeunes générations manipulent aujourd'hui des jeux vidéo spectaculaires sur leurs consoles ou smartphones, mais rares sont ceux qui ont l'opportunité d'en ouvrir le capot pour voir les engrenages tourner.

Avec OpenShogun, nous avons fait du jeu vidéo un véritable terrain d'apprentissage concret. Ensemble, nous avons bâti un univers féodal jouable de A à Z : Gabriel a découvert comment un clic sur un bouton déclenche une requête, comment des mathématiques simples gèrent les réserves de riz et de bois, et comment chaque soldat obéit à des règles programmées avec rigueur.

Le crédo pédagogique du projet : Un jeu n'est pas une boîte noire magique. C'est un assemblage patient d'idées logiques, de structures de données et de règles équitables qu'un enfant peut comprendre, manipuler et réinventer.
Architecture & Outils

Un environnement solide et sans surcouche

Nous avons délibérément écarté les frameworks lourds et les générateurs "clic-bouton" au profit des technologies socles du web moderne.

PHP 8 (Le Moteur Serveur & l'Arbitre)
Exécuté côté serveur, il héberge la vérité absolue du monde, applique les formules d'équilibrage et empêche toute triche.
JavaScript Vanilla (Les Réflexes Client)
Du JavaScript pur, sans framework superflu, pour animer le compte à rebours des chantiers, les modales et la réactivité du HUD.
MySQL / MariaDB (La Mémoire Permanente)
La base de données relationnelle qui garantit la persistance des châteaux, des troupes, des rapports et des alliances.
Bootstrap & Tabler.io (L'Habillage UI/UX)
Un design system rigoureux, épuré et responsive, assurant une parfaite lisibilité sur ordinateur, tablette et mobile.
Module Pédagogique 02 Sous le capot

Les Piliers Algorithmiques du Moteur

Comment un jeu par navigateur simule le temps, protège ses règles et équilibre le hasard sans jamais faillir.
Flux d'exécution du moteur De l'interaction joueur à l'état final en base de données
Étape 1 • Temps
Boucle & Δt (Temps)
Rattrapage du temps écoulé
Étape 2 • Arbitrage
Moteur de Règles
Validation anti-triche stricte
Étape 3 • Résolution
Aléatoire Contrôlé
Tirages équilibrés & équitables
Pilier 01 Architecture Temporelle

La Boucle Logique & les États du Jeu

L'analogie du sablier d'échecs et du robinet ouvert :

Dans un jeu sur navigateur, il n'y a pas de moteur tournant en continu sur le PC du joueur. Quand vous partez vous coucher, le serveur « ferme les yeux ». À votre réveil, il regarde simplement votre montre, calcule le débit d'eau de vos rizières pendant vos 8 heures de sommeil, et remplit instantanément votre réservoir.

Le cycle d'états à 4 temps :

1
Attente (IDLE) : Le serveur dort paisiblement. Zéro calcul, zéro consommation de processeur.
2
Action Joueur (INPUT) : Le joueur clique pour lancer une construction ou entraîner des lanciers.
3
Calcul Temporel (TICK / Δt) : Mesure exacte du temps écoulé : Δt = maintenant - dernier_passage.
4
Résolution (RESOLVED) : Mise à jour atomique des stocks, enregistrement en base SQL et retour au sommeil.
Secret de conception : Cette approche événementielle permet à un simple serveur web de gérer des milliers de châteaux simultanés sans jamais surchauffer.
moteur_game_loop.algo
PHP / Logique Serveur
// 1. Mesure du temps écoulé depuis la dernière interaction delta_t = heure_actuelle() - derniere_visite; // 2. Production passive des ressources (Riz, Bois, Fer) POUR CHAQUE ressource DANS [riz, bois, fer] : // Calcul du gain exact proportionnel au temps passé gain = delta_t * (prod_horaire / 3600); // Protection anti-débordement selon le niveau du grenier stock_actuel = MIN(stock_actuel + gain, capacite_grenier); // 3. Validation de l'action joueur et sauvegarde atomique SI action_demandee == "construire_batiment" : executer_construction(action_demandee); derniere_visite = heure_actuelle(); RETOURNER SUCCES;
Décomposition des variables clés :
• delta_t : Secondes passées hors-ligne (ex: 28 800 s pour 8h)
• MIN(...) : Empêche de stocker plus de riz que le grenier n'en contient
Pilier 02 Arbitrage & Sécurité

Moteur de Règles & Conditions

L'analogie du passage en douane et de l'arbitre intraitable :

En programmation réseau, il existe une règle d'or universelle : « Never trust the client » (Ne jamais faire confiance au navigateur). Le joueur peut bidouiller le bouton d'un site web, mais le serveur agit comme un douanier qui exige passeport, visa et pesée exacte des bagages avant de laisser passer le moindre ordre.

La triple barrière de contrôle serveur :

1
Barrière Technologique (Prérequis) : Vérifie l'existence et le niveau du bâtiment (ex: Forge Niv. 3 requise pour forger un Katana).
2
Barrière Économique (Solvabilité) : Débite les ressources de manière atomique. Aucun compte ne peut passer en solde négatif.
3
Barrière d'État (Victoire / Défaite) : Évalue l'honneur du Daimyō et la chute éventuelle du Donjon (Tenshu) pour clore une manche.
Sécurité absolue : Même si un joueur modifie le code HTML dans l'inspecteur de son navigateur, le moteur PHP rejette l'ordre en une fraction de milliseconde.
controle_regles.algo
Contrôle Métier
// 1. Contrôle des prérequis de niveau SI (dojo.niveau < troupe.niveau_requis) : REJETER("Erreur 403 : Dojo insuffisant"); // 2. Contrôle de solvabilité stricte cout_total_bois = troupe.cout_bois * quantite; cout_total_riz = troupe.cout_riz * quantite; SI (joueur.bois < cout_total_bois OU joueur.riz < cout_total_riz) : REJETER("Erreur 402 : Ressources insuffisantes"); // 3. Transaction atomique : Débit puis inscription en file debut_transaction_sql(); joueur.bois -= cout_total_bois; joueur.riz -= cout_total_riz; ajouter_file_entrainement(joueur.id, troupe.id, quantite); valider_transaction_sql(); NOTIFIER_JOUEUR("Recrutement de " + quantite + " guerriers validé !");
Ce que Gabriel a retenu :
• Transaction SQL : « Tout passe ou rien ne passe » (évite les pertes de ressources en cas de panne)
• REJETER : Stoppe immédiatement l'exécution sans toucher aux données
Pilier 03 Mathématiques & Probabilités

Mécanique d'Aléatoire Contrôlé (RNG)

L'analogie du dé à 100 faces équilibré et bienveillant :

Dans un jeu vidéo, le pur hasard peut être cruel : rater 10 fois d'affilée une capture d'animal sauvage à 50% de chance donne envie d'abandonner. Les concepteurs utilisent donc un hasard pondéré : chaque échec augmente discrètement vos chances au tirage suivant pour récompenser la persévérance.

Les 3 principes du hasard équilibré :

1
Tirage Uniforme (RNG Cryptographique) : Génération d'un entier équi-réparti de 1 à 100 via random_int() en PHP.
2
Seuils Paramétrables depuis l'Admin : Une cage de capture à 15% signifie que tout résultat entre 1 et 15 déclenche le succès.
3
Anti-frustration (Bad Luck Mitigation) : Un bonus cumulatif de +5% par échec consécutif garantit une victoire avant l'écœurement.
Plaisir de jeu garanti : L'aléatoire contrôlé crée du suspense et des moments d'euphorie sans jamais donner le sentiment d'une injustice algorithmique.
generateur_rng.algo
Probabilités
// 1. Tirage au sort équiprobable de 1 à 100 tirage = generer_nombre_aleatoire(1, 100); // 2. Seuil configuré en base de données + compensation d'échecs seuil_de_base = config('proba_cage_capture', 15); bonus_pitié = joueur.echecs_consecutifs * 5; seuil_final = seuil_de_base + bonus_pitié; // 3. Résolution du résultat SI (tirage <= seuil_final) : joueur.inventaire.ajouter("cage_fer_authentique", 1); joueur.echecs_consecutifs = 0; // Réinitialisation NOTIFIER("Capture réussie ! Tirage : " + tirage + " / " + seuil_final); SINON : joueur.echecs_consecutifs += 1; // Augmente la chance pour la prochaine fois attribuer_xp(heros, 50); NOTIFIER("Échec... mais vos chances augmentent pour le prochain essai !");
La leçon de Game Design :
• bonus_pitié : Mécanisme invisible qui transforme la frustration en fidélité
• random_int() : Sécurisé côté serveur, impossible à manipuler par le joueur

3. L'Univers Visuel et Gemini

Concevoir plus de 80 illustrations épiques grâce au prompt engineering avec Google Gemini.
Direction Artistique & IA

Le Prompt Engineering au service de l'immersion

Donner vie à un jeu de stratégie sur le Japon féodal nécessite une identité visuelle forte : samouraïs en armures laquées, bannières flottant au vent, pavillons de thé et forteresses juchées sur des pitons rocheux. N'étant ni graphiste ni illustrateur de métier, je n'aurais jamais pu dessiner ces dizaines d'œuvres à la main.

Nous nous sommes donc tournés vers l'intelligence artificielle Gemini de Google comme véritable partenaire créatif. Le défi a consisté à concevoir avec méthode plus de **80 descriptions textuelles détaillées (prompts)** en anglais : choix des matières (fer martelé, soie, papier washi), contrastes de lumières d'aube ou de crépuscule, et style pictural semi-réaliste évoquant les classiques du genre.

Plus de 80 images sur mesure intégrées au moteur :
Les 12 guerriers du Dojo, les 13 engins de siège et cavaleries, les 17 bâtiments de cité, les parcelles de ressources et les bêtes sauvages.
Exemple interactif Transparence IA
Piquier Ashigaru
Piquier Ashigaru Époque Sengoku
Illustration représentant un lancier Ashigaru prêt au combat dans une forêt de bambous.

Le Grimoire Complet des 80 Prompts

Explorez, filtrez et copiez l'intégralité des descriptions textuelles d'OpenShogun.
Section 05 Spécial Débutants • 12 ans & +

L'École de Conception : Cours & Masterclasses

Des métaphores du quotidien et de l'univers féodal japonais pour tout comprendre sans aucun jargon incompréhensible !

La Programmation & l'IA expliquées simplement

Dans un jeu vidéo moderne, le Backend est le grand cerveau invisible et l'IA Multimédia donne vie à l'univers visuel et cinématique. Chaque cours ci-dessous est conçu comme une aventure guidée avec des métaphores amusantes, des exemples concrets et un mini-quiz interactif pour valider tes connaissances !

4 Cours • 8 Défis Quiz
Niveau 01 • Débutant 7 min

PHP & POO : La Forge et le Facteur Unique

Comprends enfin ce qu'est un Objet avec l'atelier de forge de sabres, découvre le patron Singleton avec le Facteur Impérial, et perce le secret du Sceau de Cire des Sessions.

Niveau 02 • Sécurité 8 min

PDO & Sécurité : Le Coffre-Fort du Shogun

Découvre comment les bandits ninjas tentent de pirater le royaume avec des parchemins piégés (Injections SQL) et comment la boîte aux lettres blindée PDO protège nos trésors.

Niveau 03 • Réseau 7 min

Routage & Messagers : Cartes Postales et Ninjas

Comment index.php lit les panneaux de Kyoto pour t'orienter, pourquoi $_GET est une carte postale transparente et pourquoi $_POST est la missive secrète du ninja.

Niveau 04 • IA & Vidéo 10 min

Cinématique IA : L'Art du Prompt Vidéo Shogun

Comment concevoir un trailer cinématique complet : structure d'un prompt vidéo (mouvements caméra, éclairage, 24fps), narration en 6 actes et prompts prêts à l'emploi.

Exercices d'application

4 Défis Pratiques à réaliser à quatre mains

La meilleure façon d'apprendre la programmation, c'est d'expérimenter, de modifier de petites variables, et d'observer le résultat immédiat !

1. La Vitesse Lumière

Modifiez la vitesse du serveur à x10 ou x20 dans la configuration.

Découvrir les constantes globales

2. Équilibrer une Troupe

Passez l'attaque du Piquier Ashigaru à 999 en base SQL pour tester les extrêmes.

Comprendre le Game Balancing

3. Créer un Monstre

Rédigez un nouveau prompt pour un Tigre Sacré et intégrez son visuel.

Chaîne d'intégration d'assets

4. Robots Testeurs

Lancez php tests/test_barracks.php et observez les tests unitaires OK.

Assurance qualité & tests