No More Noise

Jeu vidéo -

Il y a trois ans, j’ai décidé de me lancer dans un projet ambitieux : créer un jeu vidéo en solo. L’objectif était simple : réaliser un concept que j’avais en tête depuis un moment, en passant par toutes les étapes de développement, du prototypage à la communication.

Introduction

Je me suis lancé dans le développement informatique à l’âge de 16 ans sur le jeu minecraft. Ce jeu offre la possibilité de jouer en multijoueur en hébergeant soit même un serveur sur lequel il est possible d’installer des plugins.

A l’époque mon idée était de créer un mini jeu au sein du jeu, une mode très populaire a ce moment là notamment avec des mini-jeux comme le hunger games.

Minecraft Hunger Games

N’ayant alors aucune expérience en développement, je me suis plongé dans cet apprentissage.

Quelques années plus tard, après de nombreux essais infructueux, je décide donc de quitter l’unvers de minecraft et de chercher un moteur de jeu dans lequel je pourrais créer mon propre jeu sans contrainte.

Je tombe rapidement sur Unity qui semble être un bon logiciel avec beaucoup de contenu qui me permettrait de potentiellement réussir à faire un jeu.

J’ai passé plusieurs mois à créer des mini-projets, souvent inachevés, dans le but de m’entraîner.

Pendant cette période, je bascule petit à petit dans le monde du développement web, jusqu’à totalement laisser tomber le développement de jeux vidéo.

Ces phases mon permi d’apprendre et de comprendre les bases du développement, d’en un premier temps avec le langage java, pour les plugins minecraft, puis le C#, avec Unity

Petit à petit, je me suis éloigné du développement de jeux pour me concentrer sur le développement web.

Prémices du projet

Revenons maintenant en 2021. A ce moment la, je quitte le domicile familial et par la même occasion je décide de me lancer dans un projet ambitieux. Lancer la conception d’un jeu sur un projet débuté lors de ma phase d’apprentissage d’Unity quelques années auparavant.

Ancienne capture jeu

À ce moment-là, je venais de me faire embaucher dans l’entreprise dans laquelle j’avais fait mon alternance. Je n’ai pas touché au développement de jeu vidéo depuis plusieurs années, mais j’ai pu grandement m’améliorer sur la mise en place de projet, notamment via mes expériences professionnelles. Autant dire que j’étais toujours un junior, mais j’avais gagné en compétence grâce à mon parcours scolaire et professionnel.

Lancement du projet

En Février 2021 le projet est officiellement démarré.

Mon idée initiale était de créer un jeu en voxel vu du dessus, dans un univers post-apocalyptique. Les premières semaines ont donc été consacrées à la création d’un document de conception décrivant le jeu, ses fonctionnalités et ses mécaniques.

Document de conception

À la fin de cette phase, j’avais plusieurs documents détaillant les actions possibles pour le joueur, le système de déplacement, l’inventaire, les armes, ainsi que le comportement des ennemis et le déroulement global du jeu. J’ai même réalisé une vidéo pour présenter ces idées et conserver une trace de cette première étape.

C’était aussi un moyen de faire une première communication sur le projet.

Prototype

L’étape suivante consistait à développer un prototype, une version minimale du jeu permettant de tester rapidement les concepts et d’identifier les mécaniques qui seraient moins amusantes pour un joueur final. Ce processus a duré environ un mois et demi.

Prototype

Même si le prototype avait des graphismes rudimentaires, il m’a permis de faire évoluer certaines idées, notamment sur le comportement des ennemis. Une vidéo a également été réalisée à cette étape pour expliquer l’évolution du projet.

Prototype

Développement

Passons maintenant à la phase la plus importante : le développement du jeu.

La première étape de cette phase a été de découper le projet en plusieurs tâches et sous-tâches

