Présentation du projet
Cela fait maintenant 2 jours que je participe à la Furry Game Jam #1, une Game Jam de 9 jours sur le thème « Blocked ». Si vous n’avez pas lu mon dernier article où j’explique le concept et pourquoi est ce que je participe, je vous invite à lire l’article que j’ai publié à ce sujet, mais pour la faire courte, en participant à cette Game Jam, je me suis mis au défi de terminer un jeu vidéo en un temps limité, dans le but de gagner en expérience sur le moteur Godot.
Lors de ma première journée, j’ai commencé par chercher un concept qui corresponde au thème donné par les organisateurs. J’ai fini avec 3 idées :
- Un jeu de type Puzzle inspiré de Portal, où le joueur est bloqué dans un bâtiment et doit trouver un moyen de s’en échapper.
- Une simulation de Twitter, où le joueur joue le rôle d’un modérateur pour un compte populaire de la plateforme et doit bloquer les utilisateurs malveillants.
- Un jeu d’infiltration dans lequel le joueur est bloqué par un système de sécurité complexe et doit accéder à un coffre fort sécurisé pour y voler des documents, en utilisant des outils de piratage.
J’ai choisi de suivre la troisième idée pour mon jeu. Je trouve le concept intéressant, inspirant et assez difficile pour me donner un véritable challenge. En plus de ça, mon expérience sur des jeux ayant cet aspect d’infiltration est un point positif : je peux m’inspirer de ces jeux, comme Payday 2 et 3, pour créer le meilleur système possible pour mon projet de Game Jam.

Jour 1 : création du joueur et du HUD
Création du PlayerController
Après avoir passé la matinée à imaginer les mécaniques et l’aspect narratif du projet, j’ai lancé Godot et créé un niveau pour le prototypage. La première étape du jeu était la création du personnage contrôlé par le joueur et l’implémentation du mouvement dans le niveau. Mon « PlayerController » inclut des mouvements, comme par exemple :
- Le déplacement avec WASD (ou ZQSD)
- Le saut
- Le sprint
- La position accroupie (utile pour naviguer dans des conduits de ventilation ou pour passer inaperçu devant une fenêtre)
- La possibilité d’incliner la caméra pour regarder derrière un coin (inspiré des shooters tactiques comme Ready or Not)
J’avais déjà réalisé un PlayerController pour un prototype avant la Game Jam. Recréer un nouveau contrôleur avec les nouvelles fonctions (inclinaison de la caméra) n’a donc pas été très difficile. J’en ai aussi profité pour modifier quelques valeurs afin que le mouvement soit plus adapté à un jeu d’infiltration.
Conception d'une interface graphique
Mes choix en matière d’interface graphique sont assez basiques. Je n’affiche pas beaucoup d’éléments dans mon HUD, seulement ce dont le joueur a besoin pour jouer au jeu. J’ai décidé d’y afficher :
- L’objectif en cours
- Le niveau de suspicion
- Une description longue de l’objectif en cours, que le joueur peut afficher en maintenant la touche « Tab »

À terme, je prévois d’ajouter de la voix dans le jeu à travers Cipher, le personnage jouant le rôle d’opérateur et donnant les instructions au joueur pour progresser (et pour rendre le jeu immersif). Il y aura donc des sous-titres plus tard dans le projet pour améliorer l’accessibilité.
Dans la soirée, j’ai eu le temps de modéliser une caméra de surveillance avec Blender et de l’importer dans Godot pour y ajouter le système de détection plus tard dans le projet. C’est aussi à ce moment là que j’ai trouvé le nom pour mon jeu : Access Denied.
Jour 2 : Système de détection
Qui dit jeu d’infiltration dit détection.
Dans Access Denied, le bâtiment que le joueur doit infiltré est truffé de systèmes de sécurité, développé par la société BlackFox : caméras de surveillance, lasers, capteurs de présence. Des gardes surveillent également l’intérieur du site et gardent un oeil sur les différents systèmes de sécurité.
Mon implémentation de ce système est la suivante : vous vous rappelez de la jauge de détection du premier jour ? Cette barre affiche un niveau de suspicion entre 0% et 100%. Lorsque le joueur entre dans le champ de vision d’une caméra de sécurité ou d’un garde, la barre se remplit jusqu’à atteindre 100% et déclencher l’alarme. En restant à l’écart, le joueur peut attendre un court instant que la jauge de suspicion diminue.
D’autres systèmes, comme les lasers, sont impardonnables et déclencheront instantanément l’alarme.

Je suis parvenu à implémenter ce système complexe dans mon jeu en le rattachant à la caméra que j’avais modélisé la veille. Et en plus du système de détection, j’ai commencé à anticiper le fonctionnement final du jeu et de la transition entre les menus et les niveaux. J’utilise un « GameManager » pour réaliser cette tâche : son rôle est d’enregistrer toutes les informations du jeu (comme le niveau de suspicion) et de charger correctement les niveaux à partir d’une liste de scènes Godot.
Il est maintenant temps pour moi de travailler sur les gardes pour le reste de ma deuxième journée de création. Les gardes seront bien plus complexes à modéliser sur Blender et plus sophistiqués que les caméras au niveau de la détection du joueur et du mouvement.
Les outils que j'utilise
Pour conclure ce premier devlog, je souhaite parler des outils que j’utilise pour rester organisé tout au long de ce projet ambitieux.
Toutes mes idées et toute ma documentation est écrite sur Obsidian, un programme de prise de notes utilisant la syntaxe Markdown. L’avantage principal de cet outil est l’organisation et la rapidité d’écriture : je peux écrire des documents détaillés et bien formatés en un temps record grâce au Markdown, et le système de liens entre documents est très pratique pour organiser et hiérarchiser différents documents. Obsidian permet aussi de faire des graphes simples, qui peuvent s’avérer pratiques plus tard pendant le développement.

Pour organiser les tâches à réaliser, j’utilise la page « projets » de Github, un outil que j’ai découvert récemment en organisant mon projet de fin de deuxième année à Supinfo. J’ai accès à un Kanban avec des informations comme la priorité, l’envergure d’une tâche et des détails rédigés en Markdown.

Enfin, même si ce projet est dans mon cas individuel, je met en ligne mon code dans un dépôt Github privé, car il est toujours important de bien organiser son code avec un système de contrôle de version, au cas où quelque chose ne se passe pas comme prévu au cours du développement.