Ça fait depuis le lycée que je me dis "un jour je fais un jeu vidéo". Ce mois-ci, j'ai enfin arrêté de repousser et j'ai ouvert Unity pour de vrai. Voilà où j'en suis après les premières parties de tutoriel, ce que j'ai compris, et ce qui m'a pris la tête.

Pourquoi Unity, pourquoi maintenant

Je suis passionné de jeux vidéo depuis toujours, mais entre le BTS SIO SLAM et les projets (AP1, AP2, AP3...), je n'avais jamais pris le temps de vraiment m'y mettre sérieusement. Une fois le rythme du Bachelor à Sup de Vinci un peu pris, je me suis dit que c'était le moment de lancer un vrai projet perso, sans note à la clé, juste pour apprendre et pour le plaisir.

J'ai choisi Unity en C# plutôt qu'Unreal ou Godot parce que je connaissais déjà un peu le C# (proche du Java qu'on utilise en BTS) et que la communauté française est énorme.

La ressource qui m'a débloqué

Après avoir tâtonné tout seul quelques jours, je suis tombé sur la playlist FPS Full Game Tutorial de la chaîne Mike's Code. Un tutoriel en 15 parties pour construire un FPS complet, étape par étape. C'est exactement ce qu'il me fallait : pas juste "voici comment bouger un cube", mais un vrai projet qui avance.

Je suis actuellement à la Part 5 (Shooting at Bottles), et j'ai poussé mon avancée sur GitHub pour suivre ma progression.

Ce que j'ai déjà réussi à faire

En quelques sessions, j'ai un petit bonhomme qui bouge, qui vise, et qui tire :

  • Un contrôleur FPS avec CharacterController : déplacement ZQSD, saut, gestion de la gravité
  • Une caméra à la première personne (rotation souris, avec un clamp vertical pour pas retourner la caméra comme une crêpe)
  • Un système d'arme avec trois modes de tir — Single, Burst, Auto — et une dispersion aléatoire pour simuler la précision
  • Des balles physiques, propulsées par impulsion sur un Rigidbody, avec des effets d'impact selon ce qu'elles touchent
  • Des bouteilles de bière qui réagissent aux tirs (physique + son) — le petit exercice fun de la Part 5

Et en bonus perso, en dehors du tuto, j'ai ajouté des cubes qu'on peut faire exploser en morceaux avec un plugin de démolition de mesh. C'était l'occasion de sortir un peu du cadre du tutoriel et de bidouiller de mon côté.

Ce qui m'a pris la tête

Le plus dur pour moi, ça n'a pas été le C# en lui-même (l'OOP, je la pratique déjà en Java), mais plutôt de comprendre comment Unity organise les choses : les GameObjects, les composants qu'on attache dessus, la différence entre ce qui se passe dans l'éditeur et dans le code. Le pattern singleton pour mes références globales (GlobalReferences.Instance), par exemple, m'a demandé de relire deux fois le tuto pour bien piger pourquoi on fait ça.

Autre truc auquel je m'attendais pas : le clamp de la caméra. Une histoire de degrés mal bornés et hop, la caméra fait un tour complet sur elle-même. Rien de grave, mais ça m'a rappelé qu'en 3D il faut toujours réfléchir aux angles avec plus de rigueur qu'en dev web.

La suite

Le tuto continue avec le modèle d'arme et ses animations, le rechargement, une deuxième arme, le ramassage de munitions, la visée (ADS), et des objets à lancer. J'ai hâte d'avoir un vrai visuel d'arme à l'écran plutôt qu'un cube qui tire des balles invisibles.

Pas de plan de jeu multijoueur pour l'instant — je préfère solidifier les bases solo avant de me lancer là-dedans. Mais je garde l'idée dans un coin de la tête pour plus tard.