[Projet perso] Mon appli de jeux basée sur l'IA générative en cours de dev
- la finalisation du cloud eco +
- la mise en place d'un front plus dynamique
- l'ajout de features de gameplay plus avancees
- les choix de design pour limiter encore plus les hallucinations
Hello ! Je profite de la pause dej pour ajouter l'étape d'après dans mon projet.
Chapitre IX: Finalisation du cloud
Je vous ai laissé hier sur les problèmes auxquelles j'ai été confronté avec mon infra bancale (spoiler: elle l'est toujours, mais au moins elle fonctionne maintenant )
En gros ce que j'esperais à ce moment là du dev c'était de pouvoir me connecter à mon front dans le cloud en passant directement les IP publics des services. J'avais déjà fait un petit POC par le passé et ça marchait très bien comme ça lorsque le front et le back et la DB étaient host sur le même server EC2.
Le problème ici c'est que c'est pas le cas parce que plusieurs services communiquent les uns avec les autres.
Alors je comprends rien à ces histoires de SSL/TLS certificates, on commence à franchement s'éloigner de mes domaines de prédilection, mais je comprends que ça me cause beaucoup de soucis et que je dois faire les choses plus proprement si je veux que mon appli fonctionne dans le cloud.
Par plus proprement, j'entends: utiliser un vrai nom de domaine avec un certificat SSL/TLS valide pour pouvoir gérer toutes les connexions en HTTPS afin que les browsers arrêtes de m'envoyer des gros messages rouges lorsque j'essaye de me connecter à l'app. Après ça tombe bien, c'est de toute façon une étape que j'aurais du réaliser à un moment ou à un autre si je voulais rendre le projet publique.
Du coup, je passe sur google domain, j'achète un DNS à 50 balles (premier vrai investissement sur le projet!) et j'essaye de comprendre comment ça marche pour connecter ça aux services AWS. Pour pas me faire chier avec les certificats, j'utilise directement le service AWS Certificates qui va me fournir ce qu'il faut et automatiquemen le configurer sur les services qui doivent l'utiliser.
Côté Front, l'uilisation du DNS se fait de manière assez smooth, et je me dis que j'arrive enfin au bout de mes peines, et que le front va pouvoir call tranquilement l'ip public de mon server EC2 pour acceder à l'API. Mais non, l'ip public étant toujours en http, ça ne marche évidemment pas.
Pour pallier à ce problème, j'ai donc du ajouter un load balancer, qui va gérer le traffic entre le front et l'api, et qui utilise un DNS secondaire (vous savez genre dev.nomdedomaine.com ou test.nomdedomaine.com, etc...). Il y a plusieurs avantage au load balancer: déjà, exit l'ip public dégueulasse de mon ec2, maintenant l'API peut être utilisée directement depuis son nom de domaine secondaire (en https); mais je peux aussi en théorie connecter plusieurs EC2 directement à mon load balancer qui se chargera d'équilibrer la charge en fonction des requêtes entrantes.
Certe c'est pas encore parfait (l'API endpoint est accessible publiquement, ce qui est pas forcement un comportement souhaitable et il faudrait que je la "cache" dans mon VPC pour que ça ne soit plus le cas), mais au moins ça marche et j'ai enfin accès à mon app sans la faire tourner localement.
Côté pure backend, j'ai également changé un peu ma logique sur le traitement des sessions: jusqu'alors, tous les historiques de session (messages, achievements, etc...) étaient gérés dans la DB postgres et lorsqu'un utilisateur lançait sa session, ses informations étaient chargées localement sur le server EC2. Cette logique, bien que fonctionnelle, n'était pas pratique et induisaient énormément de call sur la DB (en lecture et écriture) et ça j'en voulais pas.
J'ai donc profité du gros chantier de la mise en place du cloud pour ajouter un stockage AWS S3 sur lequel je sauvegarde les fichiers de sessions ainsi que les fichiers de configuration d'une game. C'est beaucoup plus pratique ainsi, et normalement moins couteux.
Pour les curieux, voici à quoi ressemble mon architecture à ce moment là du projet (et j'y ai d'ailleurs pas retouché depuis)
Le 06 février 2024 à 15:58:45 :
Super projet khey, bon courage
Merci pour le up khey !
Ce que je veux aussi montrer a travers mon experience, c'est que monter un truc viable, ca prend du temps, et qu'il y a pas mal de sujets a maitriser en dehors du coeur meme du projet.
Et qu'une bonne idee sur le papier met du temps a arriver a maturite. C'est pas parce qu'on arrive pas a un resultat satisfaisant a la premiere iteration qu'un projet doit etre mis a la poubelle.
Chapitre X: Où ça en est, aujourd'hui ?
Alors jusqu'à maintenant je vous ai détaillé toutes les étapes depuis le concept de base jusqu'à la mise en place dans le cloud du projet. Ce stade de developpement a représenté grosso modo 2 gros mois de boulot. Ce qui va suivre a pris aussi un bon mois de plus.
Aujourd'hui le POC est accessible en ligne, même si je ne suis pas encore complètement satisfait. Entre la fin du dernier chapitre et aujourd'hui, j'ai encore amélioré plusieurs aspects du projet.
En vrac:
- Mise en place d'un système de tokens, en anticipation éventuellement la futur monétisation du projet (parce que c'est bien beau d'avoir des utilisateurs, mais moi je paie à OpenAI des frais à chaque query)
- Amélioration de l'interface de discussion avec une messagerie plus dynamique et une introduction lorsque la partie se lance
- Correction de pas mal de bugs dans le front (et il y en a toujours à corriger! )
- Une UI plus dynamique, avec des images qui changent en fonction des actions du joueur, des personnages qui apparaissent et un nouveau système de notification (j'y reviendrais un peu plus loin)
- Un moteur de jeu amélioré, avec une logique mieux structurée et raffinée. J'ai repensé mon framework pour être plus flexible. Une aventure/un jeu est simplement défini par un ensemble de fichiers de configurations à remplir correctement (graph de causalité, personnages, environnement, images...) et théoriquement, un jour, n'importe qui pourrait proposer ses propres créations (on y est pas encore... ).
- Mise en place d'une page d'accueil plus complexe qui permettra à terme aux joueurs de choisir une aventure à jouer
- Toujours dans l'expérience de jeu, j'ai introduit des fonctions plus complexe. Par exemple, une gestion plus poussée du temps qui s'écoule (chaque requête du joueur faisant avancer le temps de quelques minutes), la possibilité de trigger un game over, de changer d'environnement, etc... Tout n'a pas encore été testé, ça fait partie des choses que j'espère essayer très prochainement.
- Même si beaucoup plus limité, il arrive toujours que mes IA "hallucinent". Le seul paliatif auquel j'ai pensé pour le moment est un système de notification qui se déclanche lorsqu'un utilise réalise une action importante (celles qui ont un impact sur le graph de causalité). Ca permet d'orienter le joueur qui sait quand il a vraiment réalisé une action importante, mais l'inconveniant, c'est que ça révèle un peu l'artificile derrière le graph de causalité qui est utilisé dans le game engine.
Jusqu'à maintenant j'avais mis que des screenshots, je vous propose maintenant une petite demo de gameplay qui résume l'état d'avancement. La vidéo est accélérée en x3.
https://www.youtube.com/watch?v=EeIWng_LVgg
Et voilà, vous êtes à jour. Si vous avez tout lu, félicitation, et j'espère que ceux que ça intéresse auront appris des trucs.
A partir de maintenant je posterais les avancées du projet au fur et à mesure.
Si vous passez par là, hésitez pas à faire un vivre un peu le topic, je me sens un peu seul pour le moment
Petit update du soir.
Pour me motiver et faire un truc visible, j'ai ajouté dans le front un effet sonore qui accompagne la pop-up d'achievement.
Sinon j'ai commencé un très gros chantier: celui de l'éditeur de jeu.
Jusqu'à maintenant j'éditais directement mes fichiers de configs, mais ça devient de plus en plus difficile de m'orienter dans le fichier, le nombres d'actions possibles grossissant avec le temps. Et ça devient très facile de générer des bugs parce que j'ai mal cablé deux actions consécutives entre elles.
L'éditeur est complètement indépendant de l'application de base, donc je repars d'une feuille blanche. Dans l'idée j'aimerais une interface qui me permet de facilement visualiser et manipuler le graph de causalité.
Je viens de commencer, avec l'aide de GPT, évidemment.
Un petit screen pour la route du début de cette partie du projet.
Je vais profiter de mon visualisateur de graph tout moche pour corriger certains bugs sur mon petit POC.
Ensuite si il y a des gens qui veulent essayer, je pourrais filer des liens au compte goutte (histoire de pas tuer mon server trop vite).
Le 07 février 2024 à 23:01:04 :
J'ai pas lu mais j'ai fav tout de même
Merci khey.
Si tu as la flemme de lire mais que tu veux voir un aperçu du projet à l'heure actuel, j'ai fait une petite vidéo démo qui montrent en gros, le projet tel qu'il était hier (depuis j'ai ajouté les sons )
https://www.youtube.com/watch?v=EeIWng_LVgg
Le 07 février 2024 à 23:06:15 Dabhu00 a écrit :
Le 07 février 2024 à 23:01:04 :
J'ai pas lu mais j'ai fav tout de mêmeMerci khey.
Si tu as la flemme de lire mais que tu veux voir un aperçu du projet à l'heure actuel, j'ai fait une petite vidéo démo qui montrent en gros, le projet tel qu'il était hier (depuis j'ai ajouté les sons )
https://www.youtube.com/watch?v=EeIWng_LVg
Le 07 février 2024 à 23:07:12 :
Le 07 février 2024 à 23:06:15 Dabhu00 a écrit :
Le 07 février 2024 à 23:01:04 :
J'ai pas lu mais j'ai fav tout de mêmeMerci khey.
Si tu as la flemme de lire mais que tu veux voir un aperçu du projet à l'heure actuel, j'ai fait une petite vidéo démo qui montrent en gros, le projet tel qu'il était hier (depuis j'ai ajouté les sons )
https://www.youtube.com/watch?v=EeIWng_LVg
J'avais foiré mon lien, c'est édité
https://www.youtube.com/watch?v=EeIWng_LVgg
Le 07 février 2024 à 23:09:34 Dabhu00 a écrit :
Le 07 février 2024 à 23:04:58 :
Le 05 février 2024 à 21:40:57 NewMan2024 a écrit :
Très intéressant khey, j'ai pas mal d'idées de ce genre et les compétences pour les réaliser mais je suis trop un flemmardTu veux pas devenir le prochain milliardaire français khey ?
Je suis dev, je vais immédiatement me lancer dans ce créneau
Le 07 février 2024 à 23:07:47 :
Pas lu encore mais ça m’intéresse car j’ai une idée de jeu aussi un peu du même genre. Bon courage avec un peu de chance un jour nos jeux seront en concurrence sur steam.
En vrai il y a de la place sur le marché actuellement et on est qu'au tout début de l'utilisation des LLMs.
Actuellement il y a une grosse dynamique sur la réduction de la taille des modèles, avec un peu de chance, on verra bientôt des modèles avec la perf de GPT3.5 tourner sur les PC en local.
Le 07 février 2024 à 23:12:19 :
Le 07 février 2024 à 23:07:47 :
Pas lu encore mais ça m’intéresse car j’ai une idée de jeu aussi un peu du même genre. Bon courage avec un peu de chance un jour nos jeux seront en concurrence sur steam.En vrai il y a de la place sur le marché actuellement et on est qu'au tout début de l'utilisation des LLMs.
Actuellement il y a une grosse dynamique sur la réduction de la taille des modèles, avec un peu de chance, on verra bientôt des modèles avec la perf de GPT3.5 tourner sur les PC en local.
Données du topic
- Auteur
- dabhu00
- Date de création
- 5 février 2024 à 19:17:30
- Nb. messages archivés
- 52
- Nb. messages JVC
- 47