Bourg-lès-Valence : créer un jeu de vie réaliste dans une vraie ville avec Unreal Engine 5


Il y a des jeux où l’on gagne de l’argent en ramassant des pièces qui flottent dans l’air. Je voulais l’inverse : un jeu où l’on se lève à l’heure réelle, où la boulangerie ouvre à ses vrais horaires, où le salaire tombe le dernier jour du mois avec une fiche de paie, et où voler un paquet de bonbons finit au tribunal correctionnel de Valence. Le tout dans une ville qui existe : Bourg-lès-Valence, dans la Drôme.

Ce billet raconte comment le projet s’est construit, ce qui a marché, et les pièges qui m’ont coûté des soirées. Une version de test est téléchargeable ici (Windows, 5,5 Go).

Le parking du supermarché, soleil du matin

Le principe : le plus proche du réel possible

La première ligne de la feuille de route, le 12 octobre, fixe la règle : pas de quêtes, pas de barres de progression magiques. Tout fonctionne comme en vrai, avec ses horaires, ses prix et ses contraintes. Et plutôt que d’écrire une mécanique par métier ou par lieu, on construit d’abord des systèmes généraux que tout le reste réutilise : l’argent, le travail, la propriété, la justice, le corps.

L’horloge du jeu suit l’heure de Paris, changement d’heure et jours fériés compris. Si vous jouez à 23 h, il fait nuit et les magasins sont fermés. Les ambiances sonores (cigales, pluie, vent, orage) suivent la météo réelle.

La ville, générée depuis les données publiques

Je n’ai pas modélisé la ville à la main : elle sort de scripts Python qui lisent les bases ouvertes françaises.

  • IGN BD TOPO pour les bâtiments, les rues, les haies et le ruisseau ; RGE ALTI pour le relief ;
  • OpenStreetMap pour les commerces, leurs horaires, les passages piétons (99 zébras), les piscines ;
  • le cadastre pour savoir ce qui est privé ou public.

Le sol n’est pas une photo aérienne plaquée : chaque carré de 24 cm est classé (pelouse, gravier, dallage, terre agricole, piscine…) d’après le cadastre, OSM et, dans les jardins seulement, la couleur de la photo IGN. Les 74 piscines du quartier sont de vrais bassins en 3D.

Premier piège : le relief. Le RGE ALTI arrive en paliers de 3 à 4 m (70 % des pas sont nuls, puis la pente saute d’un coup). Posé tel quel, le terrain ressemblait à un escalier. Un flou gaussien de 2 m l’a lissé, sauf aux endroits aménagés à la main, où l’altitude d’origine doit rester exacte.

Pour que la carte tienne en mémoire avec des intérieurs meublés, elle est découpée en World Partition avec deux grilles : la ville en cellules de 256 m, toujours visible, et les intérieurs (meubles, lumières, objets) en cellules de 32 m, chargés seulement à moins de 60 m du joueur.

L’économie : rien n’est gratuit

On démarre avec un mois de SMIC. Il y a un compte courant avec un découvert autorisé de 200 €, une carte, des espèces à retirer au distributeur de la station-service, et un relevé.

La banque : relevé, amendes et casier judiciaire

Les prix viennent de données réelles :

  • les produits du supermarché viennent d’Open Food Facts (nom, marque, format, valeurs nutritionnelles) ;
  • leurs prix sont les médianes relevées dans de vrais magasins de l’enseigne par Open Prices ;
  • le carburant est lu toutes les dix minutes sur le flux officiel du ministère de l’Économie, pour la vraie station du quartier, ruptures comprises.

Le travail est un système à part entière : candidature (avec diplôme exigé et entretien), CDI ou CDD, période d’essai, horaires, retards comptés au-delà de 10 minutes, congés payés à 2,5 jours par mois, et même les droits au chômage (pas après une démission). La paie tombe le dernier jour du mois à 18 h, avec cotisations et salaire net. La boulangerie a été le premier métier branché dessus : fournées en temps réel, commande d’ingrédients, pointeuse.

La justice, avec le vrai barème

Ramasser le bien d’autrui, c’est un vol. Le jeu regarde s’il y avait des témoins (vue dégagée à 25 m), des caméras, s’il faisait nuit. L’enquête prend 2 à 7 jours réels. Pour un premier petit vol, c’est l’amende forfaitaire délictuelle : 300 €, 250 € si l’on paie sous 15 jours, 600 € majorée après 45 jours, avec inscription au casier. Au-delà, convocation au tribunal correctionnel. Les dettes finissent en saisie sur salaire au barème légal.

Je l’ai testé sur moi-même : un paquet de bonbons de 300 g m’a valu une amende, un casier et une convocation au tribunal le 20 décembre.

Un corps qui fonctionne comme un corps

