Aller au contenu
Solarweb

Solarweb

Développeur, créatif et joueur.

Solarweb, c'est mon pseudo de joueur depuis toujours, et c'est aussi le nom sous lequel je publie mes projets perso. Aujourd'hui, ce sont surtout des jeux en ligne, construits avec vingt ans de métier et, depuis peu, avec l'IA.

Langages
PHP, TypeScript
Moteur de jeu
Godot
IA
Claude Code, Gemini Flash
En ligne
pikto.fun
Prochainement
France 2027, Heptanor
Portrait de Solarweb

Qui suis-je ?

Je suis développeur web depuis plus de vingt ans. Tout a commencé à 14 ans, le jour où j'ai découvert Internet et la création de sites.

À l'époque, je me voyais graphiste. Puis la programmation a pris le dessus peu à peu. Aujourd'hui, ce qui me plaît toujours autant : imaginer quelque chose, le construire, le voir fonctionner rapidement et le mettre à disposition de tous sur le web.

Solarweb, c'est mon pseudo dans tous mes jeux. « Solar » pour le côté solaire, le positif. « Web », pour des raisons assez évidentes maintenant que vous avez plus d'infos.

Côté jeux, je suis un touche-à-tout. J'ai grandi avec Counter-Strike et les LAN parties que j'organisais, avec Starcraft, Warcraft, mais aussi des jeux de gestion comme Transport Tycoon et Caesar, puis World of Warcraft. Aujourd'hui, je joue surtout en ligne, j'aime varier, je ne joue pas pendant des heures au même jeu. Un bon jeu, pour moi, c'est simple : il doit être fun, son gameplay doit donner envie d'y revenir, et il doit être agréable à regarder. C'est ce que je cherche à construire.

Mes projets perso me servent aussi à explorer des technologies que je n'utilise pas forcément au travail, avec une autonomie totale m'obligeant à me former sur tous les aspects.

Les technos que j'aime

Celles que j'utilise au quotidien, au travail comme dans mes projets perso.

PHP et Symfony

Mon langage de base, celui de mon métier et mon préféré pour le web depuis le début. Comme beaucoup de développeurs PHP, j'utilise désormais beaucoup le framework Symfony pour amener une base robuste aux projets PHP.

  • PHP
  • Symfony

TypeScript et Node

Le langage de mes jeux, côté navigateur comme côté serveur. Tous les projets utilisent un serveur Node.

  • TypeScript
  • Node.js
  • Fastify
  • Hono
  • Socket.io

React, Vue et Godot

React et Tailwind pour pikto.fun, Vue 3 et Pinia pour France 2027. Vite pour construire les deux. Et je découvre Godot, un moteur de jeu open source, avec Heptanor.

  • React
  • Vue.js
  • Tailwind CSS
  • Vite
  • Godot Engine

Données et infra

PostgreSQL, MySQL, MongoDB et Redis, Docker sur tous les projets. Astro pour les sites vitrines.

  • PostgreSQL
  • MySQL
  • MongoDB
  • Redis
  • Docker
  • Astro

Déploiement continu

Mes projets sont versionnés avec Git sur GitHub. Avec GitHub Actions, chaque modification est testée et construite automatiquement, puis mise en ligne : c'est ce qu'on appelle l'intégration et le déploiement continus (CI/CD).

  • Git
  • GitHub
  • GitHub Actions

Les IA que j'utilise

L'IA m'a permis d'accélérer la production de mes créations personnelles, en autonomie. Mais j'ai une exigence : un projet fait avec l'IA ne doit pas ou peu se voir. Sans cadre, sans identité, sans décisions ou expérience spécifique, on obtient vite des projets génériques qui se ressemblent tous. C'est ce qu'on appelle le « AI slop », et c'est ce que je cherche à éviter.

  1. Le plan d'abord

    Avant la première ligne de code, je construis le plan à partir de mes idées, en échangeant avec l'IA. Elle m'en souffle parfois de très bonnes, qui permettent d'enrichir l'expérience, les performances ou la qualité finale.

  2. Mes choix techniques

    Je propose mes technologies, je demande son avis, et je choisis en connaissance de cause. L'architecture reste la mienne.

  3. Un univers à chaque projet

    Chaque projet a sa patte graphique, cadrée par une identité visuelle et des règles de design. Sans ce cadre, surtout en webdesign, on obtient vite un résultat générique.

  4. Tout est relu et testé

    Je relis les fichiers et le code produits, et je teste en profondeur. Une partie des tests est également automatisée, avec des tests unitaires et de l'intégration continue (CI). Rien ne part en ligne sans ma validation.

Je me forme surtout par la pratique, en explorant avec beaucoup de tests. Je fais de la veille sur les nouveaux modèles, et je ne suis marié à aucune IA : j'utilise la plus performante pour le résultat que je vise. Aujourd'hui, ce sont celles-ci.

Claude CodeMon binôme de code
Je lui décris ce que je veux, on construit ensemble, puis je relis, je teste et je corrige jusqu'à ce que le résultat me plaise. Chaque nouveau modèle apporte un gain de qualité, de performance et de pertinence considérable.
Gemini FlashLe plus rapide et le moins cher
Le cerveau de PiktoBot, le joueur robot de pikto.fun : il devine les dessins, dessine à son tour, il anime les parties et traduit en temps réel les discussions ! Je l'ai choisi pour sa vitesse, sa qualité et son prix : avec plus de 1 000 joueurs par jour, les trois sont importants. J'ai aussi en projet de l'utiliser dans France 2027 Simulateur pour personnaliser les cohortes, leurs messages, et le contenu global suite aux choix effectués pendant la partie.
Le générateur d'images de ChatGPTPour certains visuels
Je l'ai utilisé pour plusieurs logos et visuels. À ce jour, je trouve que c'est le plus qualitatif, mais ça évolue très vite.

Et ce que je garde pour moi ? Principalement les contenus. C'est là que je suis le plus exigeant : je suis rarement satisfait des formulations des IA, mais petit à petit j'ajoute des skills pour qu'elles essaient de formuler comme je le souhaite !

Les projets du moment

J'ai actuellement 3 projets en cours, assez différents les uns des autres. Je ne sais pas encore quand il y en aura d'autres, je me concentre déjà sur ceux-là. Voici un peu de détail sur les origines et les techniques utilisées sur chaque projet.

Jeu de dessin multijoueur

pikto, c'est un peu mon jeu de référence. Chaque fois que je voulais tester un langage ou le temps réel, je le recodais : en PHP, en Java, en Flash. Cette fois, il m'a servi de terrain de jeu pour apprendre à travailler avec l'IA.

Le résultat est un jeu de dessin jouable au doigt sur mobile, sans créer de compte. Il est aujourd'hui sur CrazyGames, où plus de 1 000 personnes y jouent chaque jour. La version 2 est partie de plus de 4 000 retours de joueurs.

joueurs chaque jour
1 000+
langues
9
retours de joueurs à l'origine de la v2
4 000
Jouer sur pikto.fun

En ligne depuis avril 2026, version 2 en septembre

PiktoBot dessine, à moi de deviner. Ici, des petits pois.L'accueil sur mobile.
PiktoBot dessine, à moi de deviner. Ici, des petits pois.

Fonctionnalités

Le principe est connu de tous : un joueur dessine, les autres devinent.

  • Partie rapide, parties publiques classées par langue, ou salon privé rejoint avec un code ou un lien : aucun compte à créer.
  • Des parties sur mesure : de 1 à 10 manches, des tours de 30 secondes à 3 minutes, jusqu'à 30 joueurs en salon privé, quatre niveaux de mots dont un pour les enfants, et 23 catégories.
  • Quatre modes de jeu (classique, thème imposé, absurde, sprint) et des options à combiner, comme la couleur imposée ou le mode aveugle.
  • Des outils de dessin pensés pour la souris comme pour le doigt sur mobile : crayon, gomme, seau, pipette, formes et palette de couleurs.
  • Des indices qui se dévoilent au fil du tour, et des fautes de frappe tolérées dans les réponses.
  • PiktoBot, un joueur robot à ajouter dans son salon, avec trois niveaux : il devine les dessins, dessine à son tour et participe au chat avec PiktoModo.
  • La partie internationale, où chaque message du chat est traduit en temps réel dans la langue des autres joueurs.
  • Une galerie publique où l'on vote pour les dessins (joli, drôle, incompréhensible…), et l'export d'un dessin en GIF animé.
  • Des avatars personnalisables, un podium en fin de partie, et neuf langues : français, anglais, espagnol, italien, allemand, portugais, indonésien, turc et vietnamien.
  • Jouable sur pikto.fun, mais aussi sur CrazyGames, itch.io et GameDistribution.

Côté technique

  • Le temps réel. Chaque trait est envoyé aux autres joueurs au moment où il est tracé, par une connexion WebSocket ouverte en permanence. Le serveur Node utilise Fastify, choisi pour ses performances, et Socket.io pour gérer les salons.Node.js, Fastify, Socket.io
  • L'interface. Une application React construite avec Vite et stylée avec Tailwind, qui s'adapte du téléphone à l'ordinateur. Chaque langue a ses propres adresses (/en, /it…), pour être bien référencée dans chaque pays.React, Tailwind CSS, Vite, TypeScript, i18next
  • Les données. Les parties en cours vivent dans Redis, une base en mémoire très rapide, adaptée à des données qui changent sans arrêt et ne durent que le temps d'une partie. Ce qui doit rester (dessins de la galerie, votes, statistiques, modération) est stocké dans MongoDB.Redis, MongoDB
  • L'équité. Le mot à deviner n'est envoyé qu'au dessinateur, jamais aux autres navigateurs, et c'est le serveur qui valide chaque réponse. Chaque joueur reçoit une identité protégée par un jeton secret, et le débit des messages est limité.
  • L'IA. Toutes les fonctions d'IA passent par Gemini Flash : PiktoBot devine à partir d'une capture du dessin et de l'indice, ses propres dessins sont générés à l'avance pour ne jamais faire attendre, et la traduction du chat a un budget quotidien. Le coût de chaque fonction est suivi dans l'administration.Gemini Flash
  • La modération. Les signalements sont jugés par l'IA à partir du dessin, des derniers messages et du pseudo, en complément d'un filtre d'insultes, d'un système de réputation et de sanctions progressives.
  • Les plateformes. Le même jeu est empaqueté pour CrazyGames, où le compte du joueur est vérifié, ainsi que pour itch.io et GameDistribution.
  • La qualité et la mise en ligne. Avant chaque déploiement, GitHub Actions vérifie le code, lance plus de 400 tests et rejoue des scénarios de parties sur un vrai serveur. Le jeu est ensuite mis à jour sur le serveur dans des conteneurs Docker, après une annonce de maintenance aux joueurs.GitHub Actions, Vitest, Docker

Fabriqué avec React, Tailwind, Fastify, Socket.io, Redis, MongoDB, Docker, Gemini Flash, Claude Code

Jeu de gestion politique

L'idée vient de ma femme. Avec la présidentielle qui approche, elle voulait pouvoir tester des scénarios et voir ce qu'ils donneraient. J'en ai fait un jeu.

Le sujet est complexe, alors je cherche le bon équilibre : un vrai jeu, qu'on a envie de relancer, avec des chiffres aussi proches que possible de la réalité. L'opinion réagit tout de suite, alors que les effets d'une réforme mettent des années à se faire sentir, parfois après la fin du mandat.

Les données sont sérieuses, l'habillage légèrement cartoon, et aucun personnage ni parti réel n'y apparaît.

décisions possibles
165
crises à gérer
79
députés à convaincre
577

Prochainement

En développement, sortie prévue en octobre 2026

Un mois de mandat : une crise à arbitrer, les engagements de campagne à tenir.Le même mois, sur mobile.
Un mois de mandat : une crise à arbitrer, les engagements de campagne à tenir.

Ces captures viennent du jeu en cours de développement. L'interface et le contenu peuvent encore évoluer d'ici la sortie.

Fonctionnalités

Élu président en 2027, on gouverne la France pendant soixante mois. L'opinion réagit le mois suivant, l'économie dans trois ans.

  • Créer son candidat : sa famille politique parmi six, ses positions sur cinq grands axes, ses engagements de campagne et son visage.
  • 165 décisions possibles, chacune avec son coût et ses délais, à faire voter par l'Assemblée.
  • Une Assemblée de 577 députés en sept groupes, avec ses outils : 49.3, Conseil constitutionnel, motion de censure, dissolution.
  • Le choix du Premier ministre parmi sept profils, qui change la conduite du mandat.
  • 79 événements et crises à gérer en cours de route.
  • Neuf catégories d'électeurs qui jugent chacune sur ce qui la touche.
  • Un bilan sur dix indicateurs (dette, chômage, pouvoir d'achat, CO₂…), comparé au même pays sans aucune décision, et un classement public.

Côté technique

  • Un moteur rejouable. Toute la simulation tient dans un moteur pur et déterministe : une partie, c'est une graine et une liste de décisions. Rejouée, elle donne exactement les mêmes chiffres, dans le navigateur comme sur le serveur.TypeScript
  • Le serveur arbitre. C'est le serveur qui fait avancer la partie et qui rejoue chaque mandat pour vérifier un score. Il ne stocke que les décisions, et les événements à venir ne quittent jamais le serveur : impossible de tricher ou de connaître l'avenir.Node.js, Hono
  • L'interface. Une application Vue 3 avec Pinia pour l'état de la partie, construite avec Vite.Vue 3, Pinia, Vite
  • Les données et les comptes. Les parties et les classements sont stockés dans PostgreSQL. La connexion se fait sans mot de passe, par un lien envoyé par e-mail, valable quinze minutes et une seule fois.PostgreSQL
  • Des chiffres réels. Le pays de départ s'appuie sur les données de l'Insee et de la Cour des comptes, et le bilan compare chaque mandat au même pays laissé sans décision.
  • La qualité. Près de 380 tests couvrent le moteur, le serveur et l'interface, dont un qui vérifie que le moteur n'utilise jamais de hasard non maîtrisé. L'ensemble tourne dans des conteneurs Docker.Vitest, Docker
  • L'IA, en projet. J'ai en projet d'utiliser Gemini Flash pour personnaliser les cohortes d'électeurs, leurs messages et le contenu du jeu en fonction des choix faits pendant la partie.Gemini Flash

Fabriqué avec Vue 3, Pinia, Hono, PostgreSQL, Docker, Vitest, Claude Code

Jeu de stratégie et d'alchimie

Heptanor vient de ma passion pour les jeux de stratégie et de gestion. Ça fait des années que je réfléchis à un concept d'éléments et de fusions, et j'ai enfin pris le temps de le construire.

L'idée centrale, c'est le plateau. Il y a peu de sorts, mais tout se joue dans leur placement, dans leurs voisins et dans ce que l'adversaire a posé en face. C'est ce qui fait qu'une partie ne ressemble jamais à la précédente.

J'ai choisi Godot pour la suite : une fois terminé, je veux le diffuser largement, sur Steam, mobile, PC et Mac. Il est encore en développement : je ne suis pas encore satisfait du gameplay.

sorts à combiner
35
niveaux en solo
100
rangs en parties classées
7

Prochainement

Toujours en développement

Le plateau : mes sorts à gauche, ceux de l'adversaire à droite, le marché en bas.
Le plateau : mes sorts à gauche, ceux de l'adversaire à droite, le marché en bas.

Ces captures viennent du jeu en cours de développement. L'interface et le contenu peuvent encore évoluer d'ici la sortie.

Fonctionnalités

Sept éléments, trente-cinq sorts et un plateau de dix cases. On achète ses sorts, on les place, on les fusionne, puis les deux plateaux s'affrontent. Solo, duel contre l'ordinateur ou parties classées.

  • L'Ascension solo : 100 niveaux, du plus simple au plus retors.
  • L'Ascension du jour : cinq nouveaux plateaux chaque jour, avec une seule vie.
  • Des duels contre l'ordinateur, en trois niveaux de difficulté.
  • Le multijoueur, en parties libres ou classées, avec sept rangs de Souffleur à Heptanor.
  • Des quêtes du jour qui rapportent des oboles, à dépenser dans une boutique de bannières.
  • Le jeu en français et en anglais.

Côté technique

  • Godot. Le jeu est développé avec Godot 4 en GDScript. Le même code sert à l'affichage, au solveur et aux tests, et Godot permet d'exporter le jeu pour le web, Windows et Android.Godot 4, GDScript
  • Des règles identiques partout. Le moteur de règles calcule uniquement en nombres entiers, sans hasard ni fonction mathématique approximative : le résultat d'une manche est le même au bit près, quelle que soit la machine.
  • Le serveur arbitre. Le serveur Node ne réécrit aucune règle : pour juger une manche, il la rejoue avec le vrai moteur Godot. Un joueur qui modifierait son jeu ne peut donc rien imposer.Node.js, WebSocket
  • Le solveur. Un solveur vérifie que chacun des 100 niveaux a au moins une solution, calibre chaque soir les plateaux de l'Ascension du jour, et sert d'adversaire en duel.
  • Le classement et les comptes. Les parties classées reposent sur Glicko-2, le système de classement utilisé par de nombreux sites d'échecs. Les comptes sont stockés dans SQLite et se récupèrent par un lien envoyé par e-mail ou un code de secours.SQLite, Glicko-2
  • La mise en ligne. Un push sur GitHub prévient le serveur, qui exporte lui-même la version web du jeu avec Godot.Plesk
  • Les illustrations. Elles sont générées par IA, puis retravaillées par des scripts : recadrage, transparence, teinte.

Fabriqué avec Godot 4, GDScript, Node.js, SQLite, Claude Code

Me contacter

Une question sur un de mes projets, une idée à partager, une envie de collaborer, écrivez-moi !

contact [at] solarweb.fr