Scam Simulator – Amélioration du projet, modélisation, Shaders et Effets Visuels
“Scam Simulator” est un jeu de simulation inspiré des titres tels que Gas Station Simulator, Supermarket Simulator et d’autres. Le joueur incarne un scammeur qui doit bâtir et gérer son empire frauduleux dans une petite ville. Le jeu se caractérise par un univers urbain stylisé où se mêlent éléments de gestion, intractions avec divers personnages (PNJ, vendeurs, clients, etc.) et des défis imprévus (interventions de la police, rivalités entre bandes).
Contexte et Genèse du Projet
Le concept de Scam Simulator est né de l’envie de proposer une expérience de jeu véritablement atypique, où le joueur incarne un escroc en devenir tout en étant confronté aux conséquences morales de ses actes. Pour nourrir cette vision, nous nous sommes appuyés sur des études de cas réelles, des références ludiques marquantes et des documentaires spécialisés dans l’analyse des fraudes financières.
Sources documentaires et études de cas
L’affaire Bernard Madoff, architecte d’un schéma de Ponzi estimé à soixante-cinq milliards de dollars, ainsi que le scandale OneCoin, crypto-fraude d’envergure mondiale, ont constitué des sources d’inspiration majeures. Le documentaire The Madoff Affair produit par la BBC en 2021 offre une analyse détaillée des mécanismes psychologiques et financiers à l’œuvre dans ces escroqueries de grande ampleur. L’histoire de Hushpuppi, influenceur aux réseaux sociaux flamboyants qui dissimulait en réalité un empire d’arnaques internationales, a également nourri la réflexion sur le décalage entre l’image publique du fraudeur et la réalité de ses activités criminelles. La série documentaire Dirty Money diffusée sur Netflix plonge le spectateur au cœur des scandales financiers contemporains, tandis que le podcast Le Monde des Arnaques donne la parole aux victimes et met en lumière les techniques de manipulation psychologique employées par les escrocs.
Références ludiques et positionnement
Sur le plan vidéoludique, Papers, Please a constitué une référence fondamentale pour son questionnement sur la culpabilité du joueur, placé dans la position d’un fonctionnaire de l’immigration contraint à des choix moralement ambigus. Les jeux de simulation de gestion tels que Drug Dealer Simulator, Supermarket Simulator et Gas Station Simulator ont inspiré l’aspect graphique et la logique de gameplay centrée sur la gestion quotidienne d’une activité, transposée ici dans un contexte illégal. Cette hybridation entre simulation de gestion et questionnement éthique constitue le cœur de l’identité de Scam Simulator.
Objectif du Jeu et Gameplay de Base
Dans Scam Simulator, le joueur incarne un escroc qui vise à bâtir un empire financier sur des arnaques toujours plus élaborées, tout en gérant les conséquences croissantes de ses actes sur son environnement et sa propre stabilité.
Arbre de compétences et progression
Le système de progression s’articule autour d’un arbre de compétences divisé en trois branches principales. La première branche concerne les techniques d’arnaque proprement dites, englobant l’ingénierie sociale, la création de faux documents et les méthodes de persuasion. La deuxième branche porte sur le support technologique, incluant la maîtrise des outils informatiques, des téléphones jetables et des logiciels de falsification. La troisième branche se concentre sur la gestion du réseau criminel, couvrant le recrutement de complices, les techniques de blanchiment d’argent et l’expansion territoriale. Chacune de ces branches comprend cinq niveaux de compétence, débloqués progressivement grâce à l’accumulation de « respect », une monnaie sociale gagnée auprès du milieu criminel, et d’argent sale issu des opérations frauduleuses.
Boucle de gameplay : préparation, exécution, bilan, extraction
La boucle de gameplay principale s’organise en quatre phases distinctes. La phase de préparation consiste à choisir une cible parmi les profils disponibles, qu’il s’agisse d’un restaurateur, d’un cadre d’entreprise ou d’un commerçant, en consultant la carte interactive qui affiche la densité de cibles potentielles et le niveau de vigilance policière dans chaque quartier. La phase d’exécution enchaîne une succession de mini-jeux adaptés au type d’arnaque choisi : les opérations d’infiltration impliquent le crochetage de serrures et l’évitement des caméras de surveillance, tandis que les approches de persuasion s’inspirent du système de dialogues à choix multiples popularisé par la série Mass Effect, avec une barre de crédibilité dont le joueur doit maintenir le niveau pour convaincre sa victime. La phase de bilan comptabilise les gains financiers et l’évolution de la réputation dans le milieu criminel, mais également la montée de la suspicion des autorités et les risques de casse de matériel ou d’arrestation de complices. Enfin, la phase d’extraction confronte le joueur à une fuite sous pression ou à des négociations de dernière minute pour sécuriser son butin.
Interface utilisateur
L’interface a été conçue selon un principe de minimalisme fonctionnel. L’affichage tête haute superpose en bas à gauche de l’écran les jauges essentielles : faim, stress, suspicion et santé mentale. La carte interactive représente la ville avec un code couleur indiquant les zones chaudes en termes de densité de cibles et de présence policière. Un menu radial accessible d’une pression de touche permet de sélectionner rapidement les gadgets disponibles ou d’initier des dialogues contextuels avec les personnages non-joueurs.