Cette division des tâches est un des premiers problèmes concernant la conception de ce jeu. En effet, je pense que cette approche peut fonctionner avec la création de n’importe quel logiciel. Mais dans le cas de la création d’un jeu, où il est extrêmement important de créer un intérêt de la part du public, la partie visuel ainsi que les effets sonores étant une chose que je prévoyais de faire en toute fin de projet, le jeu était visuellement peu attrayant, ce qui complique la promotion.

Timeline

21 Décembre 2022
Le joueur et la caméra
04 Septembre 2022

Lors de la première étape du développement, je me suis concentré sur la partie joueur, en particulier sur les déplacements, les animations, et la gestion de la caméra.

Les déplacements et le mouvement du joueur sont relativement classiques. En revanche, pour la caméra, j’ai opté pour une orientation spécifique : 45° en horizontal, 30° en vertical, et une hauteur de 10m. Cela se rapproche d’une vue isométrique classique, mais avec une différence notable : la caméra est en mode Perspective au lieu du mode Orthographic souvent utilisé dans les jeux isométriques.

Vue isométrique

Je trouve que le mode Perspective offre un rendu visuel plus immersif et fonctionne mieux pour ce type de jeu.

Vue perspective

04 Septembre 2022
12 Avril 2023
Intelligence des ennemis
21 Décembre 2022

La deuxième étape a consisté à développer l’intelligence artificielle (IA) des ennemis, une phase complexe regroupant plusieurs sous-systèmes.

Dans un premier temps, j’ai utilisé les outils basiques fournis par Unity pour implémenter une IA simpliste. Cependant, après plusieurs tests, le comportement des ennemis restait étrange et peu satisfaisant. J’ai donc décidé d’utiliser une librairie tierce, A* Pathfinding, qui m’a permis de mieux configurer les paramètres et d’optimiser l’IA en fonction des cartes et des types d’ennemis.

Un des avantages de cette librairie est qu’elle permet de localiser précisément chaque ennemi, une fonctionnalité essentielle pour intégrer des systèmes comme le cassage de porte, où les ennemis peuvent interagir avec l’environnement.

Path finding
Champ de vision (Field of View)

Un système de champ de vision a également été mis en place pour simuler la perception visuelle des ennemis. Concrètement, ce système génère un triangle isocèle invisible devant chaque ennemi. Lorsque le joueur entre dans cette zone, un déclencheur est activé, incitant l’ennemi à “réagir” en fonction des comportements définis (détaillés plus bas).

La taille et la portée de ce champ de vision peuvent être ajustées en fonction de la difficulté du jeu pour moduler la perception des ennemis.

Champ de vision
Automate fini (Finite State Machine)

Pour gérer les réactions des ennemis, chaque personnage utilise un automate fini (Finite State Machine).

Concrètement, chaque ennemi possède plusieurs états, chacun capable de :

  • Réaliser une action, comme patrouiller autour d’un bâtiment.
  • Transiter vers un autre état, par exemple lorsque le joueur entre dans le champ de vision.
  • Réagir à des événements, comme perdre la vue du joueur pendant quelques secondes.
Exemple schéma

Voici un schéma des différents états possibles pour un ennemi ainsi que les transitions qui provoquent un changement d’état. Petite particularité, une transition reliée à aucun état vérifie en permanence la santé de l’ennemi, car elle ne dépend d’aucune autre.

États

Chaque état peut également être relié à d’autres sous-systèmes, comme le champ de vision.



21 Décembre 2022
17 Novembre 2023
Gestion des bruits
12 Avril 2023

La prochaine étape consiste à gérer les bruits, un élément central du jeu étant donné que cette mécanique fait partie intégrante du gameplay.

Deux solutions ont été envisagées pour déterminer laquelle fonctionnait le mieux. La première consistait à ajouter des “oreilles” à chaque ennemi, leur permettant d’entendre tous les sons émis dans le monde du jeu. Lorsqu’un son était détecté, un ennemi augmentait sa jauge “d’énervement”, une mesure de l’agressivité de l’ennemi qui croît au fur et à mesure des bruits perçus. Il existe 4 niveaux de puissance pour un ennemi, correspondant à différents paliers de cette jauge.

