Skip to content

apps/level-editor ​

The Babylon.js Editor project that holds the game's levels. Open this folder in the editor (version 5.5); the scene assets/test-core-gameplay.scene is the POC city, assets/test-ai-pathfinding.scene the AI's level (a road loop with an obstacle course) and assets/main-riverbend.scene the level that ships (a city generated in Blender, never edited in the editor; scenes are named test-<words> for a test level or main-<words> for a level that ships), built out of the seventeen blocks of _blocks (unit meshes with a block script attached: ground, building, structure, terrain, ramp, stairs, nail strip, spawn point, dummy, road, door, container, camera, NPC spawner, vehicle spawner, garage, district) and, in time, of kit pieces modelled in Blender (meshes whose metadata.foi says what they are). Place instances of them, scale them to size, save, and npm run level:export reads the scene folder and turns it into the level the game runs. The whole workflow is in the Levels guide; the rules the export enforces are in the skill file .claude/skills/five-on-it-levels/SKILL.md (a copy of the repository's).

PathWhat
project.bjseditorThe editor's project file (metres, no compressed textures).
assets/<name>.scene/A scene, as the editor saves it: one JSON per mesh, node, light and camera, binary geometry, config.json. Generated by npm run level:port the first time, owned by the editor afterwards; what npm run level:export reads.
assets/blocks/library.babylonThe block sources alone (npm run level:blocks), to drag into a scene that lacks them.
src/scripts/blocks/*.tsThe block scripts (IScript classes with babylonjs-editor-tools decorators); their presence on a node is what the export reads. Type-checked, never run by Node.
src/scripts.tsGenerated by the editor (the map of attached scripts); committed, formatting-exempt.
public/The editor's own packed output, git-ignored and unused by the game.

Scripts: npm run -w apps/level-editor typecheck.