0.2.5-dev: merge claude/036-scene
# Conflicts: # CHANGELOG.md # docs/history/0.2.5.md
This commit is contained in:
commit
bb88031256
19 files changed
+1660
-22
No files matched your search
@@ -366,3 +366,51 @@ replace 设置 → 问题反馈.
|
||||
Tests: `test/sim/official-damage-numbers.test.js`, `test/ui/official-damage-numbers.test.js`,
|
||||
`test/render/official-numbers.test.js`. Golden digests do not move: no new event kind is emitted, and the extra
|
||||
tuple field is not part of the digest. Player notes: PLAYING; client notes: design/client.md.
|
||||
|
||||
### 30.17 Official battlefield scenes (#532)
|
||||
|
||||
Report: the web board draws the metal theme for every battlefield. The reporter asked for the sand theme.
|
||||
PR #533 by @andrew05060414.
|
||||
|
||||
Findings (2026-10-11; the official hot-update lists and asset indexes, read from the CDN, and the scene bundles of
|
||||
version `26-04-13-12-31-42_e9b560`):
|
||||
|
||||
- The official board is not assembled at run time. Every battlefield is a prebuilt scene bundle, shipped only while
|
||||
the season runs. DESIGN §15 said otherwise from an off-season list and is corrected there.
|
||||
- Which art a battlefield uses is the dependency list of its scene bundle: the sand theme for act1 m01–m07 and act2
|
||||
m02 / m04, `map_lakegarden` + `map_syracuse_metro` for act2 m01, `map_kxmr` + `map_lm_center` for act2 m03. The
|
||||
same in the 上半 version of 2025-11 and the 下半 versions of 2026-03 / 04. No battlefield uses the metal theme.
|
||||
- The sand theme bundle holds no mesh because the models are baked into each scene ("Combined Mesh (root: scene)").
|
||||
- A scene's three sub-graphics `HIDDEN@1…3` are the left normal field, the right normal field and the boss field.
|
||||
- `python3 tools/local-extract/fetch_scenes.py --list` against that Android hot-update list names 33 bundles and
|
||||
22,801,308 bytes. That is the compressed CDN download, not the extracted size in the full zip.
|
||||
|
||||
Change: `tools/local-extract/scenes.py` exports a battlefield's scene (meshes in board space, materials, key light,
|
||||
lightmap pages with the baked shadow mask in alpha, albedo textures) to `public/assets/local/scene/<stageId>/`;
|
||||
`extract.py --only scene` runs it, reading the scene bundles from the client, `--scenes <dir>` or
|
||||
`.cache/official-scenes/*`; `tools/local-extract/fetch_scenes.py` downloads the in-season bundles from the official
|
||||
CDN (md5-checked against that version's hot-update list). The 3D board draws a stage's scene when the local-art
|
||||
manifest lists it (`board3d/load.js loadScenePack`, `scene.js setScenePack`); the procedural metal board stays the
|
||||
fallback and still draws the devices, gates, field edges and terrain overlays.
|
||||
|
||||
Owner decision (2026-10-12): the eleven scenes belong to the 0.2.5 asset pack. The maintainer's full release zip
|
||||
includes the extracted files. A lite package or a source install may download and extract them on that machine
|
||||
(`node tools/setup.mjs --scenes`; `--no-scenes` skips). Missing Python 3.8+ or UnityPy / lz4 / Pillow is a warning,
|
||||
and the metal board remains. The repository never stores the bundles or the extracted files (`.gitignore` already
|
||||
ignores `public/assets/`, `data/local-assets.json` and `.cache/`, and names `.cache/official-scenes/`). Packaging
|
||||
does not fail when the scenes are absent; the summary line `battlefield scenes` says whether this machine has them.
|
||||
`scenes.py` and `fetch_scenes.py` ship in a player zip only after they are committed, because the packager reads
|
||||
`git ls-files`.
|
||||
|
||||
No gameplay change: the scene is art under the same grid, camera and unit layer. Golden results are not moved by
|
||||
this change.
|
||||
|
||||
**[ASSUMED]** the light gains `SCENE_LIGHT` (`range` 8.0, `ambient` 0.2, `direct` 0.8, `indirect` 0.4) and the RGBM
|
||||
reading of the lightmap pages (Unity linear decode, range 5), both in DESIGN §15. Not done: the scene's normal /
|
||||
metallic / emission maps, map effects, sky box and post-processing; the tile graphics a level switches at run time
|
||||
(mire, tide) still use the remake's overlays. The extracted byte size inside a full zip was not measured here.
|
||||
|
||||
Tests: `test/render/board3d-scene.test.js` (the scene table against data/stages.json, board-space conversion, chunk
|
||||
layout shared by scenes.py and load.js, sub-graphic groups, RGBM decode, the loader with a fake store, BoardScene
|
||||
with a stub renderer: scene on / areas / fallback). `test/scene-assets.test.js` (setup's scene step, the full plan
|
||||
ships extracted scene files, the lite plan ships none, git ignores the bundles).
|
||||
Reference in new issue
Block a user