En cours
Jeu vidéoDev web
2026 —

WindlessLand

TypeScript · Phaser · Next.js

Un donjon qui ne se répète jamais — c'est le principe de ce roguelite développé avec Phaser et Next.js. Chaque run génère un nouveau graphe de salles via un algorithme seedé, garantissant une expérience unique mais reproductible si on partage sa graine.

Roguelite procédural

WindlessLand

Un dédale nostalgique et flou — un univers où l'on se sent perdu, porté par le mystère.

▶ Jouer maintenant

Conception et développement du projet — architecture technique, logique de jeu, écriture de l'univers. Les assets visuels et le game design (patterns de boss, balance buff/debuff, sprites) sont encore en cours de réalisation. Un projet avant tout personnel, né de l'envie de créer quelque chose qui me ressemble.

Le gameplay s'inspire de Cult of the Lamb et The Binding of Isaac — progression en runs, salles enchaînées, boss en fin de niveau. J'ai réfléchi aux mécaniques en partant de ce qui me plaît dans ces jeux et en construisant quelque chose qui me parle. J'ai écrit une histoire et construit un univers pour ce jeu — pas pour faire passer un message, juste pour avoir un monde à illustrer et à raconter. Les assets visuels sont en cours — tout en pixel art, fait à la main. L'ambiance recherchée est celle d'un dédale nostalgique et flou — un univers où l'on se sent perdu, porté par le mystère plutôt que par l'urgence.

C'est mon premier projet à cette échelle d'ambition algorithmique. Concevoir un système procédural était un tout autre niveau. La génération devait être à la fois aléatoire et structurellement cohérente — un donjon où toutes les salles sont accessibles, avec une difficulté qui progresse logiquement. La solution : un spanning tree aléatoire pour garantir la connexité, des arêtes bonus pour créer des cycles, le tout piloté par un RNG seedé (Mulberry32) pour rendre chaque run reproductible.

Qu'un bon générateur procédural ne fait pas que du hasard — il pose des contraintes structurelles d'abord afin d'avoir un monde organique, et laisse l'aléatoire opérer dans ce cadre afin de rendre chaque run unique. Se lancer dans un concept qu'on ne maîtrise pas encore est souvent le meilleur moyen de vraiment l'apprendre.