Odyssea
« Ton empire. Tes décisions. Ta galaxie. »
Un jeu de stratégie spatiale persistant, qui se joue dans le navigateur. On fonde un empire avec l’un des quatre peuples, on développe ses colonies et ses flottes, et on partage la galaxie avec les autres joueurs, alliés ou rivaux.
Le monde continue d’avancer quand on n’est pas là. Le jeu est en bêta ouverte, sans inscription pour commencer.



Défis techniques
- 01
Un monde qui avance sans les joueurs
Chantiers, recherches, vols et batailles doivent aboutir à l'heure, même si personne ne regarde. La première version reposait sur une seule horloge pour tout le jeu : une panne a gelé d'un coup tout un système. Aujourd'hui, chaque domaine a sa propre horloge (des Durable Objects Cloudflare), réarmée à chaque écriture et à chaque lecture. La base de données reste la seule source de vérité, et un passage chaque minute rattrape ce qui aurait pris du retard.
- 02
Tenir la charge d'un lancement
L'objectif : 1 000 joueurs connectés, avec des réponses sous la seconde. Au premier test de charge, la base saturait dès deux arrivées par seconde. Des bots qui jouent comme de vrais clients ont guidé dix séries de corrections : requêtes SQL allégées, catalogue gardé en mémoire, galaxie mise en cache, 51 requêtes par arrivée au lieu de 73. Une fois les joueurs installés, le jeu en tient 1 000 sans erreur.
- 03
Une galaxie de 30 000 systèmes, toujours la même
Même graine, même univers, mêmes noms : c'est une règle de production. Les premiers essais donnaient le même système dans chaque univers, ou des bras spiraux qui changeaient de forme avec la taille de la galaxie. Le générateur actuel n'utilise qu'un aléatoire à graine, avec des paramètres indépendants de l'échelle, et ne tourne qu'une fois, au « big bang » du monde.
- 04
Une seule carte pour deux moteurs de rendu
Le téléphone dessine les étoiles avec Skia, l'ordinateur avec WebGL. Pour que les deux ne divergent jamais, il n'y a qu'une source de shader, traduite automatiquement de SkSL en GLSL. Les astres sont précalculés une seule fois en 35 vignettes, puis affichés comme des sprites, une instance par étoile.
- Technologies
- TypeScript
- React 19
- WebGL
- Cloudflare Workers
- Durable Objects
- D1 · SQLite
- Hono
- React Native · Expo
- Skia
- k6
- Fait par
- Thomas Ailleaume