Faim, soif, fatigue, oui, mais pas comme une jauge de jeu vidéo. Les aliments apportent leurs vrais nutriments, vitamines et minéraux compris, d’après la table Ciqual de l’Anses. Les carences s’installent au rythme réel et ne se voient que par des symptômes : c’est au médecin de diagnostiquer.

Les médicaments ont leur pharmacocinétique : dose, absorption, pic, demi-vie, effets sur les organes. Après calibrage, un antihypertenseur fait baisser la tension d’environ 10 mmHg à l’équilibre, une statine baisse le LDL de 38 % en un mois, la metformine baisse l’HbA1c de 0,75 point en trois mois. L’interaction dangereuse entre anti-inflammatoire et certains traitements de la tension est modélisée.

Même le sport se mesure : la VO2max dépend de la constitution, de l’âge et du sexe, la fréquence cardiaque maximale suit la formule de Tanaka, et une sortie de course s’enregistre toute seule (« 0,45 km en 2 min 31 s, FC 135 »).

Il y a aussi un four à bûches qui suit un vrai bilan thermique : il faut environ 8 bûches et 1 h 30 pour le monter à 220 °C, et il continue de refroidir pendant que le jeu est fermé.

Les habitants

Une pharmacienne, un buraliste, une employée du rayon fruits et légumes, une retraitée qui fait ses courses le mardi, le jeudi et le samedi à 9 h 30. Chacun a une identité fictive, un logement tiré au hasard à quelques centaines de mètres de son travail, des horaires, des pauses, et un trajet à pied calculé par les vraies rues.

La pharmacie du quartier et sa pharmacienne

Pour que ça tienne, un habitant n’apparaît qu’à moins de 150 m d’un joueur, à l’endroit où l’heure le place, et la navigation n’est calculée qu’autour de lui. Les visages sont des MetaHuman, riggés par le service d’Epic.

Piège mémorable : l’assemblage d’un MetaHuman fait planter l’éditeur dès que la ville est chargée (limite de descripteurs D3D12). Il se fait donc sur une carte vide, puis le personnage est posé en ville.

Un éditeur piloté par une IA

La particularité du projet, c’est la façon de travailler. L’éditeur Unreal embarque le plugin officiel Model Context Protocol d’Epic. Avec lui, un assistant IA (Claude Code, dans mon cas) peut lire et modifier la scène, lancer des scripts Python dans l’éditeur, compiler le module C++ et prendre des captures pour vérifier le résultat.

Concrètement, presque tout passe par des scripts reproductibles plutôt que par des clics :

  • générer la ville ;
  • aménager le supermarché, rayon par rayon (planogramme) ;
  • poser les 54 luminaires LED du magasin (18 000 lumens, environ 500 lux au sol) ;
  • produire les bruitages, synthétisés en local ;
  • découper la carte en zones.

Quand quelque chose change dans les données, on relance la chaîne au lieu de refaire le travail à la main. Et chaque décision, chaque piège, est consigné dans une feuille de route qui fait aujourd’hui plus de 900 lignes.

Quelques pièges que cette méthode a fait remonter :

  • Nanite sur des maillages en boîtes fines (étagères, comptoirs) perdait environ 40 % des triangles : désactivé pour ces objets ;
  • les intensités lumineuses sont en luminance réelle (cd/m²) : une enseigne réglée à « quelques unités » est invisible en plein jour, une croix de pharmacie demande environ 2 500 ;
  • le pool de mémoire du ray tracing par défaut (400 Mo) évinçait une partie de la ville, qui en demande environ 1 Go ;
  • une texture déjà importée n’est pas relue par le script d’import : il faut la supprimer avant.

Le jeu se télécharge

L'interface : boussole, heure réelle, argent liquide et état du corps

La version de test est un paquet Windows « Shipping » d’environ 5,8 Go, compressé en un zip de 5,5 Go. On dézippe et on joue, sans installation. Un journal des mises à jour sur la page du jeu se remplit tout seul à chaque envoi du code.

Ce qui manque encore, et c’est beaucoup : des bâtiments vides, des habitants sans MetaHuman, le téléphone, les bus réels (les horaires Citéa existent en données ouvertes), et surtout le serveur. Le jeu est pensé comme un MMO : l’état du joueur (argent, dettes, casier, emplois) a été conçu dès le départ pour vivre un jour sur un serveur plutôt que dans une sauvegarde locale. Pour l’instant, chacun joue seul dans sa propre ville.

Si vous l’essayez, je veux bien vos retours, surtout les bugs.


Article rédigé avec l’aide d’une IA. Données de carte : IGN (BD TOPO, RGE ALTI, Licence Ouverte) et © les contributeurs d’OpenStreetMap ; produits et prix © les contributeurs d’Open Food Facts (ODbL) ; table Ciqual, Anses, 2025.