Chaque son émis dans le monde a plusieurs paramètres : la distance entre la source et l’ennemi, ainsi que l’intensité du son. Toutefois, ce système posait des problèmes d’optimisation car chaque ennemi vérifiait tous les sons en même temps, générant des ralentissements. De plus, le gameplay devenait trop simple, car le joueur pouvait isoler et éliminer les ennemis un par un en s’éloignant pour éviter les effets de la jauge.

Pour résoudre ces problèmes, le système “d’oreilles” a été modifié : au lieu d’être attaché à chaque ennemi individuellement, il est maintenant global. Désormais, il n’y a plus de notion de distance pour chaque ennemi, et la jauge d’énervement est la même pour tous les ennemis.

Lorsque la jauge atteint un certain palier, tous les ennemis augmentent de puissance, ce qui rend le jeu plus difficile à mesure que la partie progresse et incite le joueur à gérer discrètement ses actions pour ne pas être submergé. L’augmentation de puissance passe par une augmentation de la vitesse, du champ de vision, de la vie, et des dégâts infligés.

Système d'énervement

12 Mars 2023
Création de la carte
17 Novembre 2023

La dernière grande étape a été de développer les cartes de jeu. La première carte créée présentait de nombreux problèmes, notamment en ce qui concerne les routes à suivre pour atteindre les objectifs. Il manquait une distinction claire entre les différents chemins, rendant l’expérience de jeu confuse.

Carte test

Une seconde carte a été développée, avec un environnement plus varié, incluant une zone forestière, une zone plus urbaine, et des espaces ouverts. Chaque zone contient plus ou moins de loot et un nombre variable d’ennemis. Pour simplifier le gameplay, le jeu ne se déroule qu’à l’horizontale, c’est-à-dire que le joueur ne peut pas monter dans les étages des bâtiments.

Sur cette nouvelle carte, des événements peuvent être déclenchés. Par exemple, lorsque le joueur récupère l’objectif (un médicament dans un supermarché), une alarme retentit, augmentant la jauge des ennemis pendant quelques secondes. Le joueur doit ensuite rapporter l’objectif au point d’apparition. Il existe plusieurs routes pour atteindre le supermarché, chacune présentant différents niveaux de difficulté et d’ennemis.

Carte niveau 1

Playtest

Après un an de développement, j’avais une version jouable du jeu. J’ai donc invité quelques proches à tester cette version pendant 10 à 30 minutes, suivies d’un questionnaire. Cela m’a permis de recueillir des retours précieux sur les aspects à améliorer ou à corriger.

Playtest

Démo

Chaque année, en février, il y a le Festival Steam qui est un événement permettant aux développeurs de présenter des démos de leurs jeux. Le festival se déroule en juin 2024, j’ai donc quatre mois devant moi pour avoir la meilleure version possible de mon jeu. Je me suis fixé un plan de production précis : récupérer toutes les tâches à faire et les prioriser par ordre d’importance, faire des choix sur les tâches qui ne pourront pas être faites, et surtout chiffrer ce qu’il y a à faire pour prévoir au mieux une sortie cohérente.

poster Démo

Un mois avant la date butoire, j’ai intensifié la communication autour du jeu, en publiant quotidiennement des vidéos courtes sur YouTube Shorts et TikTok. Ces vidéos ont généré entre 500 et 1000 vues sur TikTok, tandis que YouTube en générait entre 20 et 100.

Après la fin de l’événement, en analysant les statistiques de Steam, j’ai constaté que ma participation avait considérablement boosté l’intérêt pour mon jeu, avec environ 800 ajouts à la wishlist, contre seulement 200 sur les deux années précédentes.

Graphique des wishlists

Communication

