Comment je suis tombé dans le développement de jeux vidéo

NX Academy se met aux jeux vidéo
Voilà un article qui est assez peu difficile à expliquer et à introduire. Non pas parce que j’annonce une mauvaise nouvelle. Au contraire, je dirais que je suis plutôt en train d’annoncer quelque chose qui me fait très plaisir. Disons juste que je ne sais pas forcément par où commencer.
Bon, si vous avez capté le titre, ou que si vous avez vu mes posts sur LinkedIn dernièrement, vous l’avez compris : j’ai commencé à me mettre sur mon temps libre au développement de jeux vidéo. C’est quelque chose qui est venu assez naturellement. Il y a quelques années, j’ai acheté un bouquin : Code the classics. Le principe était de refaire les classiques du jeu vidéo, genre Pong ou Streets of rage, avec Python et Pygame. Petit à petit, j’ai commencé à vouloir aller plus loin et j’ai donc commencé à vouloir coder mes propres jeux vidéo sans passer par le bouquin.
Et bon, voilà, comme d’hab avec moi, je suis tombé la tête la première dedans.
Pourquoi des jeux ?
Honnêtement, ça vient de loin. J’ai grandi avec les jeux vidéo. J’y ai joué notamment pas mal avec mon frère à l’époque puis avec mon meilleur ami. Ça commence à remonter un peu dans le sens où mes premiers jeux étaient Robison Requiem, Alone in the Dark ou même Monkey Island : ils datent pour la plupart du milieux des années 90. Puis, en 2001, j’ai commencé à consommer beaucoup plus de jeux, comme Hitman, Soldier of Fortune, Call of Duty, etc. J’avais une situation familiale qui n’était pas simple et disons que ça me donnait un peu un échappatoire.
Avec du recul, ce que je trouve dommage, c’est que je n’ai pas compris plus tôt que c’était la programmation qui m’intéressait. Mais bref, la vie a fait son chemin et je me suis quand même retrouvé développeur. Et on peut dire que j’ai pas mal codé au fil des années. Et donc, dernièrement, j’ai commencé à m’intéresser au développement de jeux vidéo (en partie grâce à l’IA). Coder des jeux, c’est donc, en quelque sorte, un retour aux sources. C’est quelque chose qui me permet de comprendre un peu comment les jeux sont faits, comment ils tournent et du coup, comment j’aime enseigner, pouvoir aussi prendre le temps de l’expliquer.
Coder un jeu pour progresser
Pour moi, développer un jeu vidéo, ça a toujours été quelque chose de mysterieux. J’ai toujours vu un peu ça comme le niveau ultime de la programmation. Je me rends compte que j’ai un peu “roulé ma bosse” niveau développement front (sur web ou sur des applications iOS) et back. Aujourd’hui, je pense que je peux à peu près travailler et déployer n’importe quoi. Je suis à l’aise aussi bien côté adminstration système et réseaux que DevOps et développement.
Mais le jeu vidéo, pour moi, c’était d’un autre niveau. Je pense que sans l’aide de l’IA, ça m’aurait pris beaucoup plus de temps à avoir des résultats (moins bons et moins convainquants). Mais comme souvent avec moi, j’ai pris le problème à “bras le corps” et je me suis mis au travail.
Le principal challenge que je me suis fixé est de ne passer que par des outils orientés code. Pour l’instant, je travaille principalement avec Python et Pygame. Je pense que dans le futur, j’irais m’intéresser à Monogame (C’est du C#). Ce que j’aime bien avec ces deux outils, c’est leur approche. On code les jeux vidéos sans passer par un éditeur. On le crée uniquement via des lignes de code et je pense que c’est là que je vais le mieux progresser.
Il faut savoir qu’avec un jeu, et particulièrement avec un jeu en Python sans moteur, vous êtes rapidement confronté aux fondamentaux. Je pense principalement ici à la bonne gestion des performances, à l’architecture du code et la logique mathématique. Des éléments, qui même si vous codez avec une IA, vous demande de mettre les mains dans le cambouis. En tout cas, c’est ce que j’essaye de faire.
Mon idée avec NX a toujours été d’être dans le partage. Principalement de connaissances mais pas que. J’ai toujours essayé, depuis le début, de montrer que la vie n’était pas un “long fleuve tranquille” mais qu’elle restait intéressante si on se donnait les moyens et qu’on y prenait du plaisir (rhooo, le mélodrame quoi ^^). Donc, en apprenant comment on fait des jeux et en sortant, j’ai envie de vous l’apprendre. J’en profite pour signaler qu’il est possible que NX évolue un peu ces prochains mois avec de nouveaux cours mais peut-être un système de formule. Mais j’y reviendrais en temps et en heure.
Open source et commercial : deux approches différentes
Pour votre information, tous les jeux que je développe et que je vais développer, ne vont pas suivre pas le même modèle de distribution. Par distribution, j’entends comment vous allez pouvoir y jouer (si vous voulez y jouer). Par exemple, le clone de Wolfenstein 3D est entièrement open source. Le code est disponible sur GitHub, vous pouvez le lire, le faire tourner sur votre machine, vous en inspirer. C’est cohérent avec l’ADN de NX : partager, expliquer et rendre accessible. J’ai aussi prévu de faire quelques vidéos dessus mais j’y reviendrais dans un futur article.
D’autres projets, comme le city builder sur lequel je travaille en ce moment, auront un modèle différent. Vous pourrez l’acheter sur Stream. Je suis en train de travailler sur la release du demo en ce moment même. J’ai pas mal réfléchit à cet aspect commercial. D’ailleurs, aussi bien celui de NX que celui des jeux que je développe. J’en suis arrivé à la conclusion qui si je ne faisais pas payer NX (ou certaines parties de NX) ou mes jeux, c’est que je ne me sentais pas forcément légitime. Mais aussi, comme c’était pour de la passion, je me permettais certains raccouris. Et au final, ça m’enlevait une partie de la pression nécessaire à la création de quelque chose de plus qualitatif. C’est assez difficile à expliquer comme ça mais je crois que faire payer une partie de mon travail, ça me force à être plus rigoureux.
Dans tous les cas, je vais faire coexister les deux. Je pense que c’est sain et je pense que c’est nécessaire.
Ce que vous trouverez sur cette page
La page Jeux regroupe les projets sur lesquels je travaille ou que j’ai terminés. Pour chacun, vous trouverez une description, son statut actuel et les liens vers le code ou la page Steam selon le cas. C’est un espace qui va évoluer. Il y a des projets en cours, d’autres en réflexion. Je publierai des mises à jour au fil du temps. Si vous avez des questions sur un projet, une curiosité technique ou envie d’échanger, vous pouvez me retrouver sur LinkedIn.
Bonne exploration.