refactor: 资源按 游戏/壁纸 分层,预设拆进各自壁纸目录

- assets/<游戏>/<壁纸>/{effects,images,audios}/,每档壁纸自包含
- 每档壁纸自带 preset.js:用 import.meta.url 推导自身资源路径,目录可整体搬走;
  目录名用显示名(含「」),代码键用稳定 id(xilian/kv37,与 WE 属性值绑定)
- preset-store.js -> presets.js:静态 import 两份预设并建 id 索引
- 新增 CONTEXT.md 术语表与 ADR-0001/0002
- 新增 check-paths / compare / heatmap 三个验证工具;serve.mjs 改为每帧强制动画相位归零

验证:check-paths 11/11 路径存在(含此前零引用的 昔涟.flac);浏览器 0 个真实 404;
与基线 worktree 同冻结设置对拍,9 对跨版本比较中 4 对逐像素完全相同(差异 0),
其余 ≤0.19/255,远低于基线自身的双模态抖动(2.27/255)。
This commit is contained in:
Shuery committed 2026-09-19 19:26:46 +08:00
1 parent 399f99edd7
commit 09ff322fe8
29 files changed
+388 -127

No files matched your search

File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 700 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 MiB

@@ -0,0 +1,34 @@
// 「成为昨日的明天」—— 官方 3.7 版本专题展示页
// 这份预设自带全部资源,路径由 import.meta.url 从本文件位置推导,
// 因此整个目录可以整体搬走或改名,而不用改这里的任何一行。
const base = new URL("./", import.meta.url);
const asset = (path) => new URL(path, base).href;
export default {
id: "kv37", // 与 project.json 中 combo 选项的 value 一致,勿改
name: "「成为昨日的明天」",
game: "崩坏:星穹铁道",
backgroundImage: asset("./images/kv37_xilian.png"),
spineConfig: {
jsonUrl: asset("./effects/kv37.json"),
atlasUrl: asset("./images/kv37.atlas"),
animation: "animation",
viewport: {
x: -1215,
y: -410,
width: 2048,
height: 1024,
},
},
audioOptions: {
source: asset("./audios/pv37.mp3"),
volume: 0.5,
},
// 本壁纸可选的音源(第 6 步会接进 project.json 的 bgm 属性)
audioChoices: [{ id: "pv37", name: "版本 PV", source: asset("./audios/pv37.mp3") }],
};