Gulfor

Durée
4 semaines
Date
Septembre – octobre 2026
La page d'accueil de gulfor.app : la cendre tombe comme neige, jouer gratuitement dans le navigateur
La page d'accueil de gulfor.app : la cendre tombe comme neige, jouer gratuitement dans le navigateur
Key art de Gulfor : un Porte-Braise, hache levée dans la braise, face à Malgrim pris dans le givre, l'Âtre captif entre eux
Key art de Gulfor : un Porte-Braise, hache levée dans la braise, face à Malgrim pris dans le givre, l'Âtre captif entre eux
Mêlée sur la Clairière : sept héros frappent goules, squelettes et une abomination dans une gerbe de braise et de givre
Mêlée sur la Clairière : sept héros frappent goules, squelettes et une abomination dans une gerbe de braise et de givre
+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.

Projets similaires

La page d'accueil de s3nd.sh : envoyer n'importe quoi avec un code, affiché sur un tableau à palettes
La page d'accueil de s3nd.sh sur mobile
s3nd
s3nd
Durée
4 semaines
Date
Août – septembre 2026
Page d'accueil d'onmangekoi
Page d'accueil d'onmangekoi sur mobile
onmangekoi
onmangekoi
Durée
4 mois
Date
Avril 2026
Page d'accueil de tripbrain.fr avec la démo live intégrée dans un mockup de téléphone
Le roadbook TripBrain sur mobile
TripBrain
TripBrain
Durée
6 mois
Date
Mars 2026
Logo

© All rights reserved by Abderrahmane Mouzoune