Gulfor
- Durée
- 4 semaines
- Date
- Septembre – octobre 2026
- Jouer
- gulfor.app
- Site web
- www.gulfor.app



+14
Préambule
Gulfor est un hack & slash 3D coopératif qui se joue dans le navigateur : on ouvre un lien, on choisit un héros, et on se bat. Jusqu'à huit joueurs partagent une partie grâce à un simple lien d'invitation, sans rien installer ni créer de compte. Il se joue au clavier et à la souris sur ordinateur, et avec des commandes tactiles sur téléphone.
L'histoire se déroule dans la vallée de Valcendre, où la cendre tombe comme neige. Une expédition, ce sont trois actes de cinq vagues contre les morts-vivants, chacun conclu par un boss : Gorrhak, l'Abomination majeure, sur la Clairière, le Gardien des tombes dans le cimetière gelé de Givrecombe, puis Malgrim, l'Hiver éternel, sur son trône dans la Citadelle. Une fois vaincu, le mode sans fin s'ouvre.
La mécanique signature, c'est le changement de classe : sept classes, et l'on peut en changer à tout moment, en plein combat, en gardant son niveau. Des bénédictions rares entre les actes récompensent ceux qui en jouent bien.
Le projet est passé du premier commit à la version 1.2 en trois semaines environ, à travers près de 190 pull requests.
Liens utiles
- gulfor.app, le jeu, gratuit dans le navigateur
- www.gulfor.app, le site officiel : héros, monde, guide, actualités et kit presse, en français et en anglais
Stack technique
- TypeScript, Three.js et Vite pour le jeu, WebAudio pour le son
- WebRTC via PeerJS pour la coopération, avec une mise en relation hébergée sur un Durable Object
- Cloudflare Workers, D1 et KV pour l'API, Workers Static Assets pour les fichiers du jeu
- Astro pour le site officiel, déployé sur Vercel
- PostHog pour le suivi des erreurs et les cartes de source, un tableau de bord de télémétrie maison
- Workspaces Bun, Turborepo, Vitest, Playwright, ESLint, Stylelint
- GitHub Actions et release-please
En détail
Tout vit dans un seul monorepo, le studio : une installation, une CI, et des données partagées plutôt que recopiées.
apps/game le jeu (Three.js, Vite), servi sur gulfor.app
apps/api le Worker Cloudflare : fichiers du jeu et /api/*
apps/site le site officiel (Astro, statique), construit à partir des données du jeu
apps/studio le studio vidéo : bandes-annonces filmées image par image dans le vrai jeu
apps/atelier l'atelier 3D : les modèles des héros, faits maison
packages/media key art et captures rendus par le moteur
Le jeu n'exporte que des modules purs, pour que le Worker et le site lisent le même code que le client. Le Worker importe les schémas du jeu pour la télémétrie, le classement et les sauvegardes. Le site lit ses dictionnaires, ses classes et techniques, ses actes, son bestiaire, son codex et ses notes de patch : une classe ou un acte ajouté au jeu apparaît sur le site au build suivant.
La coopération est pair à pair, sans serveur de jeu. L'hôte simule les monstres et chaque joueur simule son propre héros, pour que déplacements et coups restent instantanés. L'hôte diffuse 15 fois par seconde des instantanés binaires compacts, quantifiés et encodés en différences par joueur, de moins de 1 100 octets par message sur un canal WebRTC non fiable : moins de 600 kbit/s en montée pour l'hôte à huit joueurs. L'hôte ne croit pas non plus les coups sur parole : chaque technique déclare ses plafonds, et un coup hors borne est refusé et compté.
Rôle
Projet solo : game design, gameplay, rendu, réseau, API, site officiel, direction artistique et identité, bandes-annonces et chaîne de publication.
Ce que j'ai construit
Le jeu
- Sept classes avec leurs propres techniques, interchangeables en plein combat, et un niveau qui suit le joueur
- Une expédition de trois actes et trois boss, une fin écrite, puis un mode sans fin
- Quatre difficultés, de Récit à Cauchemar, et le Pacte de l'Hiver : onze conditions qui durcissent la partie et rapportent davantage
- Expédition du jour, défi de la semaine, classement, 31 succès, un codex et un autel où dépenser ses braises
- Des chapitres sauvegardés : une partie solo se quitte après chaque acte et se reprend depuis le camp
- Un lobby mobile pensé pour le tactile, douze cibles au plus, en paysage comme en portrait
Direction artistique
- « Braise & Givre » : ce qui vit est chaud (braise, cuivre, bronze), ce qui est mort est froid (givre, os bleui), consigné dans une charte graphique
- Textures, icônes, effets et sons générés par le code ; personnages et décors issus de packs gratuits CC0, adaptés à la palette
- Des labs de rendu (
?lab=grade,?lab=location,?lab=char) pour régler étalonnage, lumière et matières sans lancer de partie - Un atelier 3D maison qui reconstruit les héros à partir de planches de référence générées et les exporte vers le jeu
Les outils du studio
- Un studio vidéo qui filme la bande-annonce, la présentation et les courts formats (16:9, 9:16, 1:1, 4:5) image par image dans le vrai jeu, puis les habille et les met en musique
- Une médiathèque de key arts et de captures rendus par le moteur, décrite par un manifeste testé et choisie par sujet
- Une version pour les portails de jeux web, avec leurs SDK chargés à la demande et une sauvegarde synchronisée entre appareils par un code
La plateforme
- Un Worker Cloudflare qui sert le jeu et son API : télémétrie avec un tableau de bord
/stats, classement, identifiants TURN, retours des joueurs et feuille de route publique - Les retours des joueurs envoyés depuis le jeu en issues GitHub, sans que le joueur ait besoin d'un compte
- Une préversion à chaque push sur
main, la production à chaque release, un test de fumée après chaque déploiement et des notes de patch pour les joueurs écrites dans la PR
Réalisations techniques
Huit joueurs, aucun serveur de jeu
Tout le multijoueur passe d'un navigateur à l'autre. La mise en relation passe par le Worker du jeu, avec un repli sur le service public de PeerJS, et un test de bout en bout à deux onglets joue une vraie vague sur chaque PR qui touche le réseau.
Un studio, une seule source de vérité
Le jeu, son API, son site, ses bandes-annonces et ses images partagent les mêmes données. Un équilibrage, une nouvelle classe ou un nouvel acte atteint chaque support sans être écrit deux fois.
En résumé
Gulfor est un hack & slash coopératif auquel on peut jouer tout de suite dans un navigateur, entre amis, sur ordinateur ou sur téléphone. Essayez-le sur gulfor.app.






