← Accueil

S-Nav

TypeScript · Portage · Blitz3D

Essayer Voir le code

Générateur de maps déterministe et bit-exact pour SCP: Containment Breach, porté du code source Blitz3D du jeu vers TypeScript. Entrez une seed, obtenez exactement l’installation que le jeu génèrerait : map principale, tunnels de maintenance, forêt de SCP-860.

Tout tourne dans le navigateur : aucune donnée n’est envoyée au serveur.

La finissabilité de chaque seed est vérifiée automatiquement, en Trace comme en Search, une info que le jeu lui-même ne vérifie jamais.

Fonctionnalités

  • Trace : map complète pour n’importe quelle seed, tout seed-exact : chaque salle avec ses events, items, code, keycard, zone et portes, plus les tunnels de maintenance et la forêt de SCP-860.
  • Search : scanne des plages de seeds par millions selon des critères combinables : salle présente ou absente, distance entre deux salles, chevauchements résiduels, finissabilité. Tourne dans un Web Worker, sans bloquer l’interface ; import/export des résultats pour reprendre un scan plus tard.

Précision

Le code source décrit l’algorithme, mais pas la façon dont le compilateur résout l’arithmétique flottante au niveau du bit ; cette partie a dû être reverse-engineered depuis le binaire compilé. Le port reproduit ainsi le générateur de Blitz3D v1.108c (un LCG de Lehmer, A=48271, M=2³¹−1) jusqu’à la sémantique float32 x87, y compris les particularités du moteur (bornes de boucle réévaluées à chaque itération, Or sans court-circuit, matrices de rotation différant d’un ULP).

Vérifié contre une référence réelle : le jeu compilé en mode debug, instrumenté pour extraire les bits bruts de chaque extent de salle calculé. La suite de conformité compare les patterns de bits. Un seul ULP d’écart fait échouer le test.

npm test
# ✓ 6 maps, 7321 extents, 100% bit-exact

Stack

TypeScript vanilla, sans framework. Vite pour le build, esbuild pour les tests.

Crédits et licence

Ce projet est un travail dérivé de SCP: Containment Breach, créé par Regalis, dont le jeu et le code source sont publiés sous licence CC BY-SA 3.0. La logique de génération est portée directement depuis ses fichiers sources (MapSystem.bb, UpdateEvents.bb, Main.bb), et les heightmaps de la forêt proviennent de ses assets. Sans son travail et sa décision de rendre le code source public, ce projet n’existerait pas. Le port et le visualiseur sont donc publiés sous CC BY-SA 4.0, dans le même esprit de partage.