La majeure partie de la communication s’est faite via des vidéos courtes sur YouTube Shorts et TikTok. Ces formats rapides ont généré entre 500 et 1000 vues sur TikTok, et entre 20 et 100 sur YouTube.

Initialement, j’avais également prévu de publier des Devlogs, des vidéos plus longues détaillant l’avancée du projet. Cependant, ces vidéos demandaient énormément de travail, et n’ont pas rencontré le succès escompté. J’ai donc mis ce format en pause pour réfléchir à une approche plus efficace.

Miniature Youtube

J’ai aussi publié quelques posts sur Twitter et Reddit, sans grand succès. J’ai appris qu’il faut publier très régulièrement pour percer sur ces plateformes. Le manque de nouveauté visuelle à montrer était également un frein à cette régularité.

Poste tweeter

En bon fan de développement web, j’ai aussi mis en place un site web de présentation du jeu, le but est d’avoir une sorte “copie” de la page steam. Le site a été fait avec astro, pour le rendu statique du html, et tailwind pour le style. Le tout est hébergé sur ovh avec un nom de domaine dédié. La mise en production des fichiers se fait via le ftp, le site aurait mérité une petite gestion avec du CICD pour éviter les tâches manuelles et les problèmes, mais par économie de temps, je me suis cantonné à une publication manuelle.

logoslogos
Site web

Un petit module php a été implémenté dans le site pour permettre de gérer les redirections de liens “utm”.

Pour faire simple des presets sont enregistrer dans le fichier php pour rediriger vers la page steam.

Par exemple, lorsque je veux mettre en lien dans vers la page steam dans une vidéo Youtube, j’utilise un lien comme ceci :

https://nomorenoisegame.com/steam?utm=youtube-sneak&utm_term=steam-fest

Le lien redirige vers un petit script qui va transformer, dans cet exemple, youtube-sneak en une liste de champ utm :

$utmMapping = [
    "youtube-sneak" => [
        "utm_source"=>"youtube",
        "utm_medium"=>"video",
        "utm_campaign"=>"sneak-peek",
        "utm_content"=>"description"
    ],
    "x-post" => [
        "utm_source"   => "twitter",
        "utm_medium"   => "social",
        "utm_campaign" => "sneak-peek",
        "utm_content" => "post"
    ],
    ...
];

Cela permet de réduire la taille des liens et d’avoir une consistance dans les noms des utm renvoyés.

Ces informations ne sont pas stockées sur le site nomorenoise, mais sont envoyées à la page Steam qui lui se charge de sauvegarder les informations et de les agrégés dans des tableaux et des graphiques.

Visite page Steam

Conclusion

Je suis fier du chemin parcouru avec No More Noise. Bien que le projet ait pris plus de temps que prévu et que mon manque d’expérience m’ait conduit à refaire certains aspects plusieurs fois, j’ai beaucoup appris en cours de route. Si j’avais mieux géré la communication, le jeu pourrait avoir encore plus d’impact.

Le jeu comprend aujourd’hui :

  • Une vue du dessus dynamique
  • Un système de disparition des toits lorsque le joueur s’approche
  • Des ennemis capables de traquer le joueur en formant des hordes
  • Un algorithme de bruit qui influence la difficulté
  • Une première carte avec un objectif d’aller-retour
  • Un système d’armes variées

Pour compléter le jeu, il manquerait :

  • D’autres cartes et niveaux
  • Plus d’armes avec des effets et dégâts variés
  • Une diversité d’ennemis
  • Des conditions météo influençant la difficulté
  • Un mode multijoueur

Le jeu est toujours en cours de développement. Je prévois de finaliser la première carte, car je ne pense plus que ce soit rentable de continuer à y investir trop de temps. Le jeu sera donc disponible avant la fin de l’année en l’état, avec une seule carte et un niveau.

Il sera disponible gratuitement sur Steam, vous pouvez y accéder via Steam.