Projet personnel
Mission Orion
Jeu spatial en Python, né d'un exercice de cours et poursuivi sur mon temps libre. Il se joue directement dans le navigateur.

En bref
Mission Orion est un jeu de tir spatial écrit en Python avec pygame. C'était au départ un exercice de cours ; j'ai continué chez moi parce que le projet me plaisait. Je l'ai ensuite compilé en WebAssembly pour qu'il se joue dans le navigateur, sans rien installer.
Le contexte
En première année, un TP demandait de réaliser un petit jeu avec pygame pour pratiquer Python : sprites, collisions, score. Une fois le TP terminé, j'ai voulu aller plus loin et en faire un vrai jeu, avec plusieurs niveaux et une progression.
Ce que j'ai réalisé
- Un mode histoire en vagues successives, avec un boss, et un mode survie.
- Un garage pour personnaliser la couleur du laser et du vaisseau.
- Des arrière-plans générés par le code, avec huit styles différents.
- Une progression sauvegardée (modes terminés, meilleurs scores).
- Les écrans d'introduction, les menus et les crédits.
- Une version web, jouable depuis ce portfolio.
Les choix techniques
- Neuf modules aux rôles précis : configuration, état du jeu, génération des fonds, chargement des ressources, entités, dessin de l'interface, écrans, utilitaires et boucle principale.
- Des dépendances à sens unique entre ces modules, pour éviter les imports circulaires.
- Toute la configuration au même endroit : ajouter un niveau ou une couleur se fait en modifiant une liste.
- Une mise en cache des arrière-plans générés, pour garder un jeu fluide.
- Une boucle de jeu asynchrone, nécessaire pour la version navigateur avec pygbag, et qui fonctionne aussi en local.
Les difficultés et comment je les ai résolues
- Un seul gros fichier devenu difficile à faire évoluer : je l'ai découpé en modules, avec un schéma des dépendances pour m'y retrouver.
- Faire tourner le jeu dans le navigateur : j'ai adapté la boucle principale pour pygbag, et fixé le format d'affichage en 16/9 pour éviter les bandes noires.
Le résultat
Le jeu est jouable en ligne. Il n'est pas terminé, et je le reprends régulièrement. Ma copine le teste depuis le début : elle me dit quand quelque chose n'est pas clair, et une bonne partie des idées viennent d'elle.
Ce que j'en retiens
- Organiser un projet en modules dès qu'il grandit.
- Faire tester par quelqu'un d'autre révèle des problèmes qu'on ne voit pas soi-même.
- Un projet personnel est l'endroit idéal pour apprendre sans contrainte.
Compétences mobilisées
- Programmer en Python et structurer un projet en modules.
- Concevoir une logique de jeu : états, collisions, progression.
- Publier une application sur le web (WebAssembly).
- Prendre en compte les retours d'un utilisateur.
Une question sur ce projet ?
Je serai ravi d'en parler plus en détail lors d'un échange.