Philosophie et Message Sous-Jacent
Scam Simulator ne constitue en aucun cas une apologie de la fraude. Le jeu interroge constamment le joueur sur les conséquences de ses actes, créant une tension permanente entre la satisfaction du gain illégal et la prise de conscience des dégâts causés.
Dissonance cognitive et choc émotionnel
L’euphorie ressentie lors d’une arnaque réussie se heurte régulièrement à des scènes choc montrant la misère des victimes. Ces séquences, déclenchées aléatoirement ou à la suite d’actions particulièrement préjudiciables, confrontent le joueur à la réalité humaine de ses méfaits : familles endettées, commerces en faillite, vies brisées par la perte d’économies durement accumulées.
Inégalité sociale et fracture économique
À l’image de l’affaire Hushpuppi, le jeu illustre la fracture croissante entre un joueur dont la richesse s’accumule et des personnages non-joueurs dont la vie s’effondre progressivement. Les victimes d’arnaques voient leur situation économique se dégrader visiblement dans l’environnement du jeu : commerces fermés, logements perdus, présence accrue dans les files d’attente des associations caritatives.
Corruption systémique et escalade criminelle
À haut niveau de progression, le joueur accède à des quêtes impliquant la corruption d’agents publics, inspirées des mécaniques de Mafia II : soudoyer des policiers pour éviter les contrôles, financer des campagnes politiques clandestines pour obtenir des protections, infiltrer des réseaux d’influence. Ces options, bien que tentantes pour sécuriser l’empire criminel, enfoncent davantage le personnage dans une spirale dont il devient impossible de s’extraire.
Absence de rédemption
Le jeu refuse délibérément toute possibilité de rédemption facile. Toute tentative de restitution des fonds volés ou de confession aux autorités est perçue par le milieu criminel comme une manœuvre suspecte, générant un « backlash » violent : perte de réputation, représailles des anciens associés, méfiance accrue des victimes qui ne croient pas à la sincérité du repentir. Le joueur doit assumer jusqu’au bout les conséquences de ses choix.
Système de Contrepartie Négative
Pour empêcher toute glorification de la fraude, chaque succès apporte son lot de pénalités qui complexifient progressivement la situation du joueur et limitent ses options futures.
Impact économique sur les victimes
Chaque cible dispose d’un bilan financier simplifié représentant ses actifs et ses passifs. Les arnaques successives détériorent ce bilan, et trois trimestres consécutifs de pertes déclenchent un événement de faillite. La fermeture du commerce ou l’effondrement financier de la victime modifie durablement l’environnement du jeu : le lieu devient inaccessible, les personnages associés disparaissent ou changent de comportement, et les opportunités de missions liées s’évanouissent.
Translation de pauvreté
Le système de translation de pauvreté illustre le caractère cyclique et destructeur de l’économie frauduleuse. Lorsqu’un restaurant ciblé par les arnaques du joueur finit par fermer, ce dernier perd une source potentielle de nourriture. À mesure que ses victimes s’appauvrissent, l’environnement du joueur se dégrade également, le forçant dans les cas extrêmes à fouiller les poubelles pour se nourrir, inversant symboliquement sa position de prédateur en celle de survivant précaire.
Mini-jeu de fouille et survie
Disponible une fois par cycle jour-nuit et limité à cinq fouilles par session, le mini-jeu de fouille des ordures confronte le joueur à des choix probabilistes. Les ordures ménagères offrent soixante pour cent de chances de trouver de la nourriture, vingt pour cent de récupérer quelques euros, et vingt pour cent de ne rien obtenir. Le compost, alternative moins risquée mais moins rentable, propose trente pour cent de chances de nourriture moins nourrissante et soixante-dix pour cent de résultat nul. Chaque fouille ratée ou interrompue par la surprise d’un passant ou d’un agent de police municipale augmente la jauge de suspicion de dix points, rendant cette activité de survie elle-même dangereuse.
Isolement et escalade de la traque
La barre de suspicion, graduée de zéro à cent, déclenche des paliers de réaction des autorités à vingt-cinq, cinquante et soixante-quinze points. Le premier seuil intensifie les patrouilles de police dans les zones fréquentées par le joueur. Le deuxième seuil introduit des barrages routiers limitant les déplacements. Le troisième seuil déclenche un mandat d’arrêt formel. À partir de soixante points de suspicion, des chasseurs de primes mandatés par les victimes ou leurs proches apparaissent dans l’environnement, ajoutant une menace supplémentaire à la pression policière.
Effet domino et réduction des opportunités
La fermeture d’un commerce supprime définitivement ses missions annexes et réduit le nombre global de cibles disponibles dans le quartier concerné. Cette mécanique d’effet domino force progressivement le joueur à viser des proies plus protégées, plus méfiantes et plus risquées, augmentant la difficulté et la probabilité d’échec à mesure que son empire s’étend. L’appauvrissement de l’environnement par les propres actions du joueur constitue ainsi une forme de punition organique intégrée au gameplay
Validation des Objectifs Techniques
Utilisation avancée des Shaders (Validation Éléments Terre/Air)
Nous avons développé deux shaders personnalisés répondant à la contrainte des éléments, exploitant des techniques avancées de programmation GPU et intégrés au pipeline de rendu Universal Render Pipeline (URP) de Unity via le système Shader Graph.
[AIR] Pollution Volumétrique (Raymarching)
Le premier shader implémente un effet de brouillard volumétrique simulant une atmosphère polluée. Contrairement aux effets de brouillard classiques basés sur la distance (fog linéaire ou exponentiel), cette technique utilise l’algorithme de Raymarching, une méthode de rendu volumétrique qui échantillonne l’espace 3D le long d’un rayon émis depuis la caméra.
Le fonctionnement technique repose sur les étapes suivantes. Premièrement, le shader calcule l’intersection entre le rayon de vue et une boîte englobante (AABB, Axis-Aligned Bounding Box) définie par la position et l’échelle d’un cube invisible dans la scène. Cette intersection détermine les points d’entrée et de sortie du rayon dans le volume de brouillard. Deuxièmement, l’algorithme parcourt ce segment en un nombre configurable d’étapes (entre 4 et 64), échantillonnant à chaque pas la densité locale du brouillard. Cette densité est calculée à partir d’une fonction de bruit procédural, simulée en projetant une texture sur trois plans orthogonaux afin de reconstituer un effet tridimensionnel sans recourir à une texture 3D coûteuse en mémoire. Un défilement temporel (scroll) anime ce bruit, créant l’illusion d’un nuage de particules en mouvement. Troisièmement, l’accumulation de densité le long du rayon est effectuée selon le modèle physique de Beer-Lambert, qui décrit l’atténuation exponentielle de la lumière traversant un milieu participatif. La transmittance finale détermine l’opacité du pixel.
Plusieurs optimisations ont été implémentées pour garantir la performance. Un jittering (décalage pseudo-aléatoire de la position de départ du rayon, calculé par une fonction de hachage) est utilisé pour réduire les artefacts de banding visibles lorsque le nombre d’échantillons est limité. Des clauses de sortie anticipée (early exit) interrompent la boucle si la transmittance devient négligeable, économisant des cycles GPU. La comparaison avec le tampon de profondeur de la scène garantit que le brouillard s’interrompt correctement derrière les objets opaques. Enfin, un coefficient d’atténuation verticale (falloff) densifie le brouillard près du sol, simulant un comportement réaliste de la pollution atmosphérique.
Un contrôleur dédié gère l’intégration de ce shader dans la scène. Ce composant, attaché à un cube représentant le volume, transmet en temps réel les propriétés de transformation (position centre, dimensions) au shader via un bloc de propriétés matériau (MaterialPropertyBlock), une technique de batching qui évite la création d’instances de matériau multiples et améliore les performances de rendu. Ce contrôleur expose également des paramètres de densité, de couleur et de vitesse de défilement, permettant des transitions animées entre différents niveaux de pollution (par exemple, lors de l’évolution du scénario de jeu).



[TERRE] Dégradation Procédurale (Fissures)
Le second shader simule la dégradation structurelle des bâtiments par l’apparition progressive de fissures sur leurs façades. Cette technique utilise un système de masquage procédural piloté par une texture de motif de fissures et une variable de contrôle globale.
Le principe technique est le suivant. Le shader reçoit en entrée une texture de base (l’albédo du bâtiment) et une texture de masque de fissures représentant le motif des craquelures. Une propriété numérique, nommée paramètre de quantité de fissures (CrackAmount, compris entre 0 et 1), détermine le seuil de visibilité. Le shader effectue un échantillonnage de la texture de motif et compare la valeur de luminance retournée au seuil défini. Lorsque la valeur du pixel de masque est supérieure au seuil, la couleur de base est remplacée par la couleur de fissure, créant visuellement l’apparition de craquelures. Cette technique est parfois appelée “dissolve mask” ou “threshold reveal” dans la terminologie technique. Une fonction d’inversion (One Minus) et d’interpolation linéaire (Lerp) permet de mélanger progressivement les deux états visuels.
Une carte de normales dédiée aux fissures est également intégrée pour ajouter un relief visuel (parallaxe/bump mapping) aux zones fissurées, renforçant le réalisme sans augmenter la complexité géométrique des modèles.
Du côté applicatif, un gestionnaire global (singleton) centralisé a été développé pour contrôler simultanément tous les bâtiments de la scène. Lors de l’initialisation, ce gestionnaire parcourt l’ensemble des objets de la scène, identifie ceux utilisant le shader de fissures, et constitue une liste de références vers leurs matériaux. Lorsqu’une modification du paramètre global est effectuée (via l’inspecteur ou par script), le gestionnaire itère sur cette liste et met à jour la propriété correspondante sur chaque matériau via leur identifiant de propriété pré-calculé (optimisation évitant la résolution de chaînes de caractères à chaque frame). Cette architecture permet d’animer les fissures de manière synchronisée sur l’ensemble de l’environnement urbain, par exemple pour illustrer la dégradation progressive de la ville en fonction des actions du joueur. Des fonctions utilitaires permettent de définir instantanément un niveau de dégradation ou de déclencher une animation interpolée sur une durée configurable via des coroutines.
Un contrôleur additionnel par objet offre une granularité individuelle, permettant à certains bâtiments de se dégrader indépendamment du système global, par exemple suite à un événement scriptable spécifique.



2. Systèmes de Particules
Les effets de particules sont utilisés de manière ciblée pour renforcer le feedback visuel des actions clés du joueur, tout en maintenant une enveloppe de performance contrôlée.
Feedback de Piratage ATM
Lors du piratage réussi d’un distributeur automatique, un effet de particules d’étincelles électriques est instancié dynamiquement sur le clavier numérique de la machine. Ce préfabriqué est configuré avec un émetteur à émission en rafale (burst emission) produisant plusieurs dizaines de particules en un court instant, simulant un court-circuit électrique. Les paramètres de vélocité radiale et d’atténuation en fonction de la distance créent un effet de projection réaliste.
Le déclenchement de l’effet est synchronisé avec la transition d’état du distributeur (passage à l’état “piraté”), le changement de matériau de l’écran et le retour sonore de succès. Cette synchronisation multi-sensorielle (visuel, auditif, changement d’état) renforce l’impact perçu de l’action par le joueur et fournit une confirmation immédiate sans nécessiter de lecture d’interface utilisateur.
Intégration Physique
Les objets de butin (liasses de billets) éjectés du distributeur après un piratage ne sont pas de simples objets statiques. Ils sont équipés de composants physiques (corps rigide) et reçoivent une impulsion lors de leur instanciation. Une force directionnelle combinée à une torque aléatoire simule l’éjection mécanique, faisant tournoyer les billets dans l’air avant qu’ils ne retombent au sol sous l’effet de la gravité.
Pour optimiser les ressources, une fois l’objet stabilisé au sol, son corps rigide est automatiquement figé (passage en mode cinématique), évitant ainsi les calculs de simulation physique continue pour des objets au repos.

3. Techniques d’Éclairage Avancées
Le système d’éclairage du projet dépasse les configurations statiques en implémentant des comportements dynamiques pilotés par le temps virtuel.
Cycle Jour-Nuit Systémique
Le cycle jour-nuit constitue le pilier atmosphérique du jeu. Il repose sur une machine à états définissant quatre phases : nuit, aube, journée et crépuscule. Chaque phase possède son propre ensemble de paramètres visuels : couleur et intensité de la lumière directionnelle simulant le soleil, teinte de l’éclairage ambiant global, couleur du ciel (modifiée via les propriétés du matériau Skybox), et paramètres du brouillard atmosphérique (couleur et densité).
Les transitions entre phases sont calculées par interpolation linéaire pondérée par le temps normalisé de la journée, produisant des dégradés progressifs et naturels. La rotation du soleil (lumière directionnelle) est interpolée par quaternion sphérique (Slerp) pour éviter les mouvements saccadés. Une lumière secondaire représentant la lune est également gérée : elle apparaît progressivement pendant la nuit avec une intensité inversement corrélée à celle du soleil et un décalage angulaire fixe.
Une courbe d’animation configurable permet de moduler l’intensité solaire en fonction de l’heure, simulant l’atténuation plus rapide au crépuscule ou la montée progressive à l’aube. Le système émet des événements (pattern Observer) à chaque changement de phase, permettant aux autres systèmes du jeu de réagir sans couplage direct.



Gestion des Lampadaires
L’éclairage urbain est assuré par un réseau de lampadaires contrôlés individuellement et synchronisés avec le cycle jour-nuit. Chaque lampadaire interroge périodiquement l’heure du système temporel et compare cette valeur à des seuils configurables d’allumage (par défaut 19h) et d’extinction (6h).
L’algorithme gère correctement le cas de franchissement de minuit (heure d’extinction inférieure à l’heure d’allumage) en utilisant une logique de comparaison adaptée. Lors de l’initialisation, le système détecte automatiquement les composants lumineux enfants de l’objet ou en crée un si nécessaire, garantissant le fonctionnement sur des modèles 3D importés sans configuration préalable.
Les propriétés de portée, de couleur (blanc chaud par défaut pour simuler un éclairage sodium) et d’intensité sont normalisées pour assurer une cohérence visuelle sur l’ensemble de la scène urbaine.

4. Post-Processing (Amélioration Visuelle)
Nous avons implémenté une pile de post-traitement via le système URP Volume pour unifier la direction artistique et améliorer la qualité perçue de l’image finale sans modification des assets sources.
Le Tonemapping ACES (Academy Color Encoding System) assure la gestion de la haute plage dynamique (HDR) des sources lumineuses. Cette technique de mappage tonal issue de l’industrie cinématographique compresse les valeurs de luminance élevées tout en préservant les détails dans les ombres, évitant la surexposition des enseignes lumineuses et des écrans de distributeurs sans écraser les zones sombres des ruelles.
L’effet de Bloom est appliqué avec un seuil précis pour isoler uniquement les pixels dont la luminance dépasse un certain niveau. Cela produit un halo lumineux autour des sources lumineuses intenses (écrans, néons, gyrophares) sans contaminer visuellement les zones de luminosité normale. L’intensité et la diffusion du bloom sont calibrées pour un rendu réaliste évitant l’effet “surbrillance” artificiel.
Une Vignette est appliquée pour assombrir progressivement les bords de l’écran, focalisant naturellement l’attention du joueur vers le centre de l’action. Cet effet, classique en photographie et au cinéma, renforce l’immersion en simulant les défauts optiques des objectifs réels.
Un Grain filmique subtil est superposé à l’image finale. Ce bruit de luminance casse l’aspect trop “propre” et numérique du rendu 3D temps réel, ajoutant une texture organique qui évoque inconsciemment les supports argentiques ou les capteurs de caméra, renforçant le réalisme perçu.
5. Optimisation des Performances
Le maintien d’une fréquence d’images stable dans un environnement urbain dense a nécessité l’implémentation de plusieurs stratégies d’optimisation.
Culling et Gestion de Visibilité (IA)
Le système de gestion des personnages non-joueurs intègre un mécanisme de culling spatial. Plutôt que de maintenir tous les PNJ actifs en permanence, un gestionnaire centralisé contrôle leur cycle de vie en fonction de la distance au joueur.
Les PNJ sont instanciés dynamiquement lorsque le joueur entre dans leur rayon d’apparition (spawn distance), mais uniquement s’ils se trouvent hors du champ de vision de la caméra, évitant ainsi l’effet de “pop-in” visible. Cette vérification est effectuée via un test d’intersection entre la position de spawn et les plans du frustum de la caméra, calculés à chaque frame à l’aide des fonctions géométriques du moteur.
Inversement, tout PNJ dépassant une distance de despawn configurable est détruit, libérant immédiatement les ressources mémoire et CPU associées (animations, navigation, mise à jour logique). Un plafond global limite le nombre maximum de PNJ simultanés, garantissant une charge de travail prévisible.
Le gestionnaire de PNJ utilise également un système de zones de navigation. Chaque zone définit un nombre maximum d’occupants et le système vérifie la saturation avant d’instancier un nouveau personnage, assurant une distribution réaliste de la population et évitant l’accumulation dans certaines zones.

Physique “Sleep” et Optimisation des Corps Rigides
Les objets physiques du jeu (billets de banque au sol, objets ramassables) sont configurés pour minimiser leur impact sur les performances une fois stabilisés.
Après leur phase d’animation initiale (éjection, chute, rebond), les corps rigides sont automatiquement passés en mode cinématique (isKinematic), désactivant leur participation à la simulation physique. Cette transition est déclenchée soit par un timer, soit par détection de stabilisation (vélocité inférieure à un seuil).
Cette approche “fire and forget” permet de bénéficier de la simulation physique pour l’effet visuel initial tout en évitant les coûts CPU récurrents des objets au repos. Le moteur physique n’a ainsi à traiter que les entités réellement en mouvement.
III. Focus Technique : Le Module de Piratage (Gameplay & Physique)
Le module de piratage de distributeurs automatiques illustre la coordination entre détection contextuelle, interface dynamique, simulation physique et intégration économique.
Architecture et Détection
Le distributeur fonctionne comme une machine à états finis à trois phases : état initial (piratable), phase active de piratage, et état terminal (compromis, vide). Ces transitions sont irréversibles, simulant un distributeur qui ne peut être exploité qu’une seule fois.
L’interaction repose sur une double validation spatiale. Le système calcule en continu la distance joueur-distributeur (seuil de trois mètres) et émet un raycast depuis la caméra pour vérifier que le joueur regarde effectivement la machine. Lorsque les deux conditions sont remplies, une interface contextuelle est générée procéduralement à l’exécution, affichant les actions disponibles.
Mécanique de Risque Temporel
L’action de piratage est traitée comme une procédure temporelle de quatre secondes. Une barre de progression animée s’affiche au centre de l’écran, son remplissage proportionnel au temps écoulé. Si le joueur s’éloigne ou détourne le regard, le piratage s’annule instantanément et le compteur se réinitialise. Cette mécanique crée une tension où l’exposition prolongée augmente le risque de détection tout en étant nécessaire pour aboutir.
Feedback Multi-Sensoriel et Matérialisation du Butin
La réussite déclenche une séquence coordonnée : remplacement du matériau de l’écran par une version “piratée”, activation d’un objet de skimmer sur le modèle 3D, instanciation d’un effet de particules d’étincelles sur le clavier, et retour audio de succès.
Le gain n’est pas simplement crédité dans l’interface mais matérialisé physiquement. Une liasse de billets est instanciée devant la machine avec un corps rigide actif. Une force impulsionnelle combinée à une torque aléatoire simule l’éjection mécanique, les billets tournoient dans l’air avant de retomber au sol sous l’effet de la gravité.
Récupération Ergonomique
Le ramassage du butin utilise un algorithme hybride pour maximiser la fluidité. Le premier mode repose sur le système d’interaction standard via raycast. Le second, dit de tolérance, permet la collecte si le joueur est très proche (moins d’un mètre) ou regarde approximativement dans la direction de l’objet (angle inférieur à soixante degrés, calculé par produit scalaire). Cette approche élimine la frustration de devoir viser précisément un petit objet au sol. Lors de la collecte, la valeur monétaire est transférée aux statistiques du joueur, un feedback audio est joué, et l’objet est détruit.


Vidéo de démonstration du piratage ATM :
IV. Focus Technique : Intelligence Artificielle de Foule
Le système de gestion des personnages non-joueurs (PNJ) vise à créer une ville vivante tout en maintenant des performances optimales via un équilibre entre réalisme comportemental et optimisation des ressources.
Gestion Dynamique de la Population
Un gestionnaire centralisé contrôle le cycle de vie des PNJ en fonction de la position du joueur. Les personnages sont instanciés dynamiquement lorsqu’ils entrent dans le rayon d’apparition (trente mètres par défaut), mais uniquement hors du champ de vision de la caméra pour éviter l’effet de “pop-in” visible. Cette vérification est effectuée par test d’intersection entre la position de spawn et les plans du frustum caméra. Inversement, tout PNJ dépassant la distance de despawn (quarante mètres) est détruit, libérant immédiatement les ressources. Un plafond global de vingt PNJ simultanés garantit une charge prévisible.
Zones de Navigation et Contraintes Spatiales
L’environnement est découpé en zones de navigation polygonales définissant les aires de déplacement autorisées. Chaque zone spécifie sa capacité maximale en occupants et le gestionnaire vérifie la saturation avant d’instancier un nouveau personnage, assurant une distribution réaliste de la population.
Les PNJ assignés à une zone restent confinés à l’intérieur. Le système calcule en continu la distance aux bords du polygone : si un chemin de navigation passe trop près des limites, il est rejeté et une nouvelle destination est calculée. Si un PNJ sort accidentellement de sa zone, il est automatiquement redirigé vers un point sûr proche du centre.
Comportement de Déambulation
Chaque PNJ exécute une boucle comportementale de déambulation. Il choisit une destination aléatoire dans sa zone, s’y déplace via le système de navigation automatique (NavMesh), puis attend un temps variable avant de sélectionner une nouvelle destination. Cette variabilité temporelle (entre une et cinq secondes) désynchronise les mouvements et évite les comportements robotiques.
Un algorithme de détection de blocage surveille la vélocité : si un PNJ se déplace trop lentement pendant plus de deux secondes alors qu’il devrait marcher, il est considéré comme bloqué. Le système annule alors son chemin actuel et calcule une nouvelle destination vers le centre de la zone, plus sûr géométriquement.

Interactions Contextuelles
Les PNJ détectent la proximité du joueur via un rayon configurable. Lorsque le joueur s’approche, ils peuvent interrompre leur déplacement, se tourner pour lui faire face et déclencher une animation de salutation. Ces comportements sont probabilistes (trente pour cent de chance de réaction) pour éviter que tous les passants ne réagissent de manière identique.
L’animation de marche est pilotée par la vélocité réelle de l’agent de navigation. Un paramètre de vitesse est transmis à l’animateur avec un lissage temporel (damping), produisant des transitions fluides entre l’immobilité et la marche, et évitant les changements d’animation saccadés.
V. Conclusion
Le développement de Scam Simulator a permis de mettre en pratique un large spectre de techniques avancées du développement de jeux vidéo, de la programmation graphique aux systèmes d’intelligence artificielle.
Sur le plan du rendu, les shaders personnalisés développés démontrent une maîtrise des techniques de programmation GPU. Le shader de pollution volumétrique par raymarching implémente un algorithme d’échantillonnage spatial avec gestion de la profondeur et atténuation physiquement réaliste (Beer-Lambert). Le shader de dégradation procédurale offre un contrôle artistique fin sur l’apparence des bâtiments via un système de masquage paramétrable. Ces deux shaders, combinés au cycle jour-nuit dynamique et à la pile de post-traitement, contribuent à une direction artistique cohérente et immersive.
Sur le plan du gameplay, le module de piratage illustre l’importance de la coordination multi-système pour créer des interactions mémorables. La synchronisation entre détection contextuelle, progression temporelle, feedback multi-sensoriel (visuel, audio, physique) et intégration économique produit une boucle de gameplay à la fois intuitive et satisfaisante.
Sur le plan de l’optimisation, les stratégies de culling spatial pour la gestion des PNJ et la mise en sommeil des corps rigides démontrent une approche consciente des contraintes de performance, essentielle pour maintenir une expérience fluide dans un environnement urbain dense.
Ce projet constitue une base technique solide pour d’éventuelles extensions : ajout de nouveaux types d’arnaques exploitant l’architecture modulaire existante, enrichissement des comportements de PNJ via des machines à états plus complexes, ou intégration de systèmes de réputation influençant dynamiquement la difficulté et les réactions de l’environnement.