Aller au contenu
Solarweb Studios

Solarweb Studios

Des jeux en ligne et des projets web, imaginés et développés par Solarweb.

Solarweb, c'est mon pseudo de joueur depuis toujours, et Solarweb Studios, c'est le nom sous lequel je publie mes créations. 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, Give me my money back!, manifsendirect.fr
Prochainement
France 2027
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.

Les projets de Solarweb Studios 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 pour Solarweb Studios.

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, Phaser et Godot

React et Tailwind pour pikto.fun, Vue 3 et Pinia pour France 2027. Phaser pour Give me my money back!, et Vite pour construire le tout. Je découvre aussi Godot, un moteur de jeu open source.

  • 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 des jeux et projets de Solarweb Studios, 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 4 projets en cours chez Solarweb Studios, 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 (nouvel onglet)

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

Carte des mobilisations en direct

Le jour d'une mobilisation, les informations sont éparpillées entre les directs des médias, les articles de la presse régionale et les annonces des préfectures. Je voulais une carte simple, lisible sur un téléphone, qui montre ce qui se passe maintenant et d'où vient chaque information.

Le site a été mis en ligne pour la journée du 17 octobre 2026, contre la hausse des carburants et la vie chère. Il fonctionne désormais tous les jours, qu'il y ait une grande mobilisation ou non.

Il se veut neutre : il informe sur le lieu et l'heure, sans prendre parti, et ne donne un chiffre de participation que lorsqu'une source le fournit.

médias et sources officielles suivis
60+
pages ville
57
entre deux mises à jour
5 min
Ouvrir manifsendirect.fr (nouvel onglet)

En ligne depuis le 17 octobre 2026

La carte du 18 octobre : les événements en cours, classés par intensité, et les actions annoncées en bleu.L'accueil sur mobile, la carte en haut et la liste en dessous.
La carte du 18 octobre : les événements en cours, classés par intensité, et les actions annoncées en bleu.

Fonctionnalités

Une carte de France des manifestations, blocages, grèves et rassemblements du jour, mise à jour toutes les 5 minutes environ, où chaque événement renvoie à sa source.

  • Un niveau de couleur par ville et par département, du rouge (incident, ou blocage d'un dépôt, d'une raffinerie ou d'une autoroute) au jaune, et les actions annoncées en bleu.
  • Pour chaque événement : le lieu, l'heure de début, l'heure de la dernière information, un court résumé et les liens vers les articles dont il vient.
  • Un niveau de fiabilité affiché sur chaque événement : confirmé par plusieurs médias, source officielle ou source unique. Les sources militantes sont signalées comme telles.
  • Les événements terminés ou sans nouvelles s'effacent au bout de quelques heures, pour que la carte montre la situation du moment.
  • Les actions annoncées pour les deux semaines à venir, regroupées par jour.
  • Une recherche par ville, des filtres par type (cortèges, blocages, grèves, rassemblements, incidents, annonces), et une page pour chacune des grandes villes.
  • La métropole et l'outre-mer, un thème clair et un thème sombre.
  • Pensé d'abord pour le téléphone, et installable comme une application.
  • Une liste textuelle équivalente à la carte, et des types d'événements qui se distinguent par une forme, pas seulement par la couleur.

Côté technique

  • Une page légère. La page est écrite en HTML, CSS et JavaScript, sans framework, pour s'afficher vite sur un téléphone, même avec une connexion moyenne. Elle se met à jour toute seule, sans avoir à la recharger.HTML, CSS, JavaScript
  • La carte. MapLibre affiche une carte vectorielle à partir des données libres d'OpenStreetMap, servies par OpenFreeMap. À l'échelle de la France, les événements proches sont regroupés, puis se séparent quand on zoome sur une ville.MapLibre GL, OpenStreetMap, OpenFreeMap
  • Le serveur. Côté serveur, tout est en PHP, sur un hébergement mutualisé classique, sans base de données. C'est simple à maintenir et très économique à faire tourner.PHP 8
  • L'IA. Claude Haiku aide à analyser l'actualité. Je l'ai choisi pour sa rapidité et son prix, et chaque appel est suivi dans l'administration, avec un budget quotidien à ne pas dépasser.Claude Haiku
  • Le référencement. La page d'accueil, les pages des villes et le plan du site sont régénérés à chaque mise à jour, avec les événements du jour, pour être bien compris par les moteurs de recherche.JSON-LD, sitemap
  • La qualité. Les parties importantes du serveur sont couvertes par des tests automatisés, et des contrôles sont faits avant chaque mise en ligne.

Fabriqué avec PHP 8, JavaScript, MapLibre GL, OpenStreetMap, Claude Haiku, Claude Code

Jeu d'arcade et de rendu de monnaie

Les jeux de rendu de monnaie existants sont surtout éducatifs et pensés pour les enfants. Je voulais l'inverse : un jeu d'arcade et de réflexe, drôle avant d'être un exercice de calcul, pour des parties courtes de quelques minutes.

Tout repose sur l'humour des clients, qui s'impatientent puis explosent de colère, et sur une petite couche de réflexion : rendre juste, mais aussi avec le moins de pièces possible.

journées en carrière
80
personnages
38
langues
25
Télécharger sur Google Play (nouvel onglet)

Disponible sur Android depuis le 16 octobre 2026

À la paillote de la plage : le ticket à gauche, la caisse en bas, le client qui attend.L'accueil sur mobile, en portrait.
À la paillote de la plage : le ticket à gauche, la caisse en bas, le client qui attend.

Fonctionnalités

On tient la caisse d'une boutique et on rend la monnaie juste, vite et avec le moins de pièces possible, face à des clients de plus en plus impatients.

  • Une carrière de 80 journées dans 8 boutiques (épicerie, food truck, paillote de la plage, fête foraine, échoppe du sorcier, port pirate, âge de pierre, supérette orbitale), avec jusqu'à trois étoiles par journée.
  • Un mode Rush sans fin, où la partie s'arrête à la troisième erreur, et un mode Zen, sans chrono.
  • Quatre niveaux, d'Apprenti à Expert, où le total n'est plus affiché sur le ticket.
  • 38 personnages avec leurs expressions et leurs répliques, dont des clients spéciaux comme l'escroc au faux billet.
  • Une caisse au stock limité, qui se remplit avec les paiements des clients, une monnaie fictive et des faux billets à repérer.
  • Des pourboires à dépenser dans dix bonus (calculette, ralenti, stagiaire…) et dans des améliorations permanentes de la caisse, une prime du jour et des trophées.
  • Un tutoriel jouable au premier lancement, des parties courtes pensées pour une petite pause, et un jeu qui se joue aussi hors connexion.
  • Le jeu en 25 langues, y compris l'arabe, écrit de droite à gauche.

Côté technique

  • Phaser 4. Le jeu est développé avec Phaser 4 en TypeScript et tourne entièrement sur l'appareil du joueur, sans serveur de jeu. Il s'adapte au format paysage comme au portrait sur mobile.Phaser 4, TypeScript, Vite
  • L'application Android. Le même code est empaqueté en application Android avec Capacitor. Les publicités passent par AdMob, et l'application peut demander une mise à jour quand une nouvelle version est indispensable.Capacitor, AdMob
  • Des calculs exacts. Tous les montants sont manipulés en centimes entiers, pour éviter les erreurs d'arrondi. Le jeu calcule aussi le rendu optimal de chaque client en tenant compte du stock réel de la caisse.
  • Les plateformes. Tout ce qui dépend de la plateforme (compte joueur, sauvegarde, publicités, langue) passe par une seule couche dédiée. Le même jeu peut ainsi sortir sur Android, sur un portail comme CrazyGames ou sur son propre site sans toucher au reste.
  • Les statistiques. Une petite API en PHP 8.4 avec SQLite reçoit des statistiques anonymes, sans identifiant ni adresse IP stockés, envoyées par lots pour ne jamais ralentir la partie. Un tableau de bord permet de suivre l'audience, la difficulté et l'économie du jeu.PHP 8.4, SQLite, Chart.js
  • Les visuels. Les personnages, produits et décors ont été générés par IA à partir d'une planche de référence, puis découpés et assemblés par des scripts Python. Les traductions dans les 25 langues ont aussi été faites avec l'IA.Python, Pillow
  • La qualité. La logique du jeu est couverte par des tests Vitest, et l'API par sa propre suite de tests.Vitest

Fabriqué avec Phaser 4, TypeScript, Vite, Capacitor, AdMob, PHP 8.4, SQLite, Vitest, 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 plus ou moins tard selon les décisions.

  • 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, ses délais et ses impacts, à 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 déterministe : une partie rejouée 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

Me contacter

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

contact [at] solarweb.fr