Download data.js from axonis22/auto-si: direct link, hf CLI and curl.
- Browser
- Download file 32.5 kB
-
https://huggingface.co/spaces/axonis22/auto-si/resolve/main/data.js
- Command line
-
hf download hf://spaces/axonis22/auto-si/data.js
-
curl -L -o data.js https://huggingface.co/spaces/axonis22/auto-si/resolve/main/data.js
32.5 kB
| /* Auto-SI v0.2 data. Source: Muse engine phase audit, 2026-10-02 (Sydney time). | |
| Dates are file modified times, already Sydney time (AEST, UTC+10). */ | |
| window.SIDESK = { | |
| version: "0.2.0", | |
| auditDate: "2026-10-02", | |
| groups: [ | |
| { id: "move", name: "Movement and parkour", hint: "Walking, jumping, climbing, crouching" }, | |
| { id: "shoot", name: "Shooting and combat feel", hint: "Firing, ammo, hit effects, deaths" }, | |
| { id: "light", name: "Shadows and lighting", hint: "Lamps, shadows, day and night, fog" }, | |
| { id: "tex", name: "Textures and normal maps", hint: "Surface images and fake bumps" }, | |
| { id: "model", name: "Model loading (GLB, FBX, OBJ)", hint: "Bringing in 3D files" }, | |
| { id: "anim", name: "Animated characters", hint: "Moving, posed people and creatures" }, | |
| { id: "look", name: "Look picker", hint: "Switching the overall visual style" }, | |
| { id: "world", name: "World, sky and scene level", hint: "The place the game happens in" }, | |
| { id: "foes", name: "Enemies and dogs", hint: "Things that chase or patrol" }, | |
| { id: "tools", name: "Tools, checks and config", hint: "Panels, checks, saving setups" }, | |
| { id: "hud", name: "Screen, HUD and demo", hint: "Overlays, counters, hands-off demo" }, | |
| { id: "si", name: "SI helpers (prototype)", hint: "Model picker and wave planner idea" } | |
| ], | |
| /* Timeline entries. n = phase number 1..32. Extra entries: side=true (not numbered). */ | |
| phases: [ | |
| { n:1, date:"2026-09-05 09:55", era:"Boot and rendering basics", title:"Clear screen and a lit triangle", | |
| plain:"The very first step: the program opens a window area, repaints it many times a second, and draws one lit triangle. This proves the graphics pipeline works. The team chose WebGL 1 (the plain graphics layer built into web browsers) instead of a ready-made engine.", | |
| src:["muse-breaker-engine\\engine.js","index.html","NOTES.phase1.md.bak"], groups:["hud"], by:"Muse Glimmer (local model), coach patches" }, | |
| { n:2, date:"2026-09-05 10:32", era:"Boot and rendering basics", title:"Camera and walking", | |
| plain:"You can now look around and walk with the keyboard (WASD or arrow keys) and mouse drag. There is a ground plane with a grid so you can see movement, and the game clock steps at a steady rate.", | |
| src:["muse-breaker-engine\\engine.js"], groups:["move","world"], by:"Muse Glimmer" }, | |
| { n:3, date:"2026-09-05 11:48", era:"Boot and rendering basics", title:"First crate, scene list, warm light", | |
| plain:"A crate (a simple box) appears. The scene is now a list of objects, so more things can be added. A warm point light (like a bulb) lights the crate.", | |
| src:["engine.js"], groups:["world","light"], by:"Muse Glimmer" }, | |
| { n:4, date:"2026-09-05 12:20", era:"Boot and rendering basics", title:"Several objects, solid walls, cool light", | |
| plain:"Many objects in one scene. Boxes are now solid: the player is pushed out instead of walking through them (collision). A second, cooler light and a shiny glint are added, plus a frame-rate counter, mouse capture, and a demo mode (?demo=1).", | |
| src:["engine.js","index.html"], groups:["move","light","hud"], by:"Muse Glimmer" }, | |
| { n:5, date:"2026-09-05 12:54", era:"Boot and rendering basics", title:"OBJ model loader and orbit view", | |
| plain:"The engine can read a simple 3D model written as text (an OBJ file) and shows a pyramid from it. An orbit mode (O key, Esc to leave) lets you circle an object like a turntable.", | |
| src:["engine.js"], groups:["model","move"], by:"Muse Glimmer" }, | |
| { n:6, date:"2026-09-05 15:39", era:"Boot and rendering basics", title:"Blob shadows and smoother orbit", | |
| plain:"Simple soft dark spots under objects give a first sense of shadow. Hidden-object skipping (culling) is stubbed in and the orbit camera moves more smoothly. This phase needed retries (6b, 6c).", | |
| src:["engine.js","call_muse_phase6b.py","call_muse_phase6c.py"], groups:["light"], by:"Muse Glimmer" }, | |
| { n:7, date:"2026-09-05 16:46", era:"Boot and rendering basics", title:"Shiny materials", | |
| plain:"Each object can have its own shine colour and sharpness, so metal looks different from wood. A first stub for objects that belong to other objects (parent and child) is added.", | |
| src:["engine.js"], groups:["light","world"], by:"Muse Glimmer" }, | |
| { n:8, date:"2026-09-05 17:32", era:"Boot and rendering basics", title:"Real shadows (shadow maps)", | |
| plain:"Proper shadows: the scene is drawn once from the light's point of view to learn what the light can reach, then used to darken hidden areas. Resolution is 1024 by 1024.", | |
| src:["engine.js","patch_phase8.py"], groups:["light"], by:"Muse Glimmer, coach patch" }, | |
| { n:9, date:"2026-09-05 18:11", era:"Boot and rendering basics", title:"Sky, fog and tall props", | |
| plain:"A sky colour and distance fog make the world feel deeper. Pillars, a wall and a barrel add vertical shapes.", | |
| src:["engine.js","patch_phase9.py"], groups:["light","world"], by:"Muse Glimmer, coach patch" }, | |
| { n:10, date:"2026-09-05 18:58", era:"Boot and rendering basics", title:"Textured ground and a rock model", | |
| plain:"The ground gets a repeating checker pattern drawn by code (a texture), and a second OBJ model, a rock, is loaded.", | |
| src:["engine.js","patch_phase10.py"], groups:["tex","model"], by:"Muse Glimmer, coach patch" }, | |
| { n:11, date:"2026-09-05 19:55", era:"Boot and rendering basics", title:"Day and night", | |
| plain:"Press N (or G) to switch between day and night. Night changes the background and fog colour and boosts the lights.", | |
| src:["engine.js","patch_phase11.py"], groups:["light"], by:"Muse Glimmer, coach patch" }, | |
| { n:12, date:"2026-09-05 20:41", era:"Boot and rendering basics", title:"Credit card overlay and demo loop", | |
| plain:"A credits overlay (C key) and a hands-off demo loop that plays itself, used for diary videos.", | |
| src:["engine.js","diary\\*"], groups:["hud"], by:"Muse Glimmer" }, | |
| { n:13, date:"2026-09-06 09:22", era:"Gameplay loop", title:"Shooting", | |
| plain:"Left click fires an invisible straight line from the camera and checks what it hits (a hitscan ray). Crates have health, flash when hit, and score points. There is a short cooldown between shots.", | |
| src:["engine.js"], groups:["shoot"], by:"Muse Glimmer" }, | |
| { n:14, date:"2026-09-06 10:35", era:"Gameplay loop", title:"First hostile", | |
| plain:"An enemy that chases you and hurts you when close. The player now has health and respawns.", | |
| src:["engine.js"], groups:["foes","shoot"], by:"Muse Glimmer" }, | |
| { n:15, date:"2026-09-06 11:52", era:"Gameplay loop", title:"Breaker Bay layout", | |
| plain:"A rough, blocky (greybox) level: walls, a pier, cover, a warehouse and a shed, all solid.", | |
| src:["engine.js","patch_phase15_aabb.py"], groups:["world","move"], by:"Muse Glimmer, coach patch" }, | |
| { n:16, date:"2026-09-06 15:46", era:"Gameplay loop", title:"Limited ammo and pickups", | |
| plain:"Ammunition is finite, with 3 ammo pickups placed in the level.", | |
| src:["engine.js"], groups:["shoot"], by:"Muse Glimmer" }, | |
| { n:17, date:"2026-09-06 17:15", era:"Gameplay loop", title:"Reload and a second hostile", | |
| plain:"Press R to reload. A second enemy patrols a route instead of chasing.", | |
| src:["engine.js"], groups:["shoot","foes"], by:"Muse Glimmer" }, | |
| { n:18, date:"2026-09-06 18:42", era:"Gameplay loop", title:"Doors and magazines", | |
| plain:"A door you open with E, and ammo is split into the magazine and a reserve.", | |
| src:["engine.js"], groups:["shoot","world"], by:"Muse Glimmer" }, | |
| { n:19, date:"2026-09-06 21:06", era:"Gameplay loop", title:"Muzzle flash, sound hooks, crouch", | |
| plain:"A flash at the gun when you fire, places in the code ready for sound, and crouching with Ctrl.", | |
| src:["engine.js"], groups:["shoot","move","hud"], by:"Muse Glimmer" }, | |
| { n:20, date:"2026-09-07 01:12", era:"Gameplay loop", title:"Night lamps and moonlight", | |
| plain:"Four lamp posts light the night scene, with a soft moonlight fill. Daytime lamps are dimmed. (Notes were saved 2026-09-06 23:07, engine file 2026-09-07 01:12.)", | |
| src:["engine.js","NOTES.phase20.md.bak"], groups:["light"], by:"Muse Glimmer" }, | |
| { n:21, date:"2026-09-07 03:38", era:"Gameplay loop", title:"Dogs, props and hit styles (21 and 21.1)", | |
| plain:"Dogs join the enemies, bay props are added and the pier becomes walkable. Version 21.1 (03:38) adds different hit looks per surface (wall, wood, metal, stone), shootable lamps, and death no longer teleports you. Phase 21 started at 01:41. Its first notes file is missing and the model run stopped early, so a repair script exists.", | |
| src:["engine.js","_repatch_coach_phase21.py","NOTES.phase21.1.md.bak"], groups:["foes","shoot","world","light"], by:"Muse Glimmer, coach polish" }, | |
| { n:22, date:"2026-09-07 17:58", era:"Models and polish", title:"GLB loader", | |
| plain:"First loader for GLB files (the common single-file 3D format). Press L to pick one. It reads the first mesh with its positions and normals. A tiny sample cube ships with it.", | |
| src:["engine.js (parseGLB)","models\\sample-cube.glb"], groups:["model"], by:"Muse Glimmer" }, | |
| { n:23, date:"2026-09-08 12:17", era:"Models and polish", title:"Clean rewrite and character shapes", | |
| plain:"Muse rewrote the engine cleanly, folding in all the earlier fixes. Mouse-look is now proper first person, simple character shapes appear (T key), and many fixes for dogs, ammo, lamps and enemy awareness land.", | |
| src:["engine.js","_patch_mitsh.py","muse-phase23-cont-*"], groups:["anim","foes","move"], by:"Muse Glimmer" }, | |
| { n:24, date:"2026-09-08 15:38", era:"Models and polish", title:"Polish and parkour blocks", | |
| plain:"More ammo, red shoot boxes, a dimmer night, and blocks you can jump onto (parkour). The ladder was parked for later. A snapshot was prepared for Hugging Face. A separate Style2 lighting experiment ran beside it.", | |
| src:["engine.js","_parkour_blocks.py","muse-hf-phase24-upload","muse-style2-scrapyard"], groups:["move","shoot","light"], by:"Muse Glimmer, coach patches" }, | |
| { n:25, date:"2026-09-12 09:26", era:"Textures to combat", title:"Lean scene and textured models", | |
| plain:"Clutter removed. GLB models can now have several parts, texture coordinates and an embedded picture painted on them (WebGL 1). A Khronos ToyCar (CC0) is the test prop: K toggles it, L picks a file.", | |
| src:["engine.js","PHASE25.md","engine.js.before-phase25-20260912.bak"], groups:["tex","model","world"], by:"Coach (Grok Bot); Muse server was down" }, | |
| { n:26, date:"2026-09-12 22:25", era:"Textures to combat", title:"Normal maps", | |
| plain:"Normal maps are images that fake small bumps and dents so a flat surface looks detailed under light. The engine reads them from GLB files and computes the needed direction data itself if missing. The ToyCar auto-load was removed.", | |
| src:["engine.js (computeTangentsFromUV)","PHASE26.md","_patch_phase26.py"], groups:["tex","light"], by:"Coach (Grok Bot)" }, | |
| { n:27, date:"2026-09-13 03:14", era:"Textures to combat", title:"Mooring bollard mesh", | |
| plain:"Muse picked a mooring bollard (a short harbour post) as a hand-built 3D shape made in code with full surface data. Press K to toggle it.", | |
| src:["engine.js (createPierMooringBollardMesh)","PHASE27.md","call_muse_phase27_pick.py"], groups:["tex","world"], by:"Muse (pick), coach" }, | |
| { n:28, date:"2026-09-24 14:24", era:"Textures to combat", title:"Jumping and climbing", | |
| plain:"Real jumping with a short grace window after leaving a ledge (coyote time), a jump buffer, step-up onto small ledges, mantling over taller ones, a climbable ladder, and a parkour route near the spawn point.", | |
| src:["engine.js (platformFloor)","PHASE28.md","_patch_phase28_move.py","TRACK-ladder-jumps.md"], groups:["move"], by:"Coach (Grok Bot)" }, | |
| { n:29, date:"2026-09-24 22:50", era:"Textures to combat", title:"Combat feel", | |
| plain:"Enemies now respect building walls instead of clipping into them. Deaths play a fall then a small boom (0.42 s plus 0.18 s). The player gets a DOWN then RECOVERED beat. This is the last phase of the first tree (engine.js 138 KB, served on port 8771).", | |
| src:["engine.js (pushOutOfNodes, moveHostileXZ, updateHostile)","PHASE29.md","_patch_phase29_combat.py"], groups:["shoot","foes"], by:"Coach (Grok Bot)", port:8771, portNote:"First tree, phases 1 to 29" }, | |
| { n:29, sub:"Engine 29", date:"2026-09-26 05:21", era:"Engines (separate folders)", title:"Engine 29: Look Picker", | |
| plain:"The engine moves to its own folder with a clean layout (engine, game, assets). Two switchable looks: A Breaker Bay (identical to Phase 29) and B Scrap Dusk (authored by Muse). Adds a start screen, a settings panel (Tab) with live switches saved in the browser, and import of your own GLB, glTF or FBX files for looks only. A third-party MIT loader library (r180) is included only to read those files; drawing stays raw WebGL 1. A lamp fix followed on 2026-09-27 09:42.", | |
| src:["muse-engine-29\\engine\\engine.js","engine\\looks\\look-switcher.js","game\\looks\\look-b.js","engine\\ui\\model-import.js","engine\\ui\\config-panel.js","engine\\ui\\start-screen.js"], groups:["look","model","tools"], by:"Muse (Look B), coach", | |
| port:8773, portNote:"Port 8773 per audit (shared with the model picker prototype)", | |
| hf:"https://huggingface.co/spaces/axonis22/muse-engine-29" }, | |
| { side:true, id:"29b", date:"2026-09-26 04:46", era:"Side prototype", title:"Phase 29b: model picker and SI Director (side prototype)", | |
| plain:"Not a numbered phase. An experiment: a panel (M key) to choose a local SI model, and a Director (B key) that asks the model for a wave plan as strict JSON, checks it, and falls back to a fixed plan offline. It was not carried into Engines 29 to 32.", | |
| src:["muse-engine-p29-models\\engine\\ai\\adapter.js","engine\\ai\\model-panel.js and .css","games\\breaker-bay\\ai-director.js","_server\\serve_models.py"], groups:["si"], by:"Coach (Grok Bot)", port:8773, portNote:"Port 8773 per audit (on-disk folder names keep the old letters 'ai')" }, | |
| { n:30, date:"2026-09-27 12:20", era:"Engines (separate folders)", title:"Engine 30: Scene Level", | |
| plain:"Load your own FBX or GLB file as the playable level. The engine fixes units and which way is up, then builds floors and walls you can stand on from the model's triangles, with step-up and mantle on that geometry. Started 11:13, a Look B model-load fix landed at 14:00. Test pack: Kenney Yard (CC0).", | |
| src:["engine\\import\\scene-units.js","engine\\physics\\mesh-collider.js","assets\\testpack\\","_dev\\patch_engine_e30.py","_dev\\BUGFIX-lookB.md"], groups:["model","world","move","tools"], by:"Muse (units, collider), coach fixes", | |
| port:8774, portNote:"Port 8774 per audit", }, | |
| { n:31, date:"2026-09-27 13:32", era:"Engines (separate folders)", title:"Engine 31: Animated Characters", | |
| plain:"Animated, skinned characters (bone-driven FBX or GLB people) replace the enemies. Clip names are matched to idle, walk, run, shoot and death. A body capsule and head sphere give hit boxes (a headshot does 3 damage). Poses blend over 0.2 s, and a 60-bone limit is handled by merging small bones. Started 12:23, fix at 14:00.", | |
| src:["engine\\anim\\clip-map.js","capsule-fit.js","skeleton-pose.js","bone-budget.js","assets\\testpack\\build_characters.py"], groups:["anim","foes","shoot","model"], by:"Muse (all four modules), coach fixes", | |
| portNote:"No local port is recorded in the audit for Engine 31" }, | |
| { n:32, date:"2026-09-27 17:41", era:"Engines (separate folders)", title:"Engine 32 (release candidate): Your FBX/GLB Level, Model check", | |
| plain:"Adds a model check that warns about big textures, memory use and non-power-of-two images, a switch to play animation clips in place (strip root motion), save and load of your setup as a JSON file, drag and drop planning, dogs that use your loaded character, a progress bar, clear errors for old FBX 6.x and Draco/KTX2 files, and heavy-scene batching. Version string e32-rc-1. Staging copy for Hugging Face was made 17:41. Two early .3ds loaders exist locally only and are left out of the staging copy.", | |
| src:["engine\\check\\model-check.js","engine\\check\\texture-budget.js","engine\\anim\\root-motion.js","engine\\io\\setup-schema.js","engine\\ui\\e32-ui.js","docs\\HOWTO-AUTODESK.md"], groups:["tools","model","anim","tex"], by:"Muse and coach", | |
| port:8776, portNote:"Port 8776 appears only in this engine's end-to-end test logs, so it may not be running", | |
| hf:"https://huggingface.co/spaces/axonis22/muse-engine-32" } | |
| ], | |
| /* Feature list for the cumulative view. at = phase number it first appeared. cfg = engine config key (Engine 32 CFG_DEFAULTS). */ | |
| features: [ | |
| { name:"Move and look (WASD, mouse)", group:"move", at:2, desc:"Walk around in first person." }, | |
| { name:"Collision (solid boxes)", group:"move", at:4, cfg:"collision", def:true, desc:"Off means noclip: walk through walls." }, | |
| { name:"Gravity", group:"move", at:2, cfg:"gravity", def:true, desc:"Off means fly. (Cfg origin P2, P28.)" }, | |
| { name:"Crouch", group:"move", at:19, desc:"Ctrl to crouch." }, | |
| { name:"Parkour blocks and ladder", group:"move", at:24, cfg:"parkour", def:true, desc:"Jump-on blocks; ladder added in P28." }, | |
| { name:"Jump (coyote time, buffer, step-up, mantle)", group:"move", at:28, cfg:"jump", def:true, desc:"Forgiving, modern-feeling jumping." }, | |
| { name:"Level colliders from loaded scene", group:"move", at:30, cfg:"sceneColliders", def:true, desc:"Floors and walls from your model's triangles." }, | |
| { name:"Shooting (hitscan)", group:"shoot", at:13, cfg:"playerShoot", def:true, desc:"Left click fires." }, | |
| { name:"Limited ammo, pickups", group:"shoot", at:16, desc:"Finite ammo with pickups." }, | |
| { name:"Infinite ammo (cheat)", group:"shoot", at:16, cfg:"infiniteAmmo", def:false, desc:"Off by default." }, | |
| { name:"Reload and magazine / reserve", group:"shoot", at:17, desc:"R to reload." }, | |
| { name:"Muzzle flash and screen effects", group:"shoot", at:19, cfg:"fx", def:true, desc:"Flash when firing." }, | |
| { name:"Sound hooks", group:"shoot", at:19, cfg:"sound", def:true, desc:"AudioContext hooks." }, | |
| { name:"Per-surface hit styles", group:"shoot", at:21, desc:"Wall, wood, metal, stone, lamp, dog, hostile." }, | |
| { name:"Fall-then-boom death", group:"shoot", at:29, cfg:"deathFx", def:true, desc:"0.42 s fall then 0.18 s boom." }, | |
| { name:"Headshot hit boxes", group:"shoot", at:31, desc:"Body capsule plus head sphere, headshot = 3 damage." }, | |
| { name:"Point lights (warm and cool)", group:"light", at:3, cfg:"lightExtras", def:true, desc:"Lamps, extras and moonlight (P3, P20, P21)." }, | |
| { name:"Blob shadows", group:"light", at:6, desc:"Simple soft spots." }, | |
| { name:"Directional shadow maps", group:"light", at:8, cfg:"shadows", def:true, desc:"Real shadows, 1024 map." }, | |
| { name:"Sky and distance fog", group:"light", at:9, cfg:"fog", def:true, desc:"Depth and atmosphere." }, | |
| { name:"Day / night (N or G)", group:"light", at:11, cfg:"night", def:false, desc:"Night is off by default." }, | |
| { name:"Night lamps and moonlight", group:"light", at:20, desc:"Four lamp posts, moon fill." }, | |
| { name:"Procedural ground texture", group:"tex", at:10, cfg:"textures", def:true, desc:"Master texture and normal-map switch." }, | |
| { name:"Textured multi-mesh GLB", group:"tex", at:25, desc:"Texture coordinates plus embedded base colour." }, | |
| { name:"Normal maps (TBN)", group:"tex", at:26, desc:"Fake bumps; tangents computed if missing." }, | |
| { name:"Bollard mesh (K)", group:"tex", at:27, cfg:"bollard", def:true, desc:"Hand-built mesh with tangents." }, | |
| { name:"Texture budget check", group:"tex", at:32, desc:"Warns about large, heavy or non-power-of-two textures." }, | |
| { name:"OBJ text loader", group:"model", at:5, desc:"Pyramid in P5, rock in P10." }, | |
| { name:"GLB loader (L)", group:"model", at:22, desc:"First mesh, positions and normals." }, | |
| { name:"GLB, glTF, FBX import (third-party loaders)", group:"model", at:29, desc:"Engine 29: import for look props. A third-party MIT library is used only to parse files." }, | |
| { name:"FBX/GLB as the level", group:"model", at:30, desc:"Units and up-axis handled." }, | |
| { name:"Clear errors for FBX 6.x, Draco, KTX2", group:"model", at:32, desc:"Tells you why a file did not load." }, | |
| { name:"Character shapes (T)", group:"anim", at:23, desc:"Simple built-in people shapes." }, | |
| { name:"Skinned characters and clip mapping", group:"anim", at:31, desc:"idle, walk, run, shoot, death." }, | |
| { name:"Bone budget (60 bones)", group:"anim", at:31, desc:"Merges leaf bones to fit the GPU limit." }, | |
| { name:"Root-motion strip", group:"anim", at:32, cfg:"stripRootMotion", def:true, desc:"Play clips in place." }, | |
| { name:"Look A / Look B switching", group:"look", at:29, desc:"Engine 29: Breaker Bay or Scrap Dusk." }, | |
| { name:"Start screen", group:"look", at:29, desc:"Choose a look before you start." }, | |
| { name:"Ground grid", group:"world", at:2, cfg:"grid", def:true, desc:"Helper grid." }, | |
| { name:"Scene list (many meshes)", group:"world", at:3, desc:"Scene graph array." }, | |
| { name:"Breaker Bay layout", group:"world", at:15, desc:"Walls, pier, warehouse, shed." }, | |
| { name:"Interactive door (E)", group:"world", at:18, desc:"Open and close." }, | |
| { name:"Built-in props and lamps", group:"world", at:21, cfg:"builtinProps", def:true, desc:"Auto off when a scene is the level." }, | |
| { name:"Enemies (chase, patrol)", group:"foes", at:14, cfg:"enemies", def:true, desc:"Hostiles present." }, | |
| { name:"Enemy attack", group:"foes", at:14, cfg:"enemyAttack", def:true, desc:"Damage to the player." }, | |
| { name:"Enemy behaviour", group:"foes", at:14, cfg:"enemyAI", def:true, desc:"Chase and patrol logic (rule-based code, not a model). Cfg key name kept from the engine." }, | |
| { name:"Dogs", group:"foes", at:21, cfg:"dogs", def:true, desc:"Dogs as enemies." }, | |
| { name:"Dogs use loaded character", group:"foes", at:32, cfg:"importDog", def:false, desc:"Off by default." }, | |
| { name:"Config panel (Tab)", group:"tools", at:29, desc:"Live switches saved in localStorage." }, | |
| { name:"Model check", group:"tools", at:32, desc:"Pre-flight check on a loaded model." }, | |
| { name:"Save / load setup JSON, drag and drop", group:"tools", at:32, desc:"Share a level setup." }, | |
| { name:"HUD, banner and hint", group:"hud", at:1, cfg:"hud", def:true, desc:"On-screen text." }, | |
| { name:"FPS overlay, demo mode", group:"hud", at:4, desc:"?demo=1" }, | |
| { name:"Credits overlay (C) and demo loop", group:"hud", at:12, desc:"Used for diary videos." }, | |
| { name:"Model picker and wave Director (side prototype)", group:"si", at:29, desc:"Phase 29b only. Not in Engines 29 to 32." } | |
| ], | |
| /* Model types panel */ | |
| modelTypes: [ | |
| { id:"glb", ext:".glb / .gltf", name:"GLB / glTF", status:"Supported (Muse engines and Auto-SI v0.4)", firstSeen:"Phase 22 (lean), Phase 25 to 26 (textures, normal maps)", | |
| plain:"The 'JPEG of 3D'. A GLB packs the shape, pictures and animation into one file. This is the best format to bring in.", | |
| note:"Draco compression and KTX2 textures are not supported; Engine 32 shows a clear error instead.", | |
| sidesk:"reads meshes, node transforms, materials (base colour, normal, metal-rough, emissive and occlusion pictures), vertex colours, skeletons (skins) and animation clips, from GLB or .gltf with side files.", | |
| next:"Draco, KTX2 and meshopt compressed files, morph targets, and the glass, clear-coat and sheen extras (glass is drawn as simple transparency for now)." }, | |
| { id:"obj", ext:".obj", name:"OBJ", status:"Built-in props only (per audit)", firstSeen:"Phase 5", | |
| plain:"A very old, plain-text 3D format with shape only and no animation. Used for the first pyramid and rock props.", | |
| note:"The audit lists GLB, glTF and FBX for the Engine 29 to 32 import panel, not OBJ.", | |
| sidesk:"reads shapes, UVs, normals, vertex colours, and the .mtl colours and pictures chosen together with the OBJ.", | |
| next:"smoothing groups and free-form curves (neither is read)." }, | |
| { id:"fbx", ext:".fbx", name:"FBX", status:"Supported (Engines 29 to 32)", firstSeen:"Engine 29 (import), 30 (as a level), 31 (skinned characters)", | |
| plain:"Autodesk's common exchange format for models and animated characters. Units and which way is 'up' vary, so the engine converts them.", | |
| note:"Old FBX 6.x files give a clear error in Engine 32. FBX 6.1 test props exist in the local test pack.", | |
| sidesk:"reads FBX 7.x shapes (binary or ASCII), node transforms, colours and pictures only. It shows the static model. A file with animation or a skeleton still loads, with a note that its movement is not played. Old FBX 6.x gives a clear message.", | |
| next:"FBX animation and skeletons (skinning)." }, | |
| { id:"3ds", ext:".3ds", name:"3D Studio (.3ds)", status:"Local only, not in the Hugging Face copy", firstSeen:"Engine 32 working tree", | |
| plain:"A very old format from 3D Studio. Two early loaders (legacy-3ds.js, max3ds.js) exist on the studio PC only and are deliberately excluded from the Hugging Face staging copy.", | |
| note:"Treat as experimental. Do not expect it to work in the published Space.", | |
| sidesk:"not supported. A clear message is shown.", | |
| next:"not planned." } | |
| ], | |
| /* Bundled test model library (v0.2). CC0 or CC BY only. TEST ONLY, NOT PART OF ANY RELEASE. | |
| Files are byte-for-byte copies of the originals. Licences checked against each source README / licence file on 2026-10-02. */ | |
| library: [ | |
| { id:"box", name:"Box", file:"models/khronos/Box.glb", type:"glb", bytes:1664, | |
| url:"https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models/Box", | |
| licence:"CC BY 4.0", licenceUrl:"https://creativecommons.org/licenses/by/4.0/legalcode", | |
| author:"Cesium", credit:"Box by Cesium, CC BY 4.0, via Khronos glTF-Sample-Assets. Unmodified.", | |
| plain:"A plain cube with one flat colour. It is the simplest possible 3D model, so it is the first thing to try: if this does not show up, something is wrong with the viewer, not the model." }, | |
| { id:"boxanim", name:"BoxAnimated", file:"models/khronos/BoxAnimated.glb", type:"glb", bytes:11944, | |
| url:"https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models/BoxAnimated", | |
| licence:"CC BY 4.0", licenceUrl:"https://creativecommons.org/licenses/by/4.0/legalcode", | |
| author:"Cesium", credit:"BoxAnimated by Cesium, CC BY 4.0, via Khronos glTF-Sample-Assets. Unmodified.", | |
| plain:"A small box that rises out of a larger hollow box, flips over and sinks back down. It shows what an animation is: the file stores movement over time as well as shape. Use the Play button." }, | |
| { id:"riggedfigure", name:"RiggedFigure", file:"models/khronos/RiggedFigure.glb", type:"glb", bytes:50116, | |
| url:"https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models/RiggedFigure", | |
| licence:"CC BY 4.0", licenceUrl:"https://creativecommons.org/licenses/by/4.0/legalcode", | |
| author:"Cesium", credit:"RiggedFigure by Cesium, CC BY 4.0, via Khronos glTF-Sample-Assets. Unmodified.", | |
| plain:"A simple person-shaped figure with a hidden skeleton ('rig') inside it. Moving the skeleton bends the skin around it, which is how game characters are animated." }, | |
| { id:"fox", name:"Fox", file:"models/khronos/Fox.glb", type:"glb", bytes:162852, | |
| url:"https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models/Fox", | |
| licence:"CC0 1.0 (model) and CC BY 4.0 (rigging, animation, glTF conversion)", licenceUrl:"https://github.com/KhronosGroup/glTF-Sample-Assets/blob/main/Models/Fox/README.md", | |
| author:"PixelMannen (model), tomkranis (rigging and animation), @AsoboStudio and @scurest (glTF conversion)", | |
| credit:"Fox: model by PixelMannen (CC0); rigging and animation by tomkranis (CC BY 4.0); glTF conversion by @AsoboStudio and @scurest (CC BY 4.0). Via Khronos glTF-Sample-Assets. Unmodified.", | |
| plain:"A low-detail fox with a skeleton and 3 ready-made moves: Survey (looking around), Walk and Run. Choose a move in the animation list and press Play." }, | |
| { id:"toycar", name:"ToyCar", file:"models/khronos/ToyCar.glb", type:"glb", bytes:5422412, | |
| url:"https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models/ToyCar", | |
| licence:"CC0 1.0 Universal", licenceUrl:"https://creativecommons.org/publicdomain/zero/1.0/legalcode", | |
| author:"Guido Odendahl (car model), Eric Chadwick (extensions and scene composition)", credit:"ToyCar by Guido Odendahl and Eric Chadwick, CC0 1.0, via Khronos glTF-Sample-Assets (credit not required). Unmodified.", | |
| plain:"A toy car with see-through glass, glossy paint and fabric-like seats. It is a good test of realistic materials. It is the biggest file here (about 5 MB) because of its detailed pictures." }, | |
| { id:"avocado", name:"Avocado", file:"models/khronos/Avocado.glb", type:"glb", bytes:8110040, | |
| url:"https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models/Avocado", | |
| licence:"CC0 1.0 Universal", licenceUrl:"https://creativecommons.org/publicdomain/zero/1.0/legalcode", | |
| author:"Microsoft", credit:"Avocado by Microsoft, CC0 1.0, via Khronos glTF-Sample-Assets (credit not required). Unmodified.", | |
| plain:"A cut avocado showing the stone and flesh. Few triangles but big painted pictures (textures), so the file is large (about 8 MB) for what it shows. A good example of textures costing more than shape." }, | |
| { id:"pizza", name:"Pizza (Kenney Food Kit)", file:"models/kenney-food/pizza.glb", type:"glb", bytes:106780, | |
| extra:["models/kenney-food/Textures/colormap.png"], | |
| url:"https://kenney.nl/assets/food-kit", | |
| licence:"CC0 1.0 Universal", licenceUrl:"https://creativecommons.org/publicdomain/zero/1.0/", | |
| author:"Kenney (www.kenney.nl)", credit:"Pizza from Kenney Food Kit 2.0 by Kenney, CC0 1.0 (credit not required). Unmodified.", | |
| plain:"A whole pizza made of simple chunky shapes, coloured from one small shared colour picture (loaded alongside as a side file). This is the 'low-poly' game art style: few triangles, flat colours, fast to draw." }, | |
| { id:"burger", name:"Burger (Kenney Food Kit, OBJ)", file:"models/kenney-food/burger.obj", type:"obj", bytes:15677, | |
| extra:["models/kenney-food/burger.mtl","models/kenney-food/Textures/colormap.png"], | |
| url:"https://kenney.nl/assets/food-kit", | |
| licence:"CC0 1.0 Universal", licenceUrl:"https://creativecommons.org/publicdomain/zero/1.0/", | |
| author:"Kenney (www.kenney.nl)", credit:"Burger from Kenney Food Kit 2.0 by Kenney, CC0 1.0 (credit not required). Unmodified.", | |
| plain:"A burger in the old plain-text OBJ format. OBJ holds only shape; its colours come from two small side files (a .mtl material list and a picture), which are loaded alongside it. No animation is possible in this format." }, | |
| { id:"cake", name:"Cake (Kenney Food Kit, FBX)", file:"models/kenney-food/cake.fbx", type:"fbx", bytes:91744, | |
| extra:["models/kenney-food/Textures/colormap.png"], | |
| url:"https://kenney.nl/assets/food-kit", | |
| licence:"CC0 1.0 Universal", licenceUrl:"https://creativecommons.org/publicdomain/zero/1.0/", | |
| author:"Kenney (www.kenney.nl)", credit:"Cake from Kenney Food Kit 2.0 by Kenney, CC0 1.0 (credit not required). Unmodified.", | |
| plain:"A cake in FBX, the exchange format many 3D programs and game engines use for models and animated characters. FBX files often use centimetres, so a model can look tiny or huge until it is resized." } | |
| ], | |
| /* Referenced-only test packs (not bundled). The bundled test models are in the library above. */ | |
| samples: [ | |
| { file:"Kenney Yard test pack (FBX Z-up cm, and GLB)", type:"fbx", sizeBytes:null, | |
| source:"Kenney (kenney.nl)", url:"https://kenney.nl/", | |
| licence:"CC0 (per the Muse audit)", usedIn:"Engine 30 test pack", verified:"From the audit only. Exact pack page not recorded, confirm before relying on it" } | |
| ] | |
| }; | |