project· maintenu
Cold Star · A small light in a very large dark
Un jeu incrémental sci-fi pour le navigateur, écrit en Rust et compilé en WebAssembly. « A small light in a very large dark, and the cost of keeping it lit. »
Petit jeu fini, en accès libre : une invitation à étendre.
Contexte
Cold Star est un jeu incrémental minimaliste qui tourne entièrement dans le navigateur. Le pitch tient en une phrase, reprise du dépôt lui-même : « A minimalist sci-fi incremental game about a small light in a very large dark, and the cost of keeping it lit. »
On se réveille sans énergie dans le noir de l’espace. On ranime un réacteur défaillant, on récupère ce qu’on peut atteindre, on rassemble un équipage, puis on bâtit les systèmes d’une station vivante. Vient ensuite un vaisseau, et le départ vers une galaxie générée procéduralement : des mondes morts et vivants, des choses qui furent jadis comme nous, et la lente découverte de ce qu’on est réellement. « It starts as a single button in the dark. It ends as a galaxy. »
Le jeu s’inscrit dans la filiation d’A Dark Room (Michael Townsend) : un récit porté par la divulgation progressive de l’interface, presque sans exposition. « The log, the research, the ruins, and the numbers carry the meaning. » L’instrument se réchauffe à mesure qu’on le ranime : sa couleur et sa chaleur sont de l’état de jeu réel, pas de la décoration.
Architecture
Rust, compilé en WebAssembly, rendu avec Dioxus. Le projet est un workspace Rust à séparation stricte, pensé pour que la logique ne puisse jamais fuir dans la vue :
sim: le moteur de jeu, pur et déterministe, sans aucune I/O niunsafe.content: les données de jeu validées (biomes, métiers, modules, origines, technologies, équilibrage), en fichiers RON.app: le frontend Dioxus, une vue en lecture seule au-dessus de l’état de la simulation.
L’invariant central est le déterminisme : advance(n) == n × advance(1). Avancer d’un tick ou de mille
produit exactement le même état. C’est ce qui rend possibles les
sauvegardes par instantané, les liens de partage encodés en base64,
et le rattrapage hors-ligne.
L’arc de jeu
Le réacteur est le cœur battant : la charge s’épuise à chaque tick, on l’alimente d’abord à la main, puis via des ingénieurs, puis en arbitrant un budget de puissance.
L’équipage et l’économie : on affecte l’équipage à des métiers qui s’enchaînent en chaînes de production : une économie en toile, pas du clic frénétique.
La station se construit par la recherche de technologies et l’assemblage de modules (laboratoires, raffineries) qui consomment de la puissance et produisent ressources ou données.
L’espace s’ouvre une fois le vaisseau bâti : seize systèmes reliés en topologie, des surfaces planétaires procédurales, des contacts extraterrestres qu’on peut héler, négocier ou affronter : combat de vaisseau avec munitions, drones de réparation, postures et coque à gérer.
Trois origines aux tonalités distinctes convergent en milieu de partie ; chacune mène à plusieurs fins qui recadrent rétrospectivement tout le parcours.
Stack
- Rust (edition 2024) : moteur de simulation, validation du contenu
- Dioxus : frontend web réactif
- WebAssembly : cible de compilation, exécution dans le navigateur
- RON : format de données pour tout le contenu de jeu
- postcard + base64 : codec de sauvegarde, liens partageables
Pourquoi c’est ici
Cold Star est dans l’atelier parce qu’il pousse à l’extrême une conviction technique : une simulation déterministe et pure paie ses dividendes partout. Le même invariant qui garantit la reproductibilité d’un tick rend triviaux la sauvegarde, le partage et le calcul hors-ligne. C’est aussi un terrain où éprouver Rust → WASM sur un produit fini, interactif et stateful, pas une API sans état, mais une boucle de jeu complète.
Le jeu est feature-complete pour l’arc qu’il dessine, du premier feu gratté jusqu’à une fin méritée. Il est volontairement ouvert à l’extension : contenu, équilibrage, rencontres, polish.







