Logo Teamwork

Build Games Challenge: Une bonne raison pour tester la puissance d'amazon Q

Published on
Authors
Version audio
Chargement...
Build Games Challenge: Créons un jeu vidéo avec l'aide d'Amazon
Q


J'ai découvert hier ce challenge et, étant friand de rétro gaming, j'ai pensé que cela serait un bon support pour aborder également l'utilisation d'Amazon Q Developer CLI.

J'ai décidé de faire un hommage à un jeu qui m'a frustré quand j'étais en primaire, R-Type 2 sur Nintendo Super NES ( Description ).

Dépôt GIT du jeu

Vous trouverez ici tous les fichiers du jeu, ainsi que toutes les étapes intermédiaires depuis la création : https://github.com/sylvainbruas/r-type-like

Mécanique du jeu

Le jeu R-Type 2 était très simple et efficace :

  • 5 niveaux à traverser, chacun se terminant par un boss.
  • Des environnements 8 bits très travaillés
  • Des groupes d'ennemis à détruire
  • Des bonus, de puissance ou des vies supplémentaires (très utile !)

C'était un jeu très exigeant et punitif. Même si 5 niveaux donnent l'impression d'un jeu très court, la difficulté est élevée, et passer le 2e niveau vous demandera déjà une bonne connaissance des patterns des ennemis pour vous en sortir.

Ma version sera bien plus simple, le but étant de montrer que l'on peut aller très vite et très loin juste en fournissant les bonnes informations à Amazon Q.

Setup de mon environnement

J'ai commencé par installer Amazon Q Developer en suivant la documentation, puis je me suis connecté avec mon builder ID.

Ce n'est pas le premier projet que je fais avec cet outil, j'ai donc créé un prompt que j'exécute pour chaque nouveau projet :

Initialise le projet avec un README en markdown, ajoute un suivi avec Git, crée un fichier questions.txt qui listera les demandes dans l'ordre et contiendra également une synthèse des actions pour y répondre. Après chaque action, crée un ou plusieurs commits Git pour regrouper les modifications qui ont du sens ensemble, avec un message de commit explicite.

J'ai ajouté les points suivants à mon prompt :

Tous les messages doivent être en français. Ajoute également des tests pour chaque nouvelle fonctionnalité que tu mets en place. Initialise-moi un README pour ce projet et pour les sous-répertoires où cela te semble nécessaire, et mets-le à jour régulièrement. Enfin, après avoir fait une correction, lance les tests pour vérifier que tout est en ordre.

Maintenant que j'ai partagé mes attentes pour l'organisation du projet, donnons le sujet à Amazon Q :

Créer un jeu inspiré de R-TYPE2 sur Super Nintendo. Ce jeu doit être jouable sur le navigateur. Laisser le choix de la bibliothèque la plus efficace pour faire cela. Il y aura 5 niveaux, chacun se terminant par un boss, et un système de points.

Je me retrouve donc avec la structure de projet suivante : Structure du projet

Bonus ! Amazon Q a eu la gentillesse de me faire des scripts de lancement du jeu. J'ai des explications très claires dans le README, et toutes les informations pour faire le setup du projet dans SETUP.md.

Je n'aurais pas fait une documentation si complète, et la rédiger m'aurait mis de mauvaise humeur car ce n'est pas la partie que je préfère. Avec cet outil, je délègue ces tâches, et il ne me reste plus qu'à vérifier que le rendu est au niveau de mes attentes.


Si le résultat ne me convient pas, je prends du recul, et je me pose les questions suivantes : - Suis-je vraiment clair sur ma demande ? - Est-ce qu'un humain aurait pu comprendre ma demande de cette manière ?

Dans 90% des cas, effectivement j'ai fait un prompt trop vague et rapide. Je propose donc un second prompt pour corriger la demande, soit en la précisant, soit en la découpant en plusieurs parties.

Nouvelle Compétence Débloquée : Communication avancée !

En travaillant de cette manière, j'ai pu également améliorer la communication avec mes collègues. Je prends un peu plus de temps pour travailler mes formulations, le plan de mon discours, et j'ai ainsi amélioré la compréhension de mes demandes et réduit le nombre d'allers-retours.

Délégation du codage : premier pas

Dans ce projet, j'ai considéré Amazon Q comme un stagiaire. Il a de bonnes connaissances techniques et méthodologiques, mais parfois il se perd et ne prend pas de recul. C'est à moi de lui donner les bonnes spécifications, suffisamment claires, tout en laissant également de la place pour qu'il exprime son talent et qu'il apporte sa propre vision.

À la fin du setup, j'obtiens un résultat visuel basique, une mécanique de jeu très limitée. On est loin de R-Type 2 ! Mais vu le prompt très sommaire, c'est un début encourageant.

Je recommande de diviser le projet en petits composants les plus unitaires possible, ainsi Amazon Q aura des besoins précis et nous éviterons les hallucinations ou les fonctionnalités délirantes. Il ne restera plus qu'à expliquer comment faire interagir ces composants pour avoir l'application finale.

Exemple :

Ajouter un système de vies pour le joueur (3 vies au début, perte d'une vie quand touché)

Nous ajoutons ainsi de manière incrémentale de nouvelles fonctionnalités, qui sont testées et validées au fil de l'avancement.

Nouvelle Compétence Débloquée : Gestion de projet agile !

Architecture

Après m'être concentré sur la partie développement, je me suis posé la question de l'hébergement.

Je reste dans mon rôle Product Owner, je partage donc le besoin avec Amazon Q :

Créer un répertoire CloudFormation et créer des templates pour déployer ce jeu sur AWS. Utiliser de préférence CloudFront avec S3 et créer un script de build pour optimiser les assets avant de les mettre sur le cloud.

Amazon Q propose une solution au-delà de ce qui est demandé, en apportant de bonnes pratiques. Il permet de déployer le projet dans 3 environnements différents.

Déploiement pour plusieurs environnements

Il ne reste plus qu'à relire le fichier, en utilisant nos propres compétences, pour vérifier que cette implémentation est bonne. Un vrai gain de temps quand on sait l'énergie que la lecture de la documentation CloudFormation peut demander.


Si le contenu semble correct, nous pouvons tester le code dans un environnement de sandbox.

Nouvelle Compétence Débloquée : Génération d'Infrastructure as Code à la vitesse de la lumière !

Pour clore cette partie, ajoutons un peu de documentation, des tests et des diagrammes d'architecture.

Créer des schémas d'architecture logicielle du jeu en format draw.io.

Flux de mise en production
Infrastructure AWS pour l'hébergement

Graphisme

Depuis mai 2025, il est possible d'utiliser Claude 4 dans Amazon Q.

Cela nous permet de créer des images pour le jeu mais aussi des diagrammes d'architecture. Il est par exemple très pratique de demander une architecture en format draw.io, qui est facilement modifiable et où nous retrouvons les icônes AWS. Je n'ai pas besoin d'utiliser un autre outil qu'Amazon Q pour mon jeu. Si le résultat n'était pas suffisant, j'aurais pu étendre les fonctionnalités d'Amazon Q avec des MCPs (Model Context Protocol). Ainsi, Amazon Q aurait pu router ma demande vers un outil plus performant pour y répondre.

Les résultats sont suffisants pour ce projet :

Les images du jeu

Debugging

Une fonctionnalité d'Amazon Q très utile est l'aide à la recherche d'erreur. Comme l'outil a accès au contexte, il arrive très rapidement à trouver la source des erreurs, et les explique simplement avant de les corriger.

Astuce : demander à Amazon Q de relancer les tests à chaque fois qu'il corrige les erreurs. Ainsi il vérifie que tout est correct avant de vous rendre la main. Il arrive que la correction ne soit que partiellement bonne, voire incorrecte. Dans ce cas, je regarde le code qu'il a modifié (car sur ce point il est impressionnant) et je lui donne une proposition différente de correction. Il va prendre en compte la proposition et souvent proposer une correction améliorée en prenant en compte le contexte de l'application.

Documentation et tests

Je dois avouer que c'est un grand plus pour moi.

Amazon Q va me préparer un ensemble de tests intéressants, des rapports précis et je peux lui demander de rajouter d'autres tests si nécessaire.

Dans notre cas, je suis resté assez simple :

Écris-moi des tests pour valider que les fonctions du jeu sont correctes. Je dois avoir un rapport complet, avec un résumé des résultats en début, puis le détail des tests et des erreurs trouvées. Si je te demande de corriger une erreur, ajoute un nouveau test pour s'assurer que celle-ci ne reviendra plus.

Amazon Q me fournit un rapport sous ce format : Amazon Q test report pour jeu R-Type

Ce que j'ai appris

Nous sommes encore loin du résultat final, je vais continuer à faire évoluer ce projet. Nous avons des bases solides :

  • une documentation à jour et accessible
  • des tests sur plusieurs niveaux
  • des scripts pour lancer l'application, la compiler et la déployer
  • des templates pour créer de l'infrastructure, avec une gestion de plusieurs environnements.

Ce résultat n'a demandé que peu d'efforts et de temps. Je me suis concentré sur les besoins, j'ai fourni à Amazon Q des prompts très simples, en lui laissant le temps de coder le tout.


Ce développement s'est donc fait juste avant de me faire un café, entre deux mails ou réunions. Cet assistant m'a permis d'être plus efficace, car j'ai pu faire cette preuve de concept tout en travaillant, entre autres sur la rédaction de ce post.

Même avec une interaction limitée sur ce projet j'ai appris :

  • savoir déléguer, organiser mes propos pour être bien compris
  • me concentrer sur CE QUE JE VEUX et non sur le COMMENT LE FAIRE
  • diviser les demandes en unités simples que l'on fera ensuite travailler ensemble
  • avoir une démarche agile, basée sur les tests, avec des itérations courtes et rapides

J'ai été surpris par les performances de cet assistant et particulièrement par :

  • la mise en place de bonnes pratiques et les propositions de mise en place d'améliorations de la sécurité ou des performances.
  • la prise en considération du contexte, le fait de ne pas simplement faire ce que je demande au niveau du code, mais aussi de mettre à jour les tests et la documentation de son propre chef.