Ship the WeChat hot-update catalogs and the camp, TideWhale T2, UI atlas, and animation-lab work.
Co-authored-by: Cursor <cursoragent@cursor.com>
|
After Width: | Height: | Size: 1.3 MiB |
@@ -0,0 +1,8 @@
|
||||
参考图只用来识别画风和主角身份:喷泉旁那个短发、额上戴着飞行护目镜的男孩探险家。不要复制广场、房屋、喷泉、猫咪或任何背景。
|
||||
|
||||
重新画成一张单独的全身角色设定图。约11岁男孩,柔和圆润的卡通游戏风格,头稍大,但肩膀、手臂、腿和手指都清楚分开,适合绑骨。严格正面T字站姿:双臂向左右水平伸直,手掌朝下,五指张开,双脚与肩同宽站稳,鞋底完整入画。短栗色头发,额前一小撮翘发;棕色飞行护目镜推到额头上,不遮住眼睛;奶油色短袖衬衫,贴身的棕色短探险背心,两个小口袋;棕色短裤;棕色短靴。双手空无一物,没有背包、帽子、武器、手杖和宠物。
|
||||
|
||||
纯白背景 #FFFFFF,四角都是纯白,不要地面、阴影、渐变、场景、文字、水印和边框。头顶和鞋底四周留白,全身完整。光线均匀,轮廓清晰,适合直接图生3D。
|
||||
|
||||
生成:Tools/gpt_image_generate.py,gpt-image-2.5,--quality high,--aspect-ratio 2:3,参考 Doc/Design/UI/Home/home_camp_with_cast.png。
|
||||
实测 1024×1536,四角 RGB ≥253。
|
||||
|
After Width: | Height: | Size: 58 KiB |
@@ -0,0 +1,39 @@
|
||||
# 潮汐鲸 T2 贝壳冠(2026-10-22)
|
||||
|
||||
**已完成并接入正式战场,伙伴T2挂件现为10/10。** 设计沿用已选1号 `tidewhale_t2.png`,潮汐鲸T1 Studio模型、22骨Avatar、控制器与Idle/Walk/Attack保持原样;贝壳冠绑定自身头部 `bone_4`。
|
||||
|
||||
## 制作与产物
|
||||
|
||||
| 阶段 | 实际结果 |
|
||||
| --- | --- |
|
||||
| 混元图生3D | 50,000三角面高模;任务 `4b87e19624de4c6c81d2e738b0820277`,源图与高模SHA256见 `production.json` |
|
||||
| 3D Studio初步低模 | 官网低细节/三角面拓扑任务;实际2,922面 |
|
||||
| 3D Studio UV | 将上步下载的同一低模交Studio展开UV,1,603顶点;两项worksId与taskId均已留档 |
|
||||
| 对齐与烘焙 | 对齐原高模,UV哈希前后一致;在Studio UV上烘焙512² diffuse/normal/AO/metallic/roughness |
|
||||
| 最终收尾 | 2,922超过400×1.3,执行保留UV减面至400面,不做本地初步拓扑或重新展开UV;转XPbr后FBX仍400面 |
|
||||
| Unity | Y-up、底面中点原点、局部-Z正面;静态Prefab高0.15m,512² base/mix、Test/XPbr材质;原T1 Variant挂件随头骨运动 |
|
||||
|
||||
正式路径:
|
||||
|
||||
- `AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhaleT2/`:`TideWhaleT2.fbx`、`TideWhaleT2_base.png`、`TideWhaleT2_mix.png`、`.mat`与静态`.prefab`。
|
||||
- 同角色根目录 `TideWhale_T2.prefab`:正式Studio T1的Variant,贝壳冠宽为头部锚区宽的0.55、底部嵌入四分之一冠高;顶点最高约0.611m(T1高0.55m)。
|
||||
- `PrototypeArena.prefab/ Heroes/Hero9/VisualT2`:默认隐藏,与Visual同缩放、第30层;运行时tier2显示T2并隐藏旧占位冠,tier1显示T1。
|
||||
- 中间产物与原始云端回执:`Tools/output/t2_3d/TideWhale/`、`Tools/output/t2_studio/TideWhale/`,不入正式包。
|
||||
|
||||
## 验证
|
||||
|
||||
- `unity_assets.json`:400面、完整UV、512²双贴图、XPbr、原Avatar/控制器/三动作、363个姿态采样中挂件局部变换不变,正式Hero9嵌套与图层通过。
|
||||
- `StaticReview/static_verification.txt`:导入后静态挂件高度0.149994m、底部-0.000002m,在既有2mm容差内,400面及XPbr通过;四向检查确认正面、底座贴合与纹理。
|
||||
- `Review/`、`ReviewWalk/`、`ReviewAttack/`:四向及原动作采样;[overview.png](overview.png)为六格总览,已检查冠的朝向、贴合与随动。低模存在预期的轮廓折面,三枚贝壳及前侧珍珠仍可辨认。
|
||||
- `unity_battle.json`与[battle.png](battle.png):真实PrototypeFlow消费第20关T2 f1权威轨迹的只读夹具,T1/T2切换、占位冠隐藏、有前摇普攻Attack、水罩、暂停、2倍速和缩放后SkillMuzzle通过;没有向真实账号发请求。护盾release==start,无前摇,按现有协议保持Idle;测试将护盾与普攻分开采样。
|
||||
- `BuildT2Visuals.VerifyComplete` 严格确认十套Variant及战场T2节点齐全;57项保护文件(潮汐鲸T1/Studio资源及原九套T2 Variant)SHA256保持不变,清单在 `production.json`。
|
||||
- 最终验证入口在进入Play及域重载后重新启用Pipeline后台tick;快进限制在协议2400tick内,跳过过期表现事件。临时夹具销毁并退出Play,保留原Boot场景、无未保存编辑;未构建Player、重启8080或发布。
|
||||
|
||||
## 复现入口
|
||||
|
||||
1. `D:/UD/AI/XModel/LLM3DGraphics/.venv/Scripts/python.exe Tools/studio_accessory_pipeline.py`:有高模与有效登录时恢复/执行Studio低模与UV、烘焙和XPbr打包。
|
||||
2. 用Pipeline导入三份源文件,运行 `SetupCharacter.Run("Animal/TideWhale", "TideWhaleT2", 0.15)`。
|
||||
3. `BuildT2Visuals.BuildTideWhale` → `ApplyTideWhale` → `VerifyComplete`;仅补潮汐鲸,不重建其他伙伴或整个战场。
|
||||
4. Edit:`VerifyTideWhaleT2.Assets`;Play:`VerifyTideWhaleT2.Battle`。每次进入Play后再次 `set_autotick --enable true`,完成后退出Play。
|
||||
|
||||
此前提交未成功与上传审批暂停属于历史;用户已直接授权本图及后续模型上传腾讯混元/Studio,本轮已完成全流程。微信真机性能仍未因本次编辑器验收而宣称通过。资源登记见ResDesc的Model/Picture/Animation/Config分册。
|
||||
|
After Width: | Height: | Size: 145 KiB |
|
After Width: | Height: | Size: 181 KiB |
|
After Width: | Height: | Size: 172 KiB |
|
After Width: | Height: | Size: 184 KiB |
|
After Width: | Height: | Size: 163 KiB |
|
After Width: | Height: | Size: 179 KiB |
|
After Width: | Height: | Size: 170 KiB |
|
After Width: | Height: | Size: 188 KiB |
|
After Width: | Height: | Size: 149 KiB |
|
After Width: | Height: | Size: 188 KiB |
|
After Width: | Height: | Size: 172 KiB |
|
After Width: | Height: | Size: 184 KiB |
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 227 KiB |
|
After Width: | Height: | Size: 222 KiB |
|
After Width: | Height: | Size: 172 KiB |
@@ -0,0 +1 @@
|
||||
height=0.149994 bottom=-0.000002 triangles=400 XPbr=True; facing verified in front/side/back views
|
||||
|
After Width: | Height: | Size: 841 KiB |
|
After Width: | Height: | Size: 430 KiB |
@@ -0,0 +1,199 @@
|
||||
{
|
||||
"status": "validated",
|
||||
"date": "2026-10-22",
|
||||
"actor": "TideWhale",
|
||||
"highGenerationJob": "4b87e19624de4c6c81d2e738b0820277",
|
||||
"approvedImage": "Doc/Design/Character/TideWhale/T2/tidewhale_t2.png",
|
||||
"approvedImageSha256": "3f535260a97c42432d4fc0bd4fb27970bdb214f00ef5afc4ef331b96bb2f04d1",
|
||||
"high": "Tools/output/t2_3d/TideWhale/tidewhale_t2.glb",
|
||||
"highSha256": "2c569d0a583dd1c3f1830eef1b85cda8dbbe8ea0e3d0fce07aaaa1f9c92a9e10",
|
||||
"highTriangles": 50000,
|
||||
"studio": {
|
||||
"service": "Tencent Hunyuan 3D Studio",
|
||||
"lowpolyWorksId": "44e1b0dcf52449f092f727a06eca1023-0-ae5988f6-dadf-40d9-8506-91ab7ec7",
|
||||
"uvWorksId": "44e1b0dcf52449f092f727a06eca1023-0-6f2f78f2-f5ad-44ee-8cc9-c84b3a16",
|
||||
"lowpolyTaskId": "6781f357-cdbe-11f1-8aa1-32270ef011db",
|
||||
"uvTaskId": "42642541-2a43-4a16-abff-447ce1fcf540",
|
||||
"triangles": 2922,
|
||||
"vertices": 1603
|
||||
},
|
||||
"finalTriangles": 400,
|
||||
"textureSize": 512,
|
||||
"alignment": {
|
||||
"scale": 1.030863346483097,
|
||||
"highMin": [
|
||||
-0.5153369903564453,
|
||||
-0.2379390448331833,
|
||||
-2.0855718929624345e-08
|
||||
],
|
||||
"highMax": [
|
||||
0.512598991394043,
|
||||
0.2951090335845947,
|
||||
0.6040220856666565
|
||||
],
|
||||
"studioMin": [
|
||||
-0.5,
|
||||
-0.2597660720348358,
|
||||
-0.29296907782554626
|
||||
],
|
||||
"studioMax": [
|
||||
0.5,
|
||||
0.25976598262786865,
|
||||
0.2929690182209015
|
||||
],
|
||||
"matrix": [
|
||||
[
|
||||
1.0308634042739868,
|
||||
0.0,
|
||||
0.0,
|
||||
-0.0013689994812011719
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
1.0308634042739868,
|
||||
0.0,
|
||||
0.02858504094183445
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
1.0308634042739868,
|
||||
0.30201107263565063
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"uvHashBefore": "a63077f2a978d91b0f04a4cd856771a7d029dd6ce632260995f7d202079c29c7",
|
||||
"uvHashAfter": "a63077f2a978d91b0f04a4cd856771a7d029dd6ce632260995f7d202079c29c7",
|
||||
"uvUnchanged": true
|
||||
},
|
||||
"decimation": {
|
||||
"triggered": true,
|
||||
"faces_before": 2922,
|
||||
"faces_after": 400,
|
||||
"target_faces": 400,
|
||||
"threshold_percent": 30,
|
||||
"uv_mode": "preserved_no_unwrap",
|
||||
"uv_layers_before": [
|
||||
"UVMap"
|
||||
],
|
||||
"uv_layers_after": [
|
||||
"UVMap"
|
||||
],
|
||||
"uv_bounds_before": [
|
||||
[
|
||||
0.004879831336438656,
|
||||
0.004880666732788086
|
||||
],
|
||||
[
|
||||
0.98685622215271,
|
||||
0.985864520072937
|
||||
]
|
||||
],
|
||||
"uv_bounds_after": [
|
||||
[
|
||||
0.004881010390818119,
|
||||
0.005294587928801775
|
||||
],
|
||||
[
|
||||
0.984697699546814,
|
||||
0.9849569201469421
|
||||
]
|
||||
],
|
||||
"materials_before": 1,
|
||||
"materials_after": 1,
|
||||
"ratio": 0.13689253935660506
|
||||
},
|
||||
"staticExport": {
|
||||
"uvHashBefore": "d1dbc1e81b1e5c211b802ab3b1d0949e5169e0edd5d866d35ed7904ec8bd9167",
|
||||
"uvHashAfter": "d1dbc1e81b1e5c211b802ab3b1d0949e5169e0edd5d866d35ed7904ec8bd9167",
|
||||
"uvPreserved": true,
|
||||
"vertices": 270,
|
||||
"triangles": 400
|
||||
},
|
||||
"coordinates": "FBX Y-up, bottom-centre origin, local -Z front",
|
||||
"bone": "bone_4",
|
||||
"preservedFileCount": 57,
|
||||
"originalsUnchanged": true,
|
||||
"preserved": {
|
||||
"AIClient/Assets/Bundles/Characters/Animal/RockBall/RockBall_T2.prefab": "4feafbe23505f955fa52be61ac7dd3b4e4cf8b7c24faa846eaa553b233fc7f9f",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/FireCat/FireCat_T2.prefab": "4734a5dd6b9779b5a410f2df6f2dfc281395dca8bf8141ddabaf92b053bc7786",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/BudBud/BudBud_T2.prefab": "4de6d2b356cb18c59d686dcb42c2e65e6f575ac916e399db2b49723230462a21",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/SparkBird/SparkBird_T2.prefab": "9ab0190029eda08e4da67f07ebddca01fa21945bf83caf55465087a4742df334",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/BubbleTurtle/BubbleTurtle_T2.prefab": "a5cadb29f4aa2ed91184676e359836a8d13e3d2ad61471aea150f8cf8220fbfe",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/RockRhino/RockRhino_T2.prefab": "eb4439ea10b5e84143080499d6571023a795f730d8daf1cf6f987597ee53a589",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/FlameLion/FlameLion_T2.prefab": "f75839c2c7367585322874bd67ba6810bdbf5f7b81ea61810480d688643e4c25",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/VineSprite/VineSprite_T2.prefab": "8124e3dc9f68285afa796394a1e2c7f4ef6b0c63a6c70025a290725e9d1bfc71",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/ThunderLeopard/ThunderLeopard_T2.prefab": "4525050dc014dd3cbf3b84c3e4ce25ffffa2fecabff90183105beaefc70cc17b",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Anims.meta": "3ffefdafb3b1621d796bcd67acac4ec4b454fbaa58d4dd823add9a92e5ec0873",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Clips.meta": "8a6d9b67b56762fbdcb4b2e7cab28354ada78a3bdfaa698a04c0f507021cfb3c",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Rigged.meta": "9b4b2dfb35f3ad0b40ae84e9c8981ebe7bc069a49d600978d3400c953dafad92",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale.fbx": "cc3ccd8175614e88bc2f908f103be9493cdc733f35c8cb4b112bc64dd2c5743c",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale.fbx.meta": "6b673a86754649423efea785a10e5c17a5796d2124ee45330ae17dda2594a59e",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale.mat": "845d0e54136161c63b9324886147b52c07c0f0bd5413921b7bca71ec0145c7f5",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale.mat.meta": "828ac69cf2c9d620a6ee0e3d42e7fd7ac96eca860c7580ef00dd67bca072a517",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale.prefab": "55b131b6f072ccda35bf360cb10c3e7440a45b4c0bc64f9d92bf7a357e981f9b",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale.prefab.meta": "383484bd86a1a15f8a3b4471ab3ec19dec1cfb199de23bae0d1aca3465d611b1",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale_Animator.controller": "5e4392d180d23007e5ddfec2fddd42b79ff6a7521f3aedc626e9f10d338773f0",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale_Animator.controller.meta": "aeb122fe8a2f832b29d1b5999b99b14f5c472838e8b5d5bf72cc2b1188f235ee",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale_base.png": "162b653fa46501c5dada27e90b063e3c49d4f7ab1d95d70a51a3134743f964fb",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale_base.png.meta": "b292d10130f0afd6a418805c6f4b334cb42b4010cebc715508602d9cdc04f248",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale_Companion.prefab": "31a78311da3256e6d2403d1e334604bde5d492cdeadaccc8ab16df476925b9b9",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale_Companion.prefab.meta": "80ab728693c68de32f2d776705766a182dbbbd82d35987edd820265073061549",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale_mix.png": "8f17f00d139d7d15e57e5dac3e7eced75023d70b2931f8e5376fd316a081bd2c",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale_mix.png.meta": "d893cbb0e37033530ea793afbe0c262457161d552a823428e1ed1553a3875403",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale_Rigged.prefab": "f361865a83654e7fbc473c4a94c25a078cc7b536a9f94695ddfaad5031ec702b",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale_Rigged.prefab.meta": "53855540b88015333a6e721d44b05f40ce3d6830034f14ad37a80dfb8fd936ec",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Anims/TideWhale_Attack.fbx": "047099a424bfe5b7caabf21b72a3417f9635cf67e91a7d0713c15480d55b1443",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Anims/TideWhale_Attack.fbx.meta": "9502091df7e0a3fcd78af4f28af467b1bf12fac8f6c29cead785bf588263ad05",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Anims/TideWhale_Idle.fbx": "1a83720f7467f6fa2179e9e2da01e650d919a368c60b8536edec26317d1f68e9",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Anims/TideWhale_Idle.fbx.meta": "b1faaa717cf042d5cfdcbd9f8f085360439f425b5eaf75ae1bf2bdd1c36abb51",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Anims/TideWhale_Walk.fbx": "a0b7eaca94ebed06e61fbb9202753e7d78b7ea59f320d236970118b4ea72add7",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Anims/TideWhale_Walk.fbx.meta": "dab10f557b5f81b7c665af8be239ab108a482d9cbb7826c976f3c192b59387d4",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Clips/Attack.anim": "5cfbc8167aeb43ddacdbc28765264a315df71369264aba555e257ab218651ec3",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Clips/Attack.anim.meta": "0f27f01d90ca2b9c44ef8879e0cf171cb280c409b81db8df3d1450131a016b1e",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Clips/Idle.anim": "1f685590d5c7b0ef0c4f621a1ad7d79c40b0cd80f704abf3a0d59a00dac7573a",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Clips/Idle.anim.meta": "38b425c33fa405195191af0706a87c963f34ee1faea4919a4355e1199db0d7b8",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Clips/Walk.anim": "77ee1c53b02bbcc276692f0a3f0cc9715bdefe297cbd470664ee98b9bc8f5b8a",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Clips/Walk.anim.meta": "7ad00fb6499ff6b5c127e3a6a9b7bbe36927dee87576d32abc7fdf29ea3d41d8",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Rigged/TideWhale_Rigged.fbx": "a3e9ebf536f8d80b040a77059ef42106711ee35795d6801f26e7c74204fef8be",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/Rigged/TideWhale_Rigged.fbx.meta": "cdc4e90c8b904a748e7303a047ca44697fad1fd688514d55e9d0d757655d6b55",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/Rigged.meta": "862cf0549356c2a372c9aff925d73aca9a6334f771f313f0ae6b438152973463",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/TideWhaleStudio.fbx": "e048f85e7b81544a5e6334e20dab5d42d53d63b447071abf4530781e4a803d71",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/TideWhaleStudio.fbx.meta": "2f4db10b304f562964fbf972efb0028c32bc364fcca2c82232a7a6799f882dd8",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/TideWhaleStudio.mat": "a3158fd306f18707c0a62fe0f706f23b168720db3db421b1c8e03237d3d8b9d6",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/TideWhaleStudio.mat.meta": "cf0c41d7a69786263d7abb23876f10b57ae6fc760fd1999e407fe42dda9d22ed",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/TideWhaleStudio.prefab": "9766dc15009d2204d007943925671cb3b683364267d4d916d16b24fe0965a5ba",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/TideWhaleStudio.prefab.meta": "6dc90d5b79e92952c57c3c4749413ffb27fdfde0a58d9449cad2cbd791548aa2",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/TideWhaleStudio_base.png": "5406f1212bcc8b8607e18678c6d66a19dbbfcec39cb6a95dc3aca3a7df273827",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/TideWhaleStudio_base.png.meta": "a35c35f7ccb553645dc7e4bff06e58f484afa6ddce13357266b3a3866897ce97",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/TideWhaleStudio_Companion.prefab": "64cb0617880f1ec10bea38004a1f33b6ed578bbd832db53e4eb5d97652a36777",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/TideWhaleStudio_Companion.prefab.meta": "dbb8b42a643efe4ad0b7ba53507f840cc433ac126f34421d24b33450e8ba717d",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/TideWhaleStudio_mix.png": "61e3cf4be3cac33ef09d38c0cbecf033b80144b4432f7240f731460b8adcd232",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/TideWhaleStudio_mix.png.meta": "aaee1848e2633a3e0c64b4cf939d2eca91434788a4f5c6e27d2e9739c5b9e595",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/Rigged/TideWhaleStudio_Rigged.fbx": "4539cfa787ba60d78c613d40000ab2178a3d538b81acf144c5744f3e9bcaf809",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhaleStudio/Rigged/TideWhaleStudio_Rigged.fbx.meta": "9235257b884540beafd1bcea23c5702609248dbcc11d9f51769abddf44a1202e"
|
||||
},
|
||||
"outputs": {
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhaleT2/TideWhaleT2.fbx": "0f0e4b85421edd1899484413a92340f77ce903e4da24d5ca8c3adf119b5cb450",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhaleT2/TideWhaleT2.fbx.meta": "79e187f932f40a914fadf7ad30cd16fa231452aecbf0c34d477e48fc4d5b39b6",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhaleT2/TideWhaleT2.mat": "1b1bd1fd7b1af47bb55c097127f92ebbecf47bafd88964949b3b50f565ff2450",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhaleT2/TideWhaleT2.mat.meta": "57ae39e8ccf95ebdd675f88b47693e8dd7fce688a340cee1b97ab81d613c0269",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhaleT2/TideWhaleT2.prefab": "596e990b5ed174ebc6298c6ef9e4a226e090fa8987d10fc22ce8f795a732e8c6",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhaleT2/TideWhaleT2.prefab.meta": "811bb55535d8cb9fd78b7eae3170cd35b15f828c99f1217db94ea0811abfee0a",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhaleT2/TideWhaleT2_base.png": "2623aaacfb24a394d26e882620b6f1e39c24629695296f84251b44828f433d9d",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhaleT2/TideWhaleT2_base.png.meta": "84b46284d7db6a628484dfd4403282050652db6ec8a68f0db72080b40e19ffa8",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhaleT2/TideWhaleT2_mix.png": "4d3a3509991d0c1c8250a1e398f5ac52c141ca1b84cfa4d2b329cc460a550fab",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhaleT2/TideWhaleT2_mix.png.meta": "75d80874b35904122021394cc4700a70b00bc2294a4c18487a99873d9b6d80eb",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale_T2.prefab": "9bccf14215a716fb1028eb9249fc6914e75e5f6a21373518ce209e35ffadd7c5",
|
||||
"AIClient/Assets/Bundles/Characters/Animal/TideWhale/TideWhale_T2.prefab.meta": "cf3e862af7a036c5c47dfe1c03bca5b71399e50ea62e53b65a0a819033fa9222"
|
||||
},
|
||||
"unityAssets": "unity_assets.json",
|
||||
"unityBattle": "unity_battle.json",
|
||||
"networkAccountWrites": false,
|
||||
"playerBuilt": false
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"triangles": 400,
|
||||
"uvVertices": 274,
|
||||
"textureSize": 512,
|
||||
"bone": "bone_4",
|
||||
"originalAvatar": true,
|
||||
"originalController": true,
|
||||
"originalThreeClips": true,
|
||||
"poseSamples": 363,
|
||||
"arenaHero": 9,
|
||||
"inactiveByDefault": true,
|
||||
"layer": 30
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"authoritative": true,
|
||||
"stage": 20,
|
||||
"trace": "stage_20_t2_f1.json",
|
||||
"formation": [
|
||||
0,
|
||||
2,
|
||||
5,
|
||||
7,
|
||||
9,
|
||||
8
|
||||
],
|
||||
"t1T2Toggle": true,
|
||||
"placeholderHidden": true,
|
||||
"attack": true,
|
||||
"waterShield": 1,
|
||||
"pause": true,
|
||||
"doubleSpeed": true,
|
||||
"scaledMuzzle": true,
|
||||
"networkAccountWrites": false
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"editor": {
|
||||
"status": "ready",
|
||||
"compiling": false,
|
||||
"domainReloadInProgress": false,
|
||||
"playMode": "stopped",
|
||||
"lastHeartbeat": "2026-10-22T02:27:07.2450338Z",
|
||||
"projectPath": "D:\\UD\\AI\\AIGame\\AIClient",
|
||||
"unityVersion": "2022.3.62f3"
|
||||
},
|
||||
"scenes": {
|
||||
"count": 1,
|
||||
"scenes": [
|
||||
{
|
||||
"name": "Boot",
|
||||
"path": "Assets/Scenes/Boot.unity",
|
||||
"isLoaded": true,
|
||||
"isDirty": false,
|
||||
"isActive": true,
|
||||
"rootCount": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
"consoleGroundTruth": {
|
||||
"sampledUtc": "2026-10-22T02:27:07.2450338Z",
|
||||
"ageMs": 163,
|
||||
"compilationFailed": false,
|
||||
"compiling": false,
|
||||
"consoleErrors": 0,
|
||||
"consoleWarnings": 0,
|
||||
"consoleLogs": 18,
|
||||
"seeded": true
|
||||
},
|
||||
"preservedFiles": 57,
|
||||
"originalsUnchanged": true,
|
||||
"playerBuilt": false,
|
||||
"networkAccountWrites": false
|
||||
}
|
||||
@@ -65,3 +65,8 @@ Unity Pipeline (Play): VerifyPartnerSkillFx.Behavior / ContactSheet
|
||||
Unity Pipeline (Play): VerifyBattleRuntime.VisualSkills
|
||||
Unity Pipeline (Stop): VerifyPartnerSkillFx.Finish / VerifyBattleRuntime.Assets
|
||||
```
|
||||
|
||||
|
||||
## 混音试听交付(2026-10-22)
|
||||
|
||||
已补齐5份技能/UI离线混音试听,涵盖菜单、9种技能单项、1×/2×第20关T2轨迹与密集叠加;保持正式增益、不限幅不归一化,所列样例零越界,最高4倍过采样峰值-3.47dBFS。具体文件、听审关注点及方法边界见 [MixReview/Production.md](../../Sound/MixReview/Production.md)。Unity实录尝试超时并已恢复干净Boot场景;产物不冒充实录,主观听感和微信设备验收仍待确认。正式技能单路仅0.0375,单音峰值约-30dBFS,已标记技能被敌人反馈遮蔽的听审关注点;未改变正式混音。
|
||||
|
||||
@@ -62,3 +62,8 @@ Unity Pipeline:`BuildBattleSkills.Build`(制作/挂点)、`VerifyBattleR
|
||||
|
||||
## 后续完成:伙伴专属技能表现(2026-10-21)
|
||||
上文记录的“专属特效/余四条音效待补”已完成:新增十种伙伴专属Prefab、四条TangoFlux音效,正式池现为15类/76根实例/8音源/9音效/10角色配置。治疗与减速也消费权威事件播放,真实轨迹23例、复用/去重/清理与正式战场截图通过。详见 `../PartnerSkills/Production.md`。微信真机性能、内存与主观混音仍待验收。
|
||||
|
||||
|
||||
## 技能/UI试听收尾(2026-10-22)
|
||||
|
||||
9/9声音与运行时契约复核通过。5份保持正式音量的离线混音试听及技术报告已交付,见 [MixReview/Production.md](../../Sound/MixReview/Production.md)。这是离线重建,不能替代实录、主观听审或微信真机验收;潮汐鲸T2外观已于本日获直接授权后完成Studio低模/UV及正式接入,见角色T2制作记录。
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 火喵/岩团团技能闭环样例
|
||||
|
||||
2026-10-21完成独立样例。五敌人 Studio 模型已替换正式 PrototypeArena;本页的新技能逻辑则在独立验收场景运行。主线仍是 battleRules=2,未接 battle.begin/battle.events,未重启或部署开发服,未改变旧在途挑战、账号或奖励协议。
|
||||
2026-10-21完成独立样例。五敌人 Studio 模型已替换正式 PrototypeArena;本页的新技能逻辑则在独立验收场景运行。本页记录独立样例批次结束时的历史状态:当批主线为battleRules=2且未接网络轨迹;后续已完成正式权威协议与9/9技能声音,最新状态见 `../Runtime/Production.md` 与 `../PartnerSkills/Production.md`。
|
||||
|
||||
## 已完成
|
||||
|
||||
@@ -32,7 +32,7 @@ Unity经Pipeline依次运行 `BuildSkillSlice.Build`、`VerifySkillSlice.Assets`
|
||||
|
||||
## 后续接入边界
|
||||
|
||||
完整25技能、治疗/减速、多路波次、trace分页和网络协议兼容仍待实现;不能把独立样例视为 battleRules=3 主线迁移完成。下一阶段将该内核接入服务端授权战斗与冻结配置,客户端加载权威轨迹,覆盖10伙伴/20关平衡及旧挑战恢复后再切换规则。当前计划音效清单为5/9已生成,Heal/Slow/Lightning/EnemyHit仍待制作。TangoFlux权重依项目指南为非商业研究用途,保留许可核查边界,未宣称商用放行。
|
||||
当批尚未完成25技能、治疗/减速、多路波次、trace分页和协议兼容,声音为5/9;后续已完成上述权威协议及10伙伴/20关运行时接入、9/9声音,不再列作当前待办。样例本身仍只是独立验收证据,正式规则与兼容边界见下节。TangoFlux权重依项目指南为非商业研究用途,保留许可核查边界,未宣称商用放行。
|
||||
|
||||
|
||||
## 权威技能协议与正式战场接入(2026-10-21)
|
||||
|
||||
@@ -202,16 +202,16 @@ proposal文件显式 `runtimeEnabled=false`,现有CMake和客户端加载器
|
||||
|
||||
表现测试至少覆盖:动画丢标记仍只发一次、动画播放速度、粒子挂点与世界空间、音频延迟/静音/抢占、异步资源过期返回、对象池Trail清空、暂停恢复、后台恢复时跳过过期声音、BattleEnded彻底清理。最终在竖屏实际战斗相机与微信目标设备测资源加载、活跃音源、粒子透明叠加及帧耗;开发机截图通过不等同实机性能通过。
|
||||
|
||||
配置校验命令:`python Tools/validate_skill_design.py`。测试命令:`python -m unittest discover -s Tools/tests -p test_skill_design.py`。报告位于 `Tools/output/skill_system_design/validation.json`,状态design_contract_validated仅表示设计配置通过,runtimeIntegrated和generatedAudio仍为false。
|
||||
配置校验命令:`python Tools/validate_skill_design.py`。测试命令:`python -m unittest discover -s Tools/tests -p test_skill_design.py`。报告位于 `Tools/output/skill_system_design/validation.json`,该proposal报告的design_contract_validated仅表示历史设计契约通过;其中runtimeIntegrated/generatedAudio=false不代表正式运行时未接通。正式状态使用 `Tools/validate_skill_runtime.py`(runtimeIntegrated=true、generatedAudio=true、9/9声音)。
|
||||
|
||||
## 已落地的敌人表现批次(2026-10-21)
|
||||
|
||||
五类敌人的攻击与普通/硬甲/护盾受击表现已作为现有battleRules=1/2的适配层接入。实际完成8套特效、8条TangoFlux短音效、32实例/8音源播放池;真实PrototypeFlow隔离战斗及暂停/倍速/静音通过。完整制作记录见 [EnemyCombatFx/Production.md](EnemyCombatFx/Production.md)。此前BattleSkills的9条计划音效清单仍保持原计划状态,不能与本批8条敌人音效混算;battleRules=3技能逻辑内核、动作冲击相位与伤害同步、伙伴元素技能仍按上文阶段实施。
|
||||
五类敌人的攻击与普通/硬甲/护盾受击表现已作为现有battleRules=1/2的适配层接入。实际完成8套特效、8条TangoFlux短音效、32实例/8音源播放池;真实PrototypeFlow隔离战斗及暂停/倍速/静音通过。完整制作记录见 [EnemyCombatFx/Production.md](EnemyCombatFx/Production.md)。当批BattleSkills另有9条计划声音,不与本批8条敌人声音混算;后续已完成battleRules=3权威技能运行时、十伙伴表现和9/9技能声音,见本页末正式接入记录。
|
||||
|
||||
|
||||
## 五敌人战场替换与技能闭环样例(2026-10-21)
|
||||
|
||||
火喵与岩团团已完成独立 C++ 事件轨迹→Unity 时钟/动作/5类特效/5条TangoFlux音效的可运行样例,详见 [SkillSlice/Production.md](SkillSlice/Production.md)。这一步未接主线 battle.begin/events,未切换 battleRules=3;原25技能的全关迁移仍待完成。计划音效清单现为5/9已生成、4/9待制作;正式主线与独立样例状态分别记录。
|
||||
火喵与岩团团已完成独立 C++ 事件轨迹→Unity 时钟/动作/5类特效/5条TangoFlux音效的可运行样例,详见 [SkillSlice/Production.md](SkillSlice/Production.md)。当批独立样例尚未接主线;后续已完成battle.begin/events协议、25技能全关迁移和9/9音效,下节记录正式状态。
|
||||
|
||||
|
||||
## 权威技能协议与正式战场接入(2026-10-21)
|
||||
|
||||
@@ -1,6 +1,16 @@
|
||||
# G0 玩法原型实现记录
|
||||
|
||||
更新日期:2026-10-20。对应 [GameDesign.md](../../GameDesign.md) 的 G0 阶段,用于验证核心循环与操作手感,不等同于完整 P0 或正式服经济系统。
|
||||
更新日期:2026-10-22。本页按时间保留G0→G3实施历史;下列日期章节中的“当前/仍待”仅指该批次结束时,不应直接当作最新待办。不等同于完整P0或正式服经济系统。
|
||||
|
||||
## 当前状态(2026-10-22)
|
||||
|
||||
- 内容已扩至10伙伴/20主线关/三路线六槽;伙伴与五类敌人已采用正式模型,战场已替换为正式美术。伙伴Studio采用情况见 [CompanionStudioBatch.md](Character/CompanionStudioBatch.md)。
|
||||
- 正式权威战斗已接通25技能、20主线关和5属性挑战;新客户端使用combatProtocol1/快照rulesVersion3,旧客户端与旧在途战斗保留兼容路径。见 [Runtime/Production.md](Combat/Runtime/Production.md)。
|
||||
- 十伙伴专属VFX与9/9技能声音已入库并接入;UI采用v3合成音效且已接入。五份混音试听及技术检查已补齐,属于离线重建,主观听审与微信真机性能仍待验收。见 [MixReview/Production.md](Sound/MixReview/Production.md)。
|
||||
- T2挂件已完成10/10:用户直接授权后,潮汐鲸完成混元高模→3D Studio初步低模/UV→512²烘焙→保留UV收尾400面→头骨挂件与Hero9接入。三动作随动、T1/T2切换及第20关权威战斗暂停/双速通过。见 [TideWhale/T2/Production.md](Character/TideWhale/T2/Production.md)。
|
||||
- 首日新账号仅用三只T1教学伙伴走通1-1~1-5;更广的经济/微信设备验收未据此宣称完成。未构建Player或发布生产服。
|
||||
|
||||
## G0历史快照(以下保留原实现记录)
|
||||
|
||||
## 已实现
|
||||
|
||||
@@ -276,7 +286,7 @@ UI按双列/双行重排:伙伴、捕捉、背包材料、营地休息区为2
|
||||
|
||||
验证:原生4335项断言通过,覆盖10/20配置校验、schema8→9迁移、十伙伴捕捉池与保底、20关顺序解锁与推荐等级通关、六处首通掉落、16并发与日志故障回滚;HTTP隔离进程24并发弹珠/邮件/宝箱重试、重启回执与账户隔离通过。C++/Unity对照227组一致(120胜/107负),包含十伙伴技能与20关矩阵;十六个Prefab字体/九宫格通过。实际EventSystem点击走通两章标签切换、十伙伴/捕捉/宝箱列表与首页入口,检查截图`roster_*.png`。真实开发账号与备份比对仅schema/revision变化,钱包80金币/40糖果/48弹珠、等级与操作日志不变;8080开发服已重建并迁移,未构建Player或部署生产服。
|
||||
|
||||
仍待完成:设置面板的音效资源、T2正式外观、正式战场、G3真机性能与微信验收。
|
||||
本批次结束时遗留设置音效、T2外观、正式战场及G3真机/微信验收;后续已完成UI声音、正式战场和9/10 T2挂件,最新缺口见页首。
|
||||
|
||||
### 主界面音乐选用与接入(2026-10-20)
|
||||
|
||||
@@ -342,21 +352,21 @@ UI 音效换成 v2 一次性短音效(0.12~0.8 秒)并接入运行时。`U
|
||||
|
||||
好友页在双方已是好友、并且自己通过 1-1 之后,可以对这位好友寻宝。每天 3 次,同一位好友每天一次。服务器按自己的通关数从活动池发奖:1 关 10 金币,4 关 20 金币,10 关 30 金币和 5 糖果。客户端不能指定抽到哪一件。奖励不加给对方,也不减少对方的金币、弹珠或装饰。同一请求重放不重复入账。进行中的战斗也可以寻宝。存档从 schema 13 迁到 14 时只补 0 次,不发奖励。突袭仍会播放战斗,这次没做。服务端 `game_tests` 5192 项断言通过,覆盖未结交、未通关、伪造事件、战斗进行中发奖、对方营地不变、重放、同一营地当天一次、每日 3 次、次日恢复、10 关分档和空迁移。8080 已在 2026-10-21 20:38 重启,重启前备份为 `AIServer/data/aiserver-before-schema14-20261021-203836.db` 及其 wal、shm。未向真实账号发送请求;玩家下次进入时迁到 schema 14,只补 0 次寻宝。未改伙伴模型和战场。
|
||||
|
||||
- 2026-10-21 伙伴 T2 进化外观:T1 模型+骨骼挂件(9/10,潮汐鲸待混元额度),战斗按 tier 切换 Visual/VisualT2;隔离 18081 全 T2 阵容 1-5 实战通过。
|
||||
- 2026-10-21 伙伴 T2 进化外观:T1模型+骨骼挂件完成9/10,潮汐鲸当批提交未成功;2026-10-22用户直接授权后已补齐潮汐鲸Studio低模/UV挂件,全量10/10完成,状态见页首。战斗按tier切换Visual/VisualT2;此前隔离18081全T2阵容1-5实战通过不代表潮汐鲸挂件已完成。
|
||||
|
||||
|
||||
## 五敌人战场替换与技能闭环样例(2026-10-21)
|
||||
|
||||
五类敌人的 Studio 低模已替换正式战场,原Avatar/控制器/三动作不变;45个模型引用、尺寸/贴地和五类型 Walk/Attack、攻击受击反馈通过。保留现有伙伴及T2,不重建整体战场。
|
||||
|
||||
火喵/岩团团独立技能样例实现 C++ 50ms整数tick逻辑、动作通道和阶段、投射物到达伤害、护盾及特效音效播放。C++30项检查、Unity1×/2×/暂停/低帧率最终状态一致、静音和清理通过;生成5条TangoFlux音效。生产服务器和主线仍旧规则,未进行网络轨迹协议接入或20关规则迁移。记录 `Doc/Design/Combat/SkillSlice/Production.md`。
|
||||
火喵/岩团团独立技能样例实现C++ 50ms整数tick逻辑、动作通道和阶段、投射物到达伤害、护盾及特效音效播放。C++30项检查、Unity1×/2×/暂停/低帧率最终状态一致、静音和清理通过;当批生成5条TangoFlux音效。当时尚未接主线网络协议,后续已完成下节权威协议与20关迁移、9/9声音,不再列为当前未完成项。记录 `Doc/Design/Combat/SkillSlice/Production.md`。
|
||||
|
||||
|
||||
## 权威技能协议与正式战场接入(2026-10-21)
|
||||
|
||||
新客户端battle.begin/challenge.begin声明combatProtocol1,服务端冻结25技能与配置、结果和事件,分页只读获取。PrototypeBattle.Trace仅应用权威事件,统一动作/特效/音效及数据时钟;旧客户端与旧战斗仍走原规则。正式战场持久化技能池和19个可调挂点,T2缩放同步。
|
||||
|
||||
120组C++关卡/进化/阵容矩阵覆盖25技能;23份跨关轨迹在C#最终状态与统计一致;18083真实UI全T2的1-5经服务重启恢复相同场次,实播/结算通过。8080开发服已更新,旧程序与SQLite一致性备份保留,全部game_states核对不变。制作记录 `Doc/Design/Combat/Runtime/Production.md`。未发布Player或生产服,真机性能与完整伙伴专属音效特效仍待完成。
|
||||
120组C++关卡/进化/阵容矩阵覆盖25技能;23份跨关轨迹在C#最终状态与统计一致;18083真实UI全T2的1-5经服务重启恢复相同场次,实播/结算通过。8080开发服已更新,旧程序与SQLite一致性备份保留,全部game_states核对不变。制作记录 `Doc/Design/Combat/Runtime/Production.md`。后续已补齐十伙伴专属特效与9/9声音;未发布Player或生产服,真机性能与主观混音听审仍待验收。
|
||||
|
||||
|
||||
### 2026-10-21:伙伴技能表现补齐
|
||||
@@ -365,3 +375,8 @@ UI 音效换成 v2 一次性短音效(0.12~0.8 秒)并接入运行时。`U
|
||||
### 2026-10-21:最新技能规则的首日前五关验收
|
||||
|
||||
隔离新账号只用初始岩团团/火喵及教学芽芽,正常两次发射、训练至Lv.5、领取基础补给和推荐布阵,真实UI走通1-1~1-5,全程T1,无资源或通关状态预置。五份权威轨迹哈希、结果、奖励、统计和最终钱包与C++事务路径一致;重打1-5不重复发奖。最终金币720/糖果110/弹珠62。修复训练资源不足时仍要求直接训练的引导及隐藏敌人Animator逐帧警告,专项UI/实战通过。新增首日CTest,四组服务端回归通过。结果与边界见 [G3/FirstFiveAcceptance.md](G3/FirstFiveAcceptance.md)。真实账号恢复,18085测试服关闭,Boot无脏状态;未构建Player或重启8080,真机性能仍待测。
|
||||
|
||||
|
||||
### 2026-10-22:收尾复核与过期描述清理
|
||||
|
||||
复核25技能正式契约和9/9音效来源/成品哈希,通过。补齐5份技能/UI离线混音试听及零削波检查,记录正式技能单路偏低的听审关注点;没有把技术检查算作主观听审。旧文档中的“仅计划/5条声音/未接正式协议/芽芽旧草稿待验收”已更新或标明历史边界。潮汐鲸T2在用户直接授权后已完成高模、Studio初步低模/UV、400面512²挂件及正式Hero9接入,全量10/10;新回执见角色T2制作记录。Unity音频实录尝试超时后恢复为唯一Boot、非Play且无脏内容;当前音乐/音效均开启,原音效开关值未能在中断后重新核验。未构建Player、重启8080或发布生产服。
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
# HomeCamp 主界面营地场景
|
||||
|
||||
## 范围与视觉基准
|
||||
|
||||
2026-10-23,用户确认按当前主界面背景还原近景广场、房屋和喷泉。视觉基准为 `AIClient/Assets/Bundles/UI/Bg/home_camp.png`,保留奶油墙、橙红屋瓦、黄白遮阳棚、浅色石路、蓝色喷泉和前景草地。沿用竖屏 1080×1920 的固定机位。
|
||||
|
||||
湖泊、瀑布、远山与城堡使用独立远景图片面片,不生成复杂远景模型。首版交付独立可编辑场景;首页 HUD 接入另行验收,保留现有首页。
|
||||
|
||||
分件图由内置 imagegen 参考当前背景生成,完整提示词见 `design_prompts.json`。主屋、侧屋、喷泉和地表均为白底独立分件;`backdrop.png` 是实际远景贴图,按用途全幅绘制景色,不是白底图生模型输入。
|
||||
|
||||
## 近景组件清单
|
||||
|
||||
| ID | 设计图 | 最终三角面 | 贴图 | 场景用途 |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| ground | `ground.png` | 8303 | 1024² XPbr | 五步产物保留供审核,表面质量不通过,未摆入交付场景 |
|
||||
| mainhouse | `mainhouse.png` | 1981 | 1024² XPbr | 中后方主屋;两侧缩小复用,三实例 |
|
||||
| cottage | `cottage.png` | 2995 | 1024² XPbr | 五步产物保留供审核,表面质量不通过,未摆入交付场景 |
|
||||
| fountain | `fountain.png` | 1795 | 1024² XPbr | 中央圆池与两层小碗喷泉 |
|
||||
|
||||
连续地表为五步流程后的编辑收尾资产 `GroundSurface.asset/.prefab`:Unity Pipeline 创建持久化的 2 三角面顶面和非凸 MeshCollider,覆盖 36×42m;`ground_surface.png` 是内置 imagegen 另绘的正俯视地表颜色贴图,提示词见 `ground_surface_prompt.txt`。它不是 Studio 地表 UV 的延续,未把失败的 Studio 地表称作通过验收。
|
||||
|
||||
路灯和长椅通过隔离四向检查后复用 TownSquare 资产。两套旧树木/灌木均有烘焙黑斑,未用于交付;树木与花边改为 `tree_card.png` / `flower_card.png` 透明图片面片,Unlit AlphaClip、无碰撞和投影,提示词见 `foliage_prompts.json`。首版不含告示牌、拱门和围栏。
|
||||
|
||||
## 用户指定的五步模型流程
|
||||
|
||||
1. **混元网页生成高模**:每张白底分件图生成一份 50k GLB,保留任务号、日志、原始高模与哈希。
|
||||
2. **3D Studio · 低模生成**:输入同一分件的高模,使用官网 Studio 低模功能,记录低模任务号和实际三角面数。
|
||||
3. **3D Studio · UV 展开**:对上一步 Studio 低模展开 UV,记录 UV 任务号并校验输出。不得用 Blender 自动 UV 替代此步骤。
|
||||
4. **Blender · 贴图烘焙**:先将 Studio 居中/归一化后的低模对齐到其确切来源高模,保留 Studio UV,烘焙颜色、法线、AO、金属度、粗糙度,再打包 XPbr base/mix。
|
||||
5. **超出目标 30% · Blender 保留 UV 减面**:仅当实际三角面数严格大于目标×1.30 时触发,减至目标附近;未超过阈值则明确登记为跳过。保留现有 UV 和已烘焙贴图,不重新展开 UV。
|
||||
|
||||
所有模型完成上述流程后统一导出 Y-up、底面中心原点、局部 -Z 正面的 FBX。在 Unity 四向检查正面;不能用运行时旋转修补源模型坐标。地表另验水平顶面、厚度和可行走区域,防止生成竖直薄板后未经检查直接摆入场景。
|
||||
|
||||
复用依据:`Tools/studio_accessory_pipeline.py` 与 `Tools/campguide_studio_mesh.py` 已有第 02~05 步实现;`Tools/studio_lowpoly_trial.py` 含同源对齐、Studio UV 与 30% 阈值逻辑。它们目前分别面向挂件和角色,后续应提取静态场景入口,不能直接把 HomeCamp 当角色或 T2 挂件发布。
|
||||
|
||||
## 初始布局(模型验收后微调)
|
||||
|
||||
坐标为 Unity 世界坐标,单位米;相机从 -Z 看向 +Z,建筑正面局部 -Z 朝向广场。物件实际 Y 由地表碰撞向下投射确定,清单 Y=0 只是布局参考。
|
||||
|
||||
| 对象 | 初始 X/Z | 尺寸参考 | 朝向 |
|
||||
| --- | --- | --- | --- |
|
||||
| Ground | 0 / 0 | 连续 36×42m,前侧为 -Z 草地 | 地表顶面朝 +Y |
|
||||
| MainHouse | 0 / 7.2 | 高约 6.5m | 门朝广场中央 |
|
||||
| HouseLeft | -7.5 / 4 | 主屋缩小至高约 4m | 门朝中央略内转 |
|
||||
| HouseRight | 7.5 / 4 | 同一主屋 Prefab 复用 | 门朝中央略内转 |
|
||||
| Fountain | 0 / 0.8 | 池直径约 4.5m、高约 2.3m | 旋转对称 |
|
||||
| Bench / Lamps / Trees | 广场边缘 | 复用既有组件 | 避让门口和中央活动区 |
|
||||
|
||||
相机初始位置 `(0, 15, -27)`,看向 `(0, 1.8, 3)`,透视 FOV 48°。最终以 1080×1920 对照背景调构图,保证中央喷泉、后方主屋、左右侧屋和前景草地可辨识;长屏额外检查上下裁切。
|
||||
|
||||
## 远景面片
|
||||
|
||||
`backdrop.png` 已绘制独立湖泊/瀑布/城堡远景,禁止把整张含广场背景直接贴在后面造成重复房屋和喷泉。
|
||||
|
||||
通过 Unity Pipeline 创建并保存 Quad + Unlit 材质,放在近景后方,调整面片位置、尺寸与 UV,使竖屏视锥内右侧城堡和瀑布均可见;不把横图直接居中裁掉右侧地标。不加碰撞、不投影、不受近景灯光二次照明。用两侧树冠及后排屋顶遮住底部衔接边,保持相机固定;首版不增加天空盒和复杂视差层。
|
||||
|
||||
## Unity 交付与验收
|
||||
|
||||
- 资产计划目录:`AIClient/Assets/Bundles/Scenes/Town/HomeCamp/`。
|
||||
- 中间件:`Tools/output/homecamp_3d/`、`Tools/output/homecamp_studio/`。
|
||||
- 目标:组件 Prefab、`HomeCamp.prefab`、独立 `HomeCamp.unity` 及竖屏验收截图。
|
||||
- 所有导入、材质、碰撞体、Prefab 和场景制作走 Unity Pipeline,不直接改 `.meta/.unity/.prefab/.mat`。
|
||||
- 地表使用非凸 MeshCollider,验证贴地、门口可达、模型穿插和喷泉池遮挡。
|
||||
- 场景和面片在编辑器持久化,不用运行时代码临时拼业务场景。
|
||||
- 图片登记到 `Doc/ResDesc_Picture.md`;模型实际产出后再登记 Model,不能提前声称模型完成。
|
||||
|
||||
## 当前状态
|
||||
|
||||
用户已明确回复“确认授权上传”,授权向 `https://3d.hunyuan.tencent.com/` 上传四张近景分件图及其衍生模型,执行网页高模、Studio 低模与 UV 处理。此前的审批拦截已因新增明确授权解除。
|
||||
|
||||
四个 50k 档高模及 Studio 低模/UV、Blender 烘焙、条件减面均已执行;任务号、哈希、实际面数和逐步回执记录到 `homecamp_scene_manifest.json` 及各组件 `production.json`。
|
||||
|
||||
Studio GLB 在法线和 UV 接缝处拆分顶点,直接减面会删除碎片。新增 `bl_decimate_homecamp_uv.py` 先焊接重合几何顶点、校验逐面 UV 仍保留,再减面;`bl_repair_homecamp_surface.py` 统一面朝向,不生成新 UV。最后对保留 UV 的最终低模补同源投射烘焙。主屋/喷泉最终 1981/1795 面;侧屋预算从1800改为3000,最终2995;地表保留8303面并以6500预算的130%容差跳过减面。旧预算尝试回执保留,不能把它们当最终通过结果。
|
||||
|
||||
侧屋和 Studio 地表仍有表面瑕疵,**仅保存制作/审核资产,没有摆入交付场景**。交付场景采用通过外观检查的主屋三实例和喷泉,地表用连续顶面编辑收尾。`Test/HomeCampXPbr` 是项目 XPbr 的独立双面版本,仅供 HomeCamp 材质使用,未修改原 XPbr Shader。
|
||||
|
||||
场景静态入口为 `Tools/homecamp_model_pipeline.py --part <ground|mainhouse|cottage|fountain>`,使用 `D:/UD/AI/XModel/LLM3DGraphics/.venv/Scripts/python.exe` 运行。每件资产的五步回执位于 `Tools/output/homecamp_studio/<part>/production.json`;重复执行校验来源与配置并复用已完成阶段。
|
||||
|
||||
Unity 入口为 `AIClient/AgentScripts/BuildHomeCamp.cs`:`BuildAssets` 导入和制作组件,`CaptureParts` 四向验收,`Build` 持久化拼装并渲染两种竖屏尺寸,`Verify` 验证面数、XPbr、地表碰撞与无碰撞的 Unlit 远景。通过 Pipeline 的 `run_script` 执行,构建用 Additive 临时场景并恢复原场景;初始 `Boot.unity` 没有未保存编辑。
|
||||
|
||||
## 首版交付与验证结果
|
||||
|
||||
- 场景:`AIClient/Assets/Bundles/Scenes/Town/HomeCamp/HomeCamp.unity`。
|
||||
- 总 Prefab:同目录 `HomeCamp.prefab`;31处布局记录见 `Tools/output/homecamp_review/assembly.txt`。
|
||||
- 标准竖屏与长屏截图:`Tools/output/homecamp_review/homecamp_portrait.png` / `homecamp_tall.png`。
|
||||
- 验证:`Tools/output/homecamp_review/verification.txt`,实际拼装 **9987 三角面**,连续地表 **25/25** 射线采样通过,远景 Unlit、无碰撞、不投影;独立场景未加入 Build Settings。
|
||||
- Pipeline 制作脚本编译无诊断;基于本轮起始 cursor=382 查询 Console,未新增 error。Boot 场景仍为 `dirty=False`。
|
||||
- 当前交付是固定相机静态场景,尚未替换首页背景或接入角色行走;未构建或发布 Art/Player,未做真机性能验收。长屏会裁掉部分边缘房屋/远景,正式首页接入时仍需按机型调整相机。
|
||||
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"generator": "built_in_imagegen",
|
||||
"referenceImage": "AIClient/Assets/Bundles/UI/Bg/home_camp.png",
|
||||
"transparentBackground": false,
|
||||
"assets": [
|
||||
{
|
||||
"id": "mainhouse",
|
||||
"output": "Doc/Design/Scene/HomeCamp/mainhouse.png",
|
||||
"prompt": "Use case: stylized-concept. Create ONE isolated 3D game asset design, the CENTRAL LARGE HOUSE from this reference village, for image-to-3D modeling. Match the house silhouette and style: warm cream stucco walls, orange terracotta rounded roof tiles, two story central gable, a single cream chimney on left roof, small round attic vent, arched upper window with wooden flower box, large arched wooden front door with a pale stone arch surround, modest low one-story roof extensions to either side, small wall-mounted golden lanterns. Show full building from slightly above front in a 3/4 view, centered with generous white margin; architectural back/side mass must be coherent. Keep the central house visually recognizable from the reference. Pure #FFFFFF background, no ground, no pedestal, no village, no fountain, no trees, no detached flowerpots, no people, no animals, no labels or text, no cast shadow on background. A single connected house, pleasantly rounded hand-painted Candy game look, detailed enough for texture baking but clear simple forms. Square image."
|
||||
},
|
||||
{
|
||||
"id": "fountain",
|
||||
"output": "Doc/Design/Scene/HomeCamp/fountain.png",
|
||||
"prompt": "Use case: stylized-concept. Make a single isolated image-to-3D game asset design of the round stone fountain in the reference image. Preserve the reference fountain: wide low circular basin of warm pale cream cut stone blocks, turquoise blue water visible within, one tapering carved central pedestal with two small tiered bowls and a very modest water spout at the top. NOT a giant three tier wedding cake fountain. Small village fountain, broad basin and short central tiers. Slightly elevated 3/4 front view showing the entire circular footprint. Cheerful rounded Candy game art matching the reference, high quality softly lit textured 3D render. Exactly one fountain on a pure white #FFFFFF background. No surrounding flower ring, no flowers, no paving, no ground, no floor or separate pedestal, no houses, no trees, no people, no text. Fountain stone and blue water only; compact continuous shape suitable for image-to-3D."
|
||||
},
|
||||
{
|
||||
"id": "cottage",
|
||||
"output": "Doc/Design/Scene/HomeCamp/cottage.png",
|
||||
"prompt": "Use case: stylized-concept. Create exactly ONE isolated small market cottage game asset design matching the side cottages in this village reference. One story warm creamy plaster cottage, compact rectangular plan, orange terracotta gabled roof with round tiles, small cream chimney, a round attic vent, arched small window and wooden entrance door. In front attached to the facade is a charming yellow and white striped canvas awning supported by two wooden posts over ONE compact wooden fruit counter with a few oranges and baskets. Simple readable continuous building, preserve the warm cream / orange / golden yellow palette and rounded hand-painted Candy game style of the reference. Full cottage visible from slightly above in 3/4 front view, centered with white space. Pure white #FFFFFF background, no terrain, no village, no additional houses, no ground tile or pedestal, no fountain, no detached props, no people or animals, no words or watermarks, no cast shadow on the white backdrop. For image-to-3D modeling, clear silhouette and full roof."
|
||||
},
|
||||
{
|
||||
"id": "ground",
|
||||
"output": "Doc/Design/Scene/HomeCamp/ground.png",
|
||||
"prompt": "Use case: stylized-concept. Create exactly ONE isolated 3D terrain ground asset for the foreground village square in the reference. ONLY ground, no objects. A broad shallow nearly flat irregular rounded-rectangle patch: rear two thirds warm cream irregular flagstone plaza, front third lush soft green grass. A gently curving cream stepping-stone path enters from the FRONT RIGHT and widens into the central plaza. Leave the center as uninterrupted paving where a separate fountain will be placed later. Leave the rear edge as clear flat paving where separate buildings will stand. No fountain socket or holes. Slight raised stone edging only at the perimeter, very thin natural soil sidewall. Mostly flat, suitable walkable game terrain; miniature landscape floor, not a floating island. Slightly elevated nearly top-down view showing the whole footprint and shallow thickness. Match bright soft Candy game art and warm colors in reference. Pure white #FFFFFF background with generous margin. No houses, no buildings, no fountain, no trees, no bushes, no flowers, no furniture, no lamps, no walls, no arches, no fences, no mountains, no sky, no water, no text. The ground only, one continuous mesh."
|
||||
},
|
||||
{
|
||||
"id": "backdrop",
|
||||
"output": "Doc/Design/Scene/HomeCamp/backdrop.png",
|
||||
"prompt": "Use case: stylized-concept. Asset type: full-bleed distant background texture for a simple flat polygon behind a 3D village, NOT an isolated model design. Extract and extend ONLY the DISTANT SCENERY seen at the TOP of the reference: clear pale blue sky, soft fluffy white clouds, distant blue layered mountains, a blue lake, rocky green cliffs at middle right with a broad white waterfall falling into the lake, a tiny warm cream and red-roof fantasy castle far away on the upper RIGHT ridge, scattered slim cypress trees and rounded green distant woodland along the lakeside. Preserve the cheerful soft painted Candy village world, warm sunny midday, serene airy atmosphere. Wide landscape composition, coherent natural perspective. Upper 45 percent sky and clouds, middle mountains and castle ridge, lower 35 percent lake and distant woodland/cliffs. Fill entire rectangular image edge to edge, no white margins. NO foreground village, no nearby houses, no fountain, no plaza, no paving, no bench, no market stalls, no characters, no pets, no interface, no text. This image will be an unlit distant backdrop, so all requested lake/waterfall/castle detail must be IN THE IMAGE, not separate meshes. Landscape 3:2 aspect ratio."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
{
|
||||
"status": "design_images_verified",
|
||||
"imageCount": 5,
|
||||
"rows": [
|
||||
{
|
||||
"id": "mainhouse",
|
||||
"path": "Doc/Design/Scene/HomeCamp/mainhouse.png",
|
||||
"width": 1254,
|
||||
"height": 1254,
|
||||
"sha256": "1b1fcb750f72464910aa053f8084829f861a853e1e5cccecc8f494479f2876bd",
|
||||
"corners": [
|
||||
[
|
||||
253,
|
||||
253,
|
||||
253
|
||||
],
|
||||
[
|
||||
255,
|
||||
255,
|
||||
255
|
||||
],
|
||||
[
|
||||
254,
|
||||
254,
|
||||
254
|
||||
],
|
||||
[
|
||||
253,
|
||||
253,
|
||||
253
|
||||
]
|
||||
],
|
||||
"imageDecodes": true,
|
||||
"whiteCornersPass": true
|
||||
},
|
||||
{
|
||||
"id": "cottage",
|
||||
"path": "Doc/Design/Scene/HomeCamp/cottage.png",
|
||||
"width": 1312,
|
||||
"height": 1199,
|
||||
"sha256": "7d290546cbf0e797c02261226fbcbbb4f8919b34e32fb15e5dae6e4c80e2a1ff",
|
||||
"corners": [
|
||||
[
|
||||
253,
|
||||
253,
|
||||
253
|
||||
],
|
||||
[
|
||||
254,
|
||||
254,
|
||||
254
|
||||
],
|
||||
[
|
||||
254,
|
||||
254,
|
||||
254
|
||||
],
|
||||
[
|
||||
254,
|
||||
253,
|
||||
254
|
||||
]
|
||||
],
|
||||
"imageDecodes": true,
|
||||
"whiteCornersPass": true
|
||||
},
|
||||
{
|
||||
"id": "fountain",
|
||||
"path": "Doc/Design/Scene/HomeCamp/fountain.png",
|
||||
"width": 1402,
|
||||
"height": 1122,
|
||||
"sha256": "2ca038060220c0fb0c35ffd5bda0e87e0fe249c4b074faac4123b520f9bdfd39",
|
||||
"corners": [
|
||||
[
|
||||
253,
|
||||
253,
|
||||
253
|
||||
],
|
||||
[
|
||||
255,
|
||||
255,
|
||||
255
|
||||
],
|
||||
[
|
||||
254,
|
||||
254,
|
||||
254
|
||||
],
|
||||
[
|
||||
254,
|
||||
253,
|
||||
254
|
||||
]
|
||||
],
|
||||
"imageDecodes": true,
|
||||
"whiteCornersPass": true
|
||||
},
|
||||
{
|
||||
"id": "ground",
|
||||
"path": "Doc/Design/Scene/HomeCamp/ground.png",
|
||||
"width": 1536,
|
||||
"height": 1024,
|
||||
"sha256": "c129ff8fe81928e77b834e5603f845329e9a4c3da9018bda9ab217e0aac76291",
|
||||
"corners": [
|
||||
[
|
||||
253,
|
||||
253,
|
||||
253
|
||||
],
|
||||
[
|
||||
254,
|
||||
255,
|
||||
255
|
||||
],
|
||||
[
|
||||
254,
|
||||
254,
|
||||
254
|
||||
],
|
||||
[
|
||||
253,
|
||||
253,
|
||||
253
|
||||
]
|
||||
],
|
||||
"imageDecodes": true,
|
||||
"whiteCornersPass": true
|
||||
},
|
||||
{
|
||||
"id": "backdrop",
|
||||
"path": "Doc/Design/Scene/HomeCamp/backdrop.png",
|
||||
"width": 1536,
|
||||
"height": 1024,
|
||||
"sha256": "e854738987f2b384359317d8713ff4bbdf3d27960abe75661727516198f4ccf5",
|
||||
"corners": [
|
||||
[
|
||||
86,
|
||||
173,
|
||||
249
|
||||
],
|
||||
[
|
||||
105,
|
||||
187,
|
||||
248
|
||||
],
|
||||
[
|
||||
104,
|
||||
132,
|
||||
49
|
||||
],
|
||||
[
|
||||
70,
|
||||
101,
|
||||
35
|
||||
]
|
||||
],
|
||||
"imageDecodes": true
|
||||
}
|
||||
],
|
||||
"modelGenerationCompleted": false,
|
||||
"unitySceneCreated": false
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.8 MiB |
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"generator": "built_in_imagegen",
|
||||
"referenceImage": "AIClient/Assets/Bundles/UI/Bg/home_camp.png",
|
||||
"transparentBackground": true,
|
||||
"assets": [
|
||||
{
|
||||
"id": "tree_card",
|
||||
"output": "Doc/Design/Scene/HomeCamp/tree_card.png",
|
||||
"prompt": "Use case: stylized-concept. Asset type: transparent background tree cutout for a distant vegetation billboard behind a 3D village. Recreate ONE beautiful leafy village tree matching the large broadleaf tree in the reference: dense lush rounded sunlit green canopy in about five overlapping soft masses, rich small leaf detail, a sturdy warm brown branching trunk. Entire tree including trunk base fits inside the image with clear margin. Upright frontal view, slightly visible canopy top. Soft cheerful Candy game 3D painted look, sunny daytime. Isolate ONLY the tree on a genuinely transparent background. No soil mound, no planter, no base platform, no grass, no buildings, no other objects, no text, no dark holes or black patches. Solid dense foliage with natural transparent silhouette edge. This tree image is a flat distant decoration, not input for model generation."
|
||||
},
|
||||
{
|
||||
"id": "flower_card",
|
||||
"output": "Doc/Design/Scene/HomeCamp/flower_card.png",
|
||||
"prompt": "Use case: stylized-concept. Asset type: transparent flower-border cutout for a fixed-camera mobile game foliage card. ONE compact low rounded flower clump matching the daisies and yellow flowers bordering the fountain in the village reference. Dense soft lush green leaves supporting many cheerful small white daisies with golden centers and a few tiny bright yellow flowers. Show the full clump silhouette, no cropping; broad low mound, three-quarter frontal view from slightly above. Warm sunny soft painted Candy game 3D illustration, beautiful dense foliage, clean natural details. Isolate this one clump on a genuinely transparent background, generous clear margin. No planter, no wooden box, no vase, no rocks, no soil platform, no lawn tile, no cast shadow backdrop, no people, no text. No black holes or dark patches. A flat scene decoration, not an input for 3D model generation."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 2.8 MiB |
@@ -0,0 +1,5 @@
|
||||
Generator: built_in_imagegen
|
||||
Reference: AIClient/Assets/Bundles/UI/Bg/home_camp.png
|
||||
Transparent background: false
|
||||
|
||||
Use case: stylized-concept. Asset type: orthographic straight-down albedo texture for a flat mobile game village ground, 1024x1024 square. Fill EVERY pixel edge to edge with terrain; no sky, no white background, no outside border. Camera exactly vertical looking straight down, absolutely no perspective or isometric angle, no visible thickness. Rear/top 65% of the square is warm pale cream irregular flat flagstone paving with narrow soft moss-filled joints, softly rounded stones, no deep gaps or dark cracks. Front/bottom 35% is cheerful soft green grass. A path of broad cream stepping stones enters from the BOTTOM RIGHT and curves smoothly into the central paved plaza. Center is continuous unobstructed paving where a separate fountain will stand. Match the warm cream paving and lush green grass palette from the village reference but use softly painted diffuse colors, no baked directional shadows and no glows. Fine small natural grass flecks and a few tiny white daisy specks at the grass edges. No houses, no fountain, no trees, no furniture, no people, no text, no grid, no dark contours, no raised slabs or spikes. Flat coherent terrain texture. Square.
|
||||
@@ -0,0 +1,518 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"sceneId": "HomeCamp",
|
||||
"referenceImage": "AIClient/Assets/Bundles/UI/Bg/home_camp.png",
|
||||
"designPrompts": "Doc/Design/Scene/HomeCamp/design_prompts.json",
|
||||
"designResolution": [
|
||||
1080,
|
||||
1920
|
||||
],
|
||||
"status": "independent_scene_first_version_validated",
|
||||
"modelPipeline": {
|
||||
"steps": [
|
||||
"hunyuan_web_highpoly",
|
||||
"studio_lowpoly",
|
||||
"studio_uv",
|
||||
"blender_bake",
|
||||
"blender_decimate_preserve_uv_if_over_130_percent"
|
||||
],
|
||||
"highpolyFaces": "50k",
|
||||
"textureSize": 1024,
|
||||
"decimationThresholdPercent": 30,
|
||||
"decimationComparison": "actualTriangles * 10 > targetTriangles * 13",
|
||||
"preserveStudioUV": true,
|
||||
"coordinateSystem": {
|
||||
"up": "+Y",
|
||||
"front": "-Z",
|
||||
"origin": "bottom_center"
|
||||
}
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"id": "ground",
|
||||
"designImage": "Doc/Design/Scene/HomeCamp/ground.png",
|
||||
"targetTriangles": 6500,
|
||||
"modelStatus": "processed_review_candidate_not_placed",
|
||||
"groundCollider": "non_convex_mesh",
|
||||
"position": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"highpoly": "Tools/output/homecamp_3d/ground/ground.glb",
|
||||
"highpolySha256": "0710157abc6d07cd0dea8c5d413321a65be4689ca29cff4190cf879652705e20",
|
||||
"highpolyTriangles": 50000,
|
||||
"highpolyBounds": [
|
||||
[
|
||||
-0.5104680061340332,
|
||||
0.0,
|
||||
-0.44764000177383423
|
||||
],
|
||||
[
|
||||
0.4677639901638031,
|
||||
0.030424000695347786,
|
||||
0.529000997543335
|
||||
]
|
||||
],
|
||||
"highpolyJobId": "7d51d34ba0514601aed6085afc664152",
|
||||
"highpolyCreationId": "ef5a58d3-f03f-4c70-8208-ed8604212404",
|
||||
"highpolyWorkDir": "Tools/data/hunyuan/jobs/7d51d34ba0514601aed6085afc664152",
|
||||
"initialTargetTriangles": 1500,
|
||||
"budgetRevisionReason": "Studio terrain has many UV boundaries; retain its 8303-face topology within 130 percent rather than delete surface patches",
|
||||
"finalTriangles": 8303,
|
||||
"productionReceipt": "Tools/output/homecamp_studio/ground/production.json",
|
||||
"studioLowpolyTask": "44e1b0dcf52449f092f727a06eca1023-0-6174151d-6124-4f72-9881-065b2876",
|
||||
"studioUVTask": "44e1b0dcf52449f092f727a06eca1023-0-2ed2b6e8-1a43-45a0-8493-d480c889",
|
||||
"steps": {
|
||||
"01": "highpoly_validated",
|
||||
"02": "studio_lowpoly_completed",
|
||||
"03": "studio_uv_completed",
|
||||
"04": "blender_bake_completed_on_studio_uv",
|
||||
"05": "skipped_within_130_percent"
|
||||
},
|
||||
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/ground/ground.prefab",
|
||||
"sourceOutputs": {
|
||||
"Tools/output/homecamp_studio/ground/xpbr/ground.fbx": "638cbfbc82ee23dbc1f24f4c322db4655365ba6d60c6914fe869d9418d24277d",
|
||||
"Tools/output/homecamp_studio/ground/xpbr/ground_base.png": "fdaa5959e53e59ec6cf5a57a7311414c83f94fec1e52b308decd47aae46ccc38",
|
||||
"Tools/output/homecamp_studio/ground/xpbr/ground_mix.png": "879b155f4e521d6c6bbf6fb029c4db1832028f37cdf7ab89661dcd95ce945db4"
|
||||
},
|
||||
"visualIssue": "Studio surface/UV fragmentation; retained for further repair, excluded from delivered assembly"
|
||||
},
|
||||
{
|
||||
"id": "mainhouse",
|
||||
"designImage": "Doc/Design/Scene/HomeCamp/mainhouse.png",
|
||||
"targetTriangles": 2000,
|
||||
"modelStatus": "visually_validated_and_placed",
|
||||
"position": [
|
||||
0,
|
||||
0,
|
||||
8
|
||||
],
|
||||
"highpoly": "Tools/output/homecamp_3d/mainhouse/mainhouse.glb",
|
||||
"highpolySha256": "0419b5c94f4526693e4af0ec731382d53cb9dfc25019f5c5b3d0f9195a510695",
|
||||
"highpolyTriangles": 49760,
|
||||
"highpolyBounds": [
|
||||
[
|
||||
-0.42348501086235046,
|
||||
0.0,
|
||||
-0.3207170069217682
|
||||
],
|
||||
[
|
||||
0.48123401403427124,
|
||||
0.678384006023407,
|
||||
0.25547000765800476
|
||||
]
|
||||
],
|
||||
"highpolyJobId": "eb4fcd58e81e4c38b5136ed5df63a2d2",
|
||||
"highpolyCreationId": "6431481a-85da-42e2-a310-e6ba10e6a2ae",
|
||||
"highpolyWorkDir": "Tools/data/hunyuan/jobs/eb4fcd58e81e4c38b5136ed5df63a2d2",
|
||||
"finalTriangles": 1981,
|
||||
"productionReceipt": "Tools/output/homecamp_studio/mainhouse/production.json",
|
||||
"studioLowpolyTask": "44e1b0dcf52449f092f727a06eca1023-0-6a3c03b4-6dee-413d-a162-d4d9e22d",
|
||||
"studioUVTask": "44e1b0dcf52449f092f727a06eca1023-0-88f7a9a0-3c61-4cbc-9f84-1372a63a",
|
||||
"steps": {
|
||||
"01": "highpoly_validated",
|
||||
"02": "studio_lowpoly_completed",
|
||||
"03": "studio_uv_completed",
|
||||
"04": "blender_bake_completed_on_studio_uv",
|
||||
"05": "uv_preserving_decimation_completed"
|
||||
},
|
||||
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/mainhouse/mainhouse.prefab",
|
||||
"sourceOutputs": {
|
||||
"Tools/output/homecamp_studio/mainhouse/xpbr/mainhouse.fbx": "5095a00531dd167e02d4e138a0c319db8f00826d35a77f4d9371b1b8711e6166",
|
||||
"Tools/output/homecamp_studio/mainhouse/xpbr/mainhouse_base.png": "da7a51a03481a37725e43fdfd7e224a41c9b2014deb90ca42ae15893dc36035a",
|
||||
"Tools/output/homecamp_studio/mainhouse/xpbr/mainhouse_mix.png": "bef58c63f6e51b7ce8f992ef56bdc2a906c0da273f4bac1964e9da1232d3461c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "cottage",
|
||||
"designImage": "Doc/Design/Scene/HomeCamp/cottage.png",
|
||||
"targetTriangles": 3000,
|
||||
"modelStatus": "processed_review_candidate_not_placed",
|
||||
"instances": [
|
||||
{
|
||||
"name": "CottageLeft",
|
||||
"position": [
|
||||
-7,
|
||||
0,
|
||||
4.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "CottageRight",
|
||||
"position": [
|
||||
7,
|
||||
0,
|
||||
4.5
|
||||
]
|
||||
}
|
||||
],
|
||||
"highpoly": "Tools/output/homecamp_3d/cottage/cottage.glb",
|
||||
"highpolySha256": "af146d667230ed4aa34ce0bf839fa9025e1c2e36f03a425c82d592b5a7c9dd88",
|
||||
"highpolyTriangles": 49990,
|
||||
"highpolyBounds": [
|
||||
[
|
||||
-0.4400230050086975,
|
||||
0.0,
|
||||
-0.37127700448036194
|
||||
],
|
||||
[
|
||||
0.4304420053958893,
|
||||
0.7349910140037537,
|
||||
0.33599400520324707
|
||||
]
|
||||
],
|
||||
"highpolyJobId": "6338023c4d4b4233976babd1198d0c49",
|
||||
"highpolyCreationId": "8420a93b-f3de-4746-97c4-2e15b17c5f1c",
|
||||
"highpolyWorkDir": "Tools/data/hunyuan/jobs/6338023c4d4b4233976babd1198d0c49",
|
||||
"initialTargetTriangles": 1800,
|
||||
"budgetRevisionReason": "Retain continuous ground/house surface and Studio UV charts; initial lower budget caused missing patches",
|
||||
"finalTriangles": 2995,
|
||||
"productionReceipt": "Tools/output/homecamp_studio/cottage/production.json",
|
||||
"studioLowpolyTask": "44e1b0dcf52449f092f727a06eca1023-0-61d9ba22-da64-4adb-b440-11b8a08a",
|
||||
"studioUVTask": "44e1b0dcf52449f092f727a06eca1023-0-b33f6718-07fb-42c7-981d-3a7512a0",
|
||||
"steps": {
|
||||
"01": "highpoly_validated",
|
||||
"02": "studio_lowpoly_completed",
|
||||
"03": "studio_uv_completed",
|
||||
"04": "blender_bake_completed_on_studio_uv",
|
||||
"05": "uv_preserving_decimation_completed"
|
||||
},
|
||||
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/cottage/cottage.prefab",
|
||||
"sourceOutputs": {
|
||||
"Tools/output/homecamp_studio/cottage/xpbr/cottage.fbx": "0cd83d07210db2b8ff9fe9ce949f769409ddd02321da4d4730337c758e56a2cf",
|
||||
"Tools/output/homecamp_studio/cottage/xpbr/cottage_base.png": "db7ac208bfeaa514384e94af1bec41579de370ace66dcc4c181e865a2381279b",
|
||||
"Tools/output/homecamp_studio/cottage/xpbr/cottage_mix.png": "4d6c3ac43a6d84cf33686dab41ab53da5df6f6753bbc3f1dee70e32313190d70"
|
||||
},
|
||||
"visualIssue": "Studio surface/UV fragmentation; retained for further repair, excluded from delivered assembly"
|
||||
},
|
||||
{
|
||||
"id": "fountain",
|
||||
"designImage": "Doc/Design/Scene/HomeCamp/fountain.png",
|
||||
"targetTriangles": 1800,
|
||||
"modelStatus": "visually_validated_and_placed",
|
||||
"position": [
|
||||
0,
|
||||
0,
|
||||
0.8
|
||||
],
|
||||
"highpoly": "Tools/output/homecamp_3d/fountain/fountain.glb",
|
||||
"highpolySha256": "58bd37d217c0ee795fc452ad1c9be5b234374555ab53e24005d47f76847e5078",
|
||||
"highpolyTriangles": 49848,
|
||||
"highpolyBounds": [
|
||||
[
|
||||
-0.5366960167884827,
|
||||
0.0,
|
||||
-0.5384520292282104
|
||||
],
|
||||
[
|
||||
0.539355993270874,
|
||||
0.5473799705505371,
|
||||
0.5376759767532349
|
||||
]
|
||||
],
|
||||
"highpolyJobId": "c03e07d800ef4c7099de2c61cf6e6621",
|
||||
"highpolyCreationId": "d7631df4-6d84-4fec-80f1-ba8a647996db",
|
||||
"highpolyWorkDir": "Tools/data/hunyuan/jobs/c03e07d800ef4c7099de2c61cf6e6621",
|
||||
"finalTriangles": 1795,
|
||||
"productionReceipt": "Tools/output/homecamp_studio/fountain/production.json",
|
||||
"studioLowpolyTask": "44e1b0dcf52449f092f727a06eca1023-0-ac14a25e-3e7f-45fa-b6ea-636b042e",
|
||||
"studioUVTask": "44e1b0dcf52449f092f727a06eca1023-0-123db97c-3a7b-4f87-a9f6-9eb9d58a",
|
||||
"steps": {
|
||||
"01": "highpoly_validated",
|
||||
"02": "studio_lowpoly_completed",
|
||||
"03": "studio_uv_completed",
|
||||
"04": "blender_bake_completed_on_studio_uv",
|
||||
"05": "uv_preserving_decimation_completed"
|
||||
},
|
||||
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/fountain/fountain.prefab",
|
||||
"sourceOutputs": {
|
||||
"Tools/output/homecamp_studio/fountain/xpbr/fountain.fbx": "c226034f71c5ee2f6d0efe8df248369c935608c62959514338f538612e5f1aad",
|
||||
"Tools/output/homecamp_studio/fountain/xpbr/fountain_base.png": "6ad8524be4cdd902349daf41ba9ccc5f8830b1c436114b822ba45bf40a49c451",
|
||||
"Tools/output/homecamp_studio/fountain/xpbr/fountain_mix.png": "0118ecd392cdcfdb5fed0489f1e2df6d5cb3d5a0842d27d21334970d87183512"
|
||||
}
|
||||
}
|
||||
],
|
||||
"reuseCandidates": [
|
||||
{
|
||||
"id": "tree",
|
||||
"prefab": "Assets/Bundles/Scenes/Town/TownSquare/tree/tree.prefab",
|
||||
"status": "rejected_texture_artifacts"
|
||||
},
|
||||
{
|
||||
"id": "lamp",
|
||||
"prefab": "Assets/Bundles/Scenes/Town/TownSquare/lamp/lamp.prefab",
|
||||
"status": "visually_verified"
|
||||
},
|
||||
{
|
||||
"id": "bench",
|
||||
"prefab": "Assets/Bundles/Scenes/Town/TownSquare/bench/bench.prefab",
|
||||
"status": "visually_verified"
|
||||
},
|
||||
{
|
||||
"id": "bush",
|
||||
"prefab": "Assets/Bundles/Scenes/Town/TownSquare/bush/bush.prefab",
|
||||
"status": "rejected_texture_artifacts"
|
||||
}
|
||||
],
|
||||
"backdrop": {
|
||||
"image": "Doc/Design/Scene/HomeCamp/backdrop.png",
|
||||
"representation": "unlit_textured_quad",
|
||||
"meshTriangles": 2,
|
||||
"complexDistantModels": false,
|
||||
"shadows": false,
|
||||
"collider": false,
|
||||
"framingConstraint": "Keep right-side castle and waterfall visible in portrait; mask lower seam with roofs and foliage",
|
||||
"status": "imported_and_authored_in_scene"
|
||||
},
|
||||
"camera": {
|
||||
"position": [
|
||||
0,
|
||||
15,
|
||||
-27
|
||||
],
|
||||
"target": [
|
||||
0,
|
||||
1.8,
|
||||
3
|
||||
],
|
||||
"fieldOfView": 48
|
||||
},
|
||||
"plannedOutputs": {
|
||||
"assetRoot": "Assets/Bundles/Scenes/Town/HomeCamp",
|
||||
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/HomeCamp.prefab",
|
||||
"scene": "Assets/Bundles/Scenes/Town/HomeCamp/HomeCamp.unity"
|
||||
},
|
||||
"uploadAuthorization": {
|
||||
"status": "authorized_by_user",
|
||||
"destination": "https://3d.hunyuan.tencent.com/",
|
||||
"scope": "Upload only the four listed white-background component images and their derived model files to Hunyuan web/3D Studio for steps 01-03",
|
||||
"authorizationText": "User confirmed upload authorization in this conversation",
|
||||
"authorizedDate": "2026-10-23",
|
||||
"previousRejectionReason": "Automatic review rejected third-party upload because explicit authorization for this destination was not recorded"
|
||||
},
|
||||
"designImageAudit": [
|
||||
{
|
||||
"id": "mainhouse",
|
||||
"path": "Doc/Design/Scene/HomeCamp/mainhouse.png",
|
||||
"width": 1254,
|
||||
"height": 1254,
|
||||
"sha256": "1b1fcb750f72464910aa053f8084829f861a853e1e5cccecc8f494479f2876bd",
|
||||
"corners": [
|
||||
[
|
||||
253,
|
||||
253,
|
||||
253
|
||||
],
|
||||
[
|
||||
255,
|
||||
255,
|
||||
255
|
||||
],
|
||||
[
|
||||
254,
|
||||
254,
|
||||
254
|
||||
],
|
||||
[
|
||||
253,
|
||||
253,
|
||||
253
|
||||
]
|
||||
],
|
||||
"imageDecodes": true,
|
||||
"whiteCornersPass": true
|
||||
},
|
||||
{
|
||||
"id": "cottage",
|
||||
"path": "Doc/Design/Scene/HomeCamp/cottage.png",
|
||||
"width": 1312,
|
||||
"height": 1199,
|
||||
"sha256": "7d290546cbf0e797c02261226fbcbbb4f8919b34e32fb15e5dae6e4c80e2a1ff",
|
||||
"corners": [
|
||||
[
|
||||
253,
|
||||
253,
|
||||
253
|
||||
],
|
||||
[
|
||||
254,
|
||||
254,
|
||||
254
|
||||
],
|
||||
[
|
||||
254,
|
||||
254,
|
||||
254
|
||||
],
|
||||
[
|
||||
254,
|
||||
253,
|
||||
254
|
||||
]
|
||||
],
|
||||
"imageDecodes": true,
|
||||
"whiteCornersPass": true
|
||||
},
|
||||
{
|
||||
"id": "fountain",
|
||||
"path": "Doc/Design/Scene/HomeCamp/fountain.png",
|
||||
"width": 1402,
|
||||
"height": 1122,
|
||||
"sha256": "2ca038060220c0fb0c35ffd5bda0e87e0fe249c4b074faac4123b520f9bdfd39",
|
||||
"corners": [
|
||||
[
|
||||
253,
|
||||
253,
|
||||
253
|
||||
],
|
||||
[
|
||||
255,
|
||||
255,
|
||||
255
|
||||
],
|
||||
[
|
||||
254,
|
||||
254,
|
||||
254
|
||||
],
|
||||
[
|
||||
254,
|
||||
253,
|
||||
254
|
||||
]
|
||||
],
|
||||
"imageDecodes": true,
|
||||
"whiteCornersPass": true
|
||||
},
|
||||
{
|
||||
"id": "ground",
|
||||
"path": "Doc/Design/Scene/HomeCamp/ground.png",
|
||||
"width": 1536,
|
||||
"height": 1024,
|
||||
"sha256": "c129ff8fe81928e77b834e5603f845329e9a4c3da9018bda9ab217e0aac76291",
|
||||
"corners": [
|
||||
[
|
||||
253,
|
||||
253,
|
||||
253
|
||||
],
|
||||
[
|
||||
254,
|
||||
255,
|
||||
255
|
||||
],
|
||||
[
|
||||
254,
|
||||
254,
|
||||
254
|
||||
],
|
||||
[
|
||||
253,
|
||||
253,
|
||||
253
|
||||
]
|
||||
],
|
||||
"imageDecodes": true,
|
||||
"whiteCornersPass": true
|
||||
},
|
||||
{
|
||||
"id": "backdrop",
|
||||
"path": "Doc/Design/Scene/HomeCamp/backdrop.png",
|
||||
"width": 1536,
|
||||
"height": 1024,
|
||||
"sha256": "e854738987f2b384359317d8713ff4bbdf3d27960abe75661727516198f4ccf5",
|
||||
"corners": [
|
||||
[
|
||||
86,
|
||||
173,
|
||||
249
|
||||
],
|
||||
[
|
||||
105,
|
||||
187,
|
||||
248
|
||||
],
|
||||
[
|
||||
104,
|
||||
132,
|
||||
49
|
||||
],
|
||||
[
|
||||
70,
|
||||
101,
|
||||
35
|
||||
]
|
||||
],
|
||||
"imageDecodes": true
|
||||
}
|
||||
],
|
||||
"referenceSha256": "818447d9f9b0cad2dcd08b7cbecd870d2efd62d43d33e2c43ef2056394f96ada",
|
||||
"foliageCards": [
|
||||
{
|
||||
"id": "tree_card",
|
||||
"image": "Doc/Design/Scene/HomeCamp/tree_card.png",
|
||||
"size": [
|
||||
1200,
|
||||
1310
|
||||
],
|
||||
"sha256": "e2b764b9ec9e50fb0a076e3b764a5c6bced053c631cca0ed3e8e6a7eb04e6f98",
|
||||
"representation": "alpha_clipped_unlit_quad",
|
||||
"alphaCutoff": 0.55,
|
||||
"collider": false,
|
||||
"shadows": false
|
||||
},
|
||||
{
|
||||
"id": "flower_card",
|
||||
"image": "Doc/Design/Scene/HomeCamp/flower_card.png",
|
||||
"size": [
|
||||
1536,
|
||||
1024
|
||||
],
|
||||
"sha256": "f898d822667a7b0b94c23cde0705760fb58c05210e47f4157026c719c841e4b6",
|
||||
"representation": "alpha_clipped_unlit_quad",
|
||||
"alphaCutoff": 0.55,
|
||||
"collider": false,
|
||||
"shadows": false
|
||||
}
|
||||
],
|
||||
"assembly": {
|
||||
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/HomeCamp.prefab",
|
||||
"scene": "Assets/Bundles/Scenes/Town/HomeCamp/HomeCamp.unity",
|
||||
"triangles": 9987,
|
||||
"placements": 31,
|
||||
"groundCollisionSamples": 25,
|
||||
"groundCollisionPassed": 25,
|
||||
"houses": "Three scaled/rotated instances of visually validated mainhouse",
|
||||
"ground": "Pipeline-authored continuous GroundSurface.asset with ground_surface.png; original Studio ground excluded",
|
||||
"mainHudIntegrated": false,
|
||||
"playModeTested": false,
|
||||
"devicePerformanceTested": false
|
||||
},
|
||||
"qa": {
|
||||
"report": "Tools/output/homecamp_review/verification.txt",
|
||||
"portrait": "Tools/output/homecamp_review/homecamp_portrait.png",
|
||||
"tall": "Tools/output/homecamp_review/homecamp_tall.png",
|
||||
"sourcePartViews": "Tools/output/homecamp_review/*_{front,side,back,perspective}.png",
|
||||
"consoleNewErrors": 0,
|
||||
"originalBootSceneDirty": false,
|
||||
"fixedCamera": true,
|
||||
"longScreenLimitation": "Edge buildings and some distant scenery crop; final HUD integration needs device framing"
|
||||
},
|
||||
"authoredGroundSurface": {
|
||||
"mesh": "Assets/Bundles/Scenes/Town/HomeCamp/GroundSurface.asset",
|
||||
"prefab": "Assets/Bundles/Scenes/Town/HomeCamp/GroundSurface.prefab",
|
||||
"triangles": 2,
|
||||
"dimensions": [
|
||||
36,
|
||||
42
|
||||
],
|
||||
"texture": "Doc/Design/Scene/HomeCamp/ground_surface.png",
|
||||
"textureSize": [
|
||||
1254,
|
||||
1254
|
||||
],
|
||||
"textureSha256": "12dc5f81435cb50438a665fd54cfe50ba321b6a99ad1a3ebb62513964ce7a2e3",
|
||||
"creation": "Unity Pipeline editing cleanup after the five model stages; not Studio UV"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 1.6 MiB |
@@ -0,0 +1,28 @@
|
||||
# 技能/UI 混音试听收尾(2026-10-22)
|
||||
|
||||
已生成五份可试听的离线混音,使用正式入库音频、Unity Pipeline 读取的真实音源参数及第20关 T2 权威轨迹。**这是离线重建,不是 Unity 实录或微信设备录音;主观听审尚待确认。**
|
||||
|
||||
| 试听文件 | 内容与时间定位 | 长度 | 4倍过采样峰值 |
|
||||
| --- | --- | --- | --- |
|
||||
| [menu_ui.wav](menu_ui.wav) | 《微风小镇》+10个v3 UI音效;1.0秒起每1.4秒依次 Click/Confirm/Back/Open/Close/Tab/Claim/Deny/Toggle/Notify | 17秒 | -4.31 dBFS |
|
||||
| [skill_bank.wav](skill_bank.wav) | 0.75秒起每1.6秒依次 FireCharge/FireLaunch/FireHit/RockHit/Shield/Heal/Slow/Lightning/EnemyHit,保持正式单音增益 | 16秒 | -30.29 dBFS |
|
||||
| [battle_1x.wav](battle_1x.wav) | 第20关T2轨迹前23.5秒,技能+敌人反馈;tick200时模拟UI开关音(1×为10.5秒)。菜单BGM按现有战斗规则暂停 | 26秒 | -9.47 dBFS |
|
||||
| [battle_2x.wav](battle_2x.wav) | 同一轨迹双速,原音高,5.5秒模拟UI开关音;技能与敌人池抢占、同cast去重及敌人75ms同音保护 | 26秒 | -9.47 dBFS |
|
||||
| [overlap_stress.wav](overlap_stress.wav) | 1~4.75秒每0.25秒叠加9种技能、5种敌人攻击和1种UI音效;人为压力样例 | 8秒 | -3.47 dBFS |
|
||||
|
||||
输出为48kHz/PCM16/立体声。对应 `*_float.wav` 保留未截幅浮点母带,逐文件JSON包含事件时刻、声道池、增益及源音频SHA256。`validation.json` 汇总PCM哈希、样本峰值、4倍过采样峰值、RMS和越界样本数。五份越界样本数均为0,未加归一化或限幅器;这个结果只代表所列样例,不是任意输入或设备的零削波保证。
|
||||
|
||||
## 混音关注点
|
||||
|
||||
- 正式技能音源每路0.0375(0.3÷8),敌人池预算0.7/单路上限0.4,UI为0.8,菜单BGM为1.0。当前技能单音峰值约-30dBFS,应重点听治疗、护盾、减速在敌人连续攻击中是否被遮盖;本轮未擅自改变正式增益。
|
||||
- 对比 `menu_ui` 的 Claim/Deny/Toggle 与 `battle_2x`,确认UI提示清晰但不过分突出;密集叠加检查刺耳、疲劳与抢占尾音。
|
||||
- `skill_bank` 与前一首的听感响度不同,这是正式参数的实际比例,不能把逐文件归一化后的播放用作混音判断。
|
||||
- 音色喜好、遮蔽感和舒适度仍需人工试听;微信真机延迟、帧耗、内存和输出设备差异未在本轮验收。
|
||||
|
||||
## 方法与边界
|
||||
|
||||
入口 `python Tools/build_audio_mix_review.py`。输入参数回执 `unity_snapshot.json` 来自 `ReviewAudioMix.Snapshot`,通过Pipeline读取持久化Prefab;脚本只读正式资源和既有轨迹,不改服务器、账号、声音文件、Prefab或运行时代码。战斗离线重建遵循 `PrototypeBattle.Trace` 的命中映射以及 `PrototypeFlow.DrainBattleFeedback` 的敌人先于技能队列顺序;省略普通受击重复声音,重用8+8音源,技能按cast去重。没有模拟真实帧抖动、播放器过期事件或音频驱动延迟,不能替代实机同步测试。
|
||||
|
||||
曾尝试通过 `UnityEngine.AudioRenderer` 导出实录,但调用超时且Pipeline停止响应,没有产出可用实录。已移除录音入口,关闭本轮临时Play并重新打开原项目;启动前Boot无脏内容,恢复回执 `unity_recovery.json` 确认Boot无脏内容、非Play、无临时对象,当前音乐与音效开关均开启。原音效开关值只保存在被中断的内存任务中,重启后无法重新核验此前偏好;不声称该偏好已逐值还原。失败尝试不作为验收证据。API用途参考[Unity AudioRenderer官方文档](https://docs.unity.cn/2022.1/Documentation/ScriptReference/AudioRenderer.html)。
|
||||
|
||||
`python Tools/verify_partner_skills.py` 与 `python Tools/validate_skill_runtime.py` 通过:9/9音效与源/请求/成品哈希、25技能、10伙伴、5敌人和20关正式契约一致。TangoFlux来源声音沿用现有许可记录,本轮没有变更授权结论。未构建或发布Player。
|
||||
@@ -0,0 +1,450 @@
|
||||
{
|
||||
"metrics": {
|
||||
"file": "battle_1x.wav",
|
||||
"floatMaster": "battle_1x_float.wav",
|
||||
"seconds": 26.0,
|
||||
"samplePeakDbfs": -9.634100414519697,
|
||||
"truePeak4xDbfs": -9.470244709901838,
|
||||
"rmsDbfs": -34.24835971765098,
|
||||
"overRangeSamples": 0,
|
||||
"eventCount": 53,
|
||||
"maxSkillVoices": 8,
|
||||
"maxEnemyVoices": 8,
|
||||
"sha256": "6e0990d1246fc357ce6a6493db028f3ab476fd003010b49046ac17ceac051ae5"
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"time": 0.5,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Shield",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 1
|
||||
},
|
||||
{
|
||||
"time": 6.3,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 2
|
||||
},
|
||||
{
|
||||
"time": 6.85,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 2
|
||||
},
|
||||
{
|
||||
"time": 7.35,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 2
|
||||
},
|
||||
{
|
||||
"time": 7.4,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 3
|
||||
},
|
||||
{
|
||||
"time": 7.85,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 3
|
||||
},
|
||||
{
|
||||
"time": 8.3,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 3
|
||||
},
|
||||
{
|
||||
"time": 8.3,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 4
|
||||
},
|
||||
{
|
||||
"time": 8.5,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Shield",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 5
|
||||
},
|
||||
{
|
||||
"time": 8.75,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 4
|
||||
},
|
||||
{
|
||||
"time": 9.15,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 4
|
||||
},
|
||||
{
|
||||
"time": 9.2,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 8
|
||||
},
|
||||
{
|
||||
"time": 9.25,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 6
|
||||
},
|
||||
{
|
||||
"time": 9.25,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Slow",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 7
|
||||
},
|
||||
{
|
||||
"time": 9.65,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 8
|
||||
},
|
||||
{
|
||||
"time": 10.0,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 8
|
||||
},
|
||||
{
|
||||
"time": 10.1,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 10
|
||||
},
|
||||
{
|
||||
"time": 10.4,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 9
|
||||
},
|
||||
{
|
||||
"time": 10.5,
|
||||
"bank": "ui",
|
||||
"id": "Ui_Toggle",
|
||||
"gain": 0.8
|
||||
},
|
||||
{
|
||||
"time": 10.55,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 10
|
||||
},
|
||||
{
|
||||
"time": 10.85,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 10
|
||||
},
|
||||
{
|
||||
"time": 11.2,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 11
|
||||
},
|
||||
{
|
||||
"time": 11.95,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 12
|
||||
},
|
||||
{
|
||||
"time": 16.35,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 14
|
||||
},
|
||||
{
|
||||
"time": 16.5,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Shield",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 15
|
||||
},
|
||||
{
|
||||
"time": 16.75,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Slow",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 13
|
||||
},
|
||||
{
|
||||
"time": 16.75,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 14
|
||||
},
|
||||
{
|
||||
"time": 17.15,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 16
|
||||
},
|
||||
{
|
||||
"time": 17.2,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 0,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 17.2,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 14
|
||||
},
|
||||
{
|
||||
"time": 17.45,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 16
|
||||
},
|
||||
{
|
||||
"time": 17.9,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 1,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 17.9,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 16
|
||||
},
|
||||
{
|
||||
"time": 18.15,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 17
|
||||
},
|
||||
{
|
||||
"time": 18.45,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 17
|
||||
},
|
||||
{
|
||||
"time": 18.85,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 2,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 18.85,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 17
|
||||
},
|
||||
{
|
||||
"time": 19.15,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 18
|
||||
},
|
||||
{
|
||||
"time": 19.45,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 18
|
||||
},
|
||||
{
|
||||
"time": 19.85,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 3,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 19.85,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 18
|
||||
},
|
||||
{
|
||||
"time": 20.15,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 19
|
||||
},
|
||||
{
|
||||
"time": 20.45,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 19
|
||||
},
|
||||
{
|
||||
"time": 20.8,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 4,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 20.8,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 19
|
||||
},
|
||||
{
|
||||
"time": 21.15,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 20
|
||||
},
|
||||
{
|
||||
"time": 21.45,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 20
|
||||
},
|
||||
{
|
||||
"time": 21.75,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 5,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 21.75,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 20
|
||||
},
|
||||
{
|
||||
"time": 22.15,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 22
|
||||
},
|
||||
{
|
||||
"time": 22.25,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 6,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 22.25,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_RockHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 21
|
||||
},
|
||||
{
|
||||
"time": 22.45,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 22
|
||||
}
|
||||
],
|
||||
"sources": {
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_Shield.wav": "52119154552ac4fbbde0d94d34011be1749c019dec3764c31ecb7fae1b8fff37",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_FireCharge.wav": "686f9799eb264fcf310edb63dd69f75d16be94092bda40b3c341b0df18765217",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_FireLaunch.wav": "e6f40a6d9a7e57f6fd56051c2393315c0610554921f5e26459eab2cbde40bbd2",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_FireHit.wav": "d7c39fe8d2a270ab1241ee655f13d775f0e9c7cc0c3d38fdd6da2b33da493039",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_Lightning.wav": "a8e6f806b3e62e8916929d39b63f9d6cfd1f534dc44f49f79d99a490753ed00a",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_Slow.wav": "e191cc6baa46fa6e1c46f77eaa072495c52b4c75d47be98cfd7a81ca14a134c9",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/UI/Ui_Toggle.wav": "8d29ebb52a1c5c3906c43d031fd664ac9a1e051b2aa75cc435e4d10c9b7c9bdb",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/EnemyCombat/Enemy_HitArmor.wav": "f82ee2e53805549523a5443915258909e64965db2a12bcdecc090083f763f562",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_RockHit.wav": "092735b139b22e0e5a1cd851c493fb1d6c9ff320cfdd33fdefc73db725a37a59"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,940 @@
|
||||
{
|
||||
"metrics": {
|
||||
"file": "battle_2x.wav",
|
||||
"floatMaster": "battle_2x_float.wav",
|
||||
"seconds": 26.0,
|
||||
"samplePeakDbfs": -9.578677334465777,
|
||||
"truePeak4xDbfs": -9.474940870674805,
|
||||
"rmsDbfs": -31.007300179811196,
|
||||
"overRangeSamples": 0,
|
||||
"eventCount": 114,
|
||||
"maxSkillVoices": 8,
|
||||
"maxEnemyVoices": 8,
|
||||
"sha256": "a6f2052e36f5d14b99392c6f74d88fa9e4842a3e067a26dcdaba14ba0c1594aa"
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"time": 0.5,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Shield",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 1
|
||||
},
|
||||
{
|
||||
"time": 3.4,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 2
|
||||
},
|
||||
{
|
||||
"time": 3.675,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 2
|
||||
},
|
||||
{
|
||||
"time": 3.925,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 2
|
||||
},
|
||||
{
|
||||
"time": 3.95,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 3
|
||||
},
|
||||
{
|
||||
"time": 4.175,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 3
|
||||
},
|
||||
{
|
||||
"time": 4.4,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 3
|
||||
},
|
||||
{
|
||||
"time": 4.4,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 4
|
||||
},
|
||||
{
|
||||
"time": 4.5,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Shield",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 5
|
||||
},
|
||||
{
|
||||
"time": 4.625,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 4
|
||||
},
|
||||
{
|
||||
"time": 4.825,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 4
|
||||
},
|
||||
{
|
||||
"time": 4.85,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 8
|
||||
},
|
||||
{
|
||||
"time": 4.875,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 6
|
||||
},
|
||||
{
|
||||
"time": 4.875,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Slow",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 7
|
||||
},
|
||||
{
|
||||
"time": 5.075,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 8
|
||||
},
|
||||
{
|
||||
"time": 5.25,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 8
|
||||
},
|
||||
{
|
||||
"time": 5.3,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 10
|
||||
},
|
||||
{
|
||||
"time": 5.45,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 9
|
||||
},
|
||||
{
|
||||
"time": 5.5,
|
||||
"bank": "ui",
|
||||
"id": "Ui_Toggle",
|
||||
"gain": 0.8
|
||||
},
|
||||
{
|
||||
"time": 5.525,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 10
|
||||
},
|
||||
{
|
||||
"time": 5.675,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 10
|
||||
},
|
||||
{
|
||||
"time": 5.85,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 11
|
||||
},
|
||||
{
|
||||
"time": 6.225,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 12
|
||||
},
|
||||
{
|
||||
"time": 8.425,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 14
|
||||
},
|
||||
{
|
||||
"time": 8.5,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Shield",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 15
|
||||
},
|
||||
{
|
||||
"time": 8.625,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Slow",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 13
|
||||
},
|
||||
{
|
||||
"time": 8.625,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 14
|
||||
},
|
||||
{
|
||||
"time": 8.825,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 16
|
||||
},
|
||||
{
|
||||
"time": 8.85,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 0,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 8.85,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 14
|
||||
},
|
||||
{
|
||||
"time": 8.975,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 16
|
||||
},
|
||||
{
|
||||
"time": 9.2,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 1,
|
||||
"gain": 0.35,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 9.2,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 16
|
||||
},
|
||||
{
|
||||
"time": 9.325,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 17
|
||||
},
|
||||
{
|
||||
"time": 9.475,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 17
|
||||
},
|
||||
{
|
||||
"time": 9.675,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 2,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 9.675,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 17
|
||||
},
|
||||
{
|
||||
"time": 9.825,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 18
|
||||
},
|
||||
{
|
||||
"time": 9.975,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 18
|
||||
},
|
||||
{
|
||||
"time": 10.175,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 3,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 10.175,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 18
|
||||
},
|
||||
{
|
||||
"time": 10.325,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 19
|
||||
},
|
||||
{
|
||||
"time": 10.475,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 19
|
||||
},
|
||||
{
|
||||
"time": 10.65,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 4,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 10.65,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 19
|
||||
},
|
||||
{
|
||||
"time": 10.825,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 20
|
||||
},
|
||||
{
|
||||
"time": 10.975,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 20
|
||||
},
|
||||
{
|
||||
"time": 11.125,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 5,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 11.125,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 20
|
||||
},
|
||||
{
|
||||
"time": 11.325,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 22
|
||||
},
|
||||
{
|
||||
"time": 11.375,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 6,
|
||||
"gain": 0.35,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 11.375,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_RockHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 21
|
||||
},
|
||||
{
|
||||
"time": 11.475,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 22
|
||||
},
|
||||
{
|
||||
"time": 12.5,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Shield",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 23
|
||||
},
|
||||
{
|
||||
"time": 14.6,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 24
|
||||
},
|
||||
{
|
||||
"time": 14.875,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 24
|
||||
},
|
||||
{
|
||||
"time": 15.125,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 7,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 15.125,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 24
|
||||
},
|
||||
{
|
||||
"time": 15.15,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 25
|
||||
},
|
||||
{
|
||||
"time": 15.375,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 25
|
||||
},
|
||||
{
|
||||
"time": 15.6,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 0,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 15.6,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 25
|
||||
},
|
||||
{
|
||||
"time": 15.6,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 26
|
||||
},
|
||||
{
|
||||
"time": 15.825,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 26
|
||||
},
|
||||
{
|
||||
"time": 16.025,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 1,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 16.025,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 26
|
||||
},
|
||||
{
|
||||
"time": 16.05,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 27
|
||||
},
|
||||
{
|
||||
"time": 16.275,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 27
|
||||
},
|
||||
{
|
||||
"time": 16.45,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 2,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 16.45,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 27
|
||||
},
|
||||
{
|
||||
"time": 16.5,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 31
|
||||
},
|
||||
{
|
||||
"time": 16.5,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Shield",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 30
|
||||
},
|
||||
{
|
||||
"time": 16.6,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 28
|
||||
},
|
||||
{
|
||||
"time": 16.6,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Slow",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 29
|
||||
},
|
||||
{
|
||||
"time": 16.725,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 31
|
||||
},
|
||||
{
|
||||
"time": 16.875,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 3,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 16.875,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 31
|
||||
},
|
||||
{
|
||||
"time": 16.95,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 33
|
||||
},
|
||||
{
|
||||
"time": 17.175,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 33
|
||||
},
|
||||
{
|
||||
"time": 17.2,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 32
|
||||
},
|
||||
{
|
||||
"time": 17.3,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 4,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 17.3,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 33
|
||||
},
|
||||
{
|
||||
"time": 17.325,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_RockHit",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 34
|
||||
},
|
||||
{
|
||||
"time": 17.4,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 36
|
||||
},
|
||||
{
|
||||
"time": 17.575,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 35
|
||||
},
|
||||
{
|
||||
"time": 17.625,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 36
|
||||
},
|
||||
{
|
||||
"time": 17.725,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 5,
|
||||
"gain": 0.4,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 17.725,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 36
|
||||
},
|
||||
{
|
||||
"time": 17.85,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 40
|
||||
},
|
||||
{
|
||||
"time": 17.875,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HornCaptainAttack",
|
||||
"voice": 6,
|
||||
"gain": 0.35,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 17.875,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitShield",
|
||||
"voice": 7,
|
||||
"gain": 0.2333333333333333,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 17.925,
|
||||
"bank": "enemy",
|
||||
"id": "Enemy_HitArmor",
|
||||
"voice": 0,
|
||||
"gain": 0.175,
|
||||
"cast": 0
|
||||
},
|
||||
{
|
||||
"time": 17.925,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_RockHit",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 38
|
||||
},
|
||||
{
|
||||
"time": 17.975,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 37
|
||||
},
|
||||
{
|
||||
"time": 18.125,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 43
|
||||
},
|
||||
{
|
||||
"time": 18.125,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 40
|
||||
},
|
||||
{
|
||||
"time": 18.325,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Slow",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 42
|
||||
},
|
||||
{
|
||||
"time": 18.325,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 43
|
||||
},
|
||||
{
|
||||
"time": 18.35,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 41
|
||||
},
|
||||
{
|
||||
"time": 18.525,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 44
|
||||
},
|
||||
{
|
||||
"time": 18.55,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 43
|
||||
},
|
||||
{
|
||||
"time": 18.675,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 44
|
||||
},
|
||||
{
|
||||
"time": 18.875,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 44
|
||||
},
|
||||
{
|
||||
"time": 19.025,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 45
|
||||
},
|
||||
{
|
||||
"time": 19.175,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 45
|
||||
},
|
||||
{
|
||||
"time": 19.35,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 45
|
||||
},
|
||||
{
|
||||
"time": 19.525,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 46
|
||||
},
|
||||
{
|
||||
"time": 19.675,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 46
|
||||
},
|
||||
{
|
||||
"time": 19.85,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 46
|
||||
},
|
||||
{
|
||||
"time": 20.025,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 47
|
||||
},
|
||||
{
|
||||
"time": 20.175,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 47
|
||||
},
|
||||
{
|
||||
"time": 20.3,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 47
|
||||
},
|
||||
{
|
||||
"time": 20.4,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_RockHit",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 48
|
||||
},
|
||||
{
|
||||
"time": 20.5,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Shield",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 49
|
||||
}
|
||||
],
|
||||
"sources": {
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_Shield.wav": "52119154552ac4fbbde0d94d34011be1749c019dec3764c31ecb7fae1b8fff37",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_FireCharge.wav": "686f9799eb264fcf310edb63dd69f75d16be94092bda40b3c341b0df18765217",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_FireLaunch.wav": "e6f40a6d9a7e57f6fd56051c2393315c0610554921f5e26459eab2cbde40bbd2",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_FireHit.wav": "d7c39fe8d2a270ab1241ee655f13d775f0e9c7cc0c3d38fdd6da2b33da493039",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_Lightning.wav": "a8e6f806b3e62e8916929d39b63f9d6cfd1f534dc44f49f79d99a490753ed00a",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_Slow.wav": "e191cc6baa46fa6e1c46f77eaa072495c52b4c75d47be98cfd7a81ca14a134c9",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/UI/Ui_Toggle.wav": "8d29ebb52a1c5c3906c43d031fd664ac9a1e051b2aa75cc435e4d10c9b7c9bdb",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/EnemyCombat/Enemy_HitArmor.wav": "f82ee2e53805549523a5443915258909e64965db2a12bcdecc090083f763f562",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_RockHit.wav": "092735b139b22e0e5a1cd851c493fb1d6c9ff320cfdd33fdefc73db725a37a59",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/EnemyCombat/Enemy_HornCaptainAttack.wav": "99ac39aa3775bc4ba0def1196216744e12ddcb8523a4096aa63cedfcb6811723",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/EnemyCombat/Enemy_HitShield.wav": "13d4dfad5668a40e8538b1e4320e1fcff20eacc0d53f67bb7540170b981c1045"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"metrics": {
|
||||
"file": "menu_ui.wav",
|
||||
"floatMaster": "menu_ui_float.wav",
|
||||
"seconds": 17.0,
|
||||
"samplePeakDbfs": -4.336533226935635,
|
||||
"truePeak4xDbfs": -4.309702970908978,
|
||||
"rmsDbfs": -24.227830554413536,
|
||||
"overRangeSamples": 0,
|
||||
"eventCount": 11,
|
||||
"maxSkillVoices": 8,
|
||||
"maxEnemyVoices": 8,
|
||||
"sha256": "62876e48d5caca9dcb95b7f8b4a2eff3efb1d6dd0f4b2301c46af9daccfc914f"
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"time": 0,
|
||||
"bank": "music",
|
||||
"id": "MeadowBreeze_MainMenu_Loop",
|
||||
"gain": 1.0
|
||||
},
|
||||
{
|
||||
"time": 1.0,
|
||||
"bank": "ui",
|
||||
"id": "Ui_Click",
|
||||
"gain": 0.8
|
||||
},
|
||||
{
|
||||
"time": 2.4,
|
||||
"bank": "ui",
|
||||
"id": "Ui_Confirm",
|
||||
"gain": 0.8
|
||||
},
|
||||
{
|
||||
"time": 3.8,
|
||||
"bank": "ui",
|
||||
"id": "Ui_Back",
|
||||
"gain": 0.8
|
||||
},
|
||||
{
|
||||
"time": 5.199999999999999,
|
||||
"bank": "ui",
|
||||
"id": "Ui_Open",
|
||||
"gain": 0.8
|
||||
},
|
||||
{
|
||||
"time": 6.6,
|
||||
"bank": "ui",
|
||||
"id": "Ui_Close",
|
||||
"gain": 0.8
|
||||
},
|
||||
{
|
||||
"time": 8.0,
|
||||
"bank": "ui",
|
||||
"id": "Ui_Tab",
|
||||
"gain": 0.8
|
||||
},
|
||||
{
|
||||
"time": 9.399999999999999,
|
||||
"bank": "ui",
|
||||
"id": "Ui_Claim",
|
||||
"gain": 0.8
|
||||
},
|
||||
{
|
||||
"time": 10.799999999999999,
|
||||
"bank": "ui",
|
||||
"id": "Ui_Deny",
|
||||
"gain": 0.8
|
||||
},
|
||||
{
|
||||
"time": 12.2,
|
||||
"bank": "ui",
|
||||
"id": "Ui_Toggle",
|
||||
"gain": 0.8
|
||||
},
|
||||
{
|
||||
"time": 13.6,
|
||||
"bank": "ui",
|
||||
"id": "Ui_Notify",
|
||||
"gain": 0.8
|
||||
}
|
||||
],
|
||||
"sources": {
|
||||
"AIClient/Assets/Bundles/Sound/BGM/MeadowBreeze_MainMenu_Loop.ogg": "ce19b4f816656e8ce523c5b165527dcd90ddac8bd8eed9ce3a402fa018b19bdf",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/UI/Ui_Click.wav": "6cc0a468cff5257df32c80f7c889dec9c43d2dd782f33d715164eaceffda6a60",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/UI/Ui_Confirm.wav": "bb3963b6686ad7abd91cf555569025c4f18c0aa355caf908904ebf96edb98f3d",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/UI/Ui_Back.wav": "88a95f5296ec92e3db938a2d90945c8b1cef58986dcb1e3b6bbfa181812d54c7",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/UI/Ui_Open.wav": "cf0845ee381195e5e4bdbfe38982eeebfac5d57965ce138fa06d010c285345a2",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/UI/Ui_Close.wav": "3bf81c1b0b39d5c06e93251f1062aab72bc9ed07d5a035691e441e71518af94a",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/UI/Ui_Tab.wav": "738c52ce558345c0ce0b435e1069a1e8f3e22c5889418a5df9dbdfb266e2baa4",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/UI/Ui_Claim.wav": "6cf1265877b26b2967bd1c7a12021c3d03abf31a7e39f2259b96da8a1d7a8222",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/UI/Ui_Deny.wav": "2321b48a29d51a7a9409a2e2f6e2e995a5f59eba16ac3302934a88a5111fc21a",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/UI/Ui_Toggle.wav": "8d29ebb52a1c5c3906c43d031fd664ac9a1e051b2aa75cc435e4d10c9b7c9bdb",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/UI/Ui_Notify.wav": "94424ff77df4177bcc67f3c4aa5f9fefeea4a39020a53d2dd984de458a8ed6b4"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"metrics": {
|
||||
"file": "skill_bank.wav",
|
||||
"floatMaster": "skill_bank_float.wav",
|
||||
"seconds": 16.0,
|
||||
"samplePeakDbfs": -30.34804044468181,
|
||||
"truePeak4xDbfs": -30.292306143405607,
|
||||
"rmsDbfs": -49.74545438120102,
|
||||
"overRangeSamples": 0,
|
||||
"eventCount": 9,
|
||||
"maxSkillVoices": 8,
|
||||
"maxEnemyVoices": 8,
|
||||
"sha256": "6d32ada277f8cb169ba8c91a2b5a710ac381210d433a59fbecb518c5eda976bd"
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"time": 0.75,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireCharge",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 1
|
||||
},
|
||||
{
|
||||
"time": 2.35,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireLaunch",
|
||||
"voice": 1,
|
||||
"gain": 0.0375,
|
||||
"cast": 2
|
||||
},
|
||||
{
|
||||
"time": 3.95,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_FireHit",
|
||||
"voice": 2,
|
||||
"gain": 0.0375,
|
||||
"cast": 3
|
||||
},
|
||||
{
|
||||
"time": 5.55,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_RockHit",
|
||||
"voice": 3,
|
||||
"gain": 0.0375,
|
||||
"cast": 4
|
||||
},
|
||||
{
|
||||
"time": 7.15,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Shield",
|
||||
"voice": 4,
|
||||
"gain": 0.0375,
|
||||
"cast": 5
|
||||
},
|
||||
{
|
||||
"time": 8.75,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Heal",
|
||||
"voice": 5,
|
||||
"gain": 0.0375,
|
||||
"cast": 6
|
||||
},
|
||||
{
|
||||
"time": 10.35,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Slow",
|
||||
"voice": 6,
|
||||
"gain": 0.0375,
|
||||
"cast": 7
|
||||
},
|
||||
{
|
||||
"time": 11.95,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_Lightning",
|
||||
"voice": 7,
|
||||
"gain": 0.0375,
|
||||
"cast": 8
|
||||
},
|
||||
{
|
||||
"time": 13.55,
|
||||
"bank": "skill",
|
||||
"id": "Sfx_EnemyHit",
|
||||
"voice": 0,
|
||||
"gain": 0.0375,
|
||||
"cast": 9
|
||||
}
|
||||
],
|
||||
"sources": {
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_FireCharge.wav": "686f9799eb264fcf310edb63dd69f75d16be94092bda40b3c341b0df18765217",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_FireLaunch.wav": "e6f40a6d9a7e57f6fd56051c2393315c0610554921f5e26459eab2cbde40bbd2",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_FireHit.wav": "d7c39fe8d2a270ab1241ee655f13d775f0e9c7cc0c3d38fdd6da2b33da493039",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_RockHit.wav": "092735b139b22e0e5a1cd851c493fb1d6c9ff320cfdd33fdefc73db725a37a59",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_Shield.wav": "52119154552ac4fbbde0d94d34011be1749c019dec3764c31ecb7fae1b8fff37",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_Heal.wav": "61ab8a7cd7feed49646752ad921c50dbfbec33ce8d3b534d4451f3638ff5df89",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_Slow.wav": "e191cc6baa46fa6e1c46f77eaa072495c52b4c75d47be98cfd7a81ca14a134c9",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_Lightning.wav": "a8e6f806b3e62e8916929d39b63f9d6cfd1f534dc44f49f79d99a490753ed00a",
|
||||
"AIClient/Assets/Bundles/Sound/SFX/BattleSkills/Sfx_EnemyHit.wav": "2cdb0a6f272f1bd5fac3ffab34fffaa52104a38056debe944e7913d7cf6ef93f"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"utc": "2026-10-22T01:53:31.4161431Z",
|
||||
"playing": false,
|
||||
"scenes": [
|
||||
{
|
||||
"path": "Assets/Scenes/Boot.unity",
|
||||
"isDirty": false
|
||||
}
|
||||
],
|
||||
"sfx": true,
|
||||
"music": true,
|
||||
"preferenceBaseline": "Original SFX value was held in the interrupted task; exact pre-capture preference could not be reverified after restart",
|
||||
"audio": {
|
||||
"speakerMode": 2,
|
||||
"dspBufferSize": 1024,
|
||||
"sampleRate": 48000,
|
||||
"numRealVoices": 32,
|
||||
"numVirtualVoices": 512
|
||||
},
|
||||
"temporaryReviewObjects": 0
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"utc": "2026-10-22T01:46:14.9756500Z",
|
||||
"skill": [
|
||||
{
|
||||
"name": "Voice0",
|
||||
"volume": 0.0375,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice1",
|
||||
"volume": 0.0375,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice2",
|
||||
"volume": 0.0375,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice3",
|
||||
"volume": 0.0375,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice4",
|
||||
"volume": 0.0375,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice5",
|
||||
"volume": 0.0375,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice6",
|
||||
"volume": 0.0375,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice7",
|
||||
"volume": 0.0375,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
}
|
||||
],
|
||||
"enemy": [
|
||||
{
|
||||
"name": "Voice0",
|
||||
"volume": 0.4,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice1",
|
||||
"volume": 0.4,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice2",
|
||||
"volume": 0.4,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice3",
|
||||
"volume": 0.4,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice4",
|
||||
"volume": 0.4,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice5",
|
||||
"volume": 0.4,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice6",
|
||||
"volume": 0.4,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
},
|
||||
{
|
||||
"name": "Voice7",
|
||||
"volume": 0.4,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
}
|
||||
],
|
||||
"ui": [
|
||||
{
|
||||
"name": "UiSfx",
|
||||
"volume": 0.8,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": false,
|
||||
"clip": ""
|
||||
}
|
||||
],
|
||||
"music": [
|
||||
{
|
||||
"name": "MainMenuMusic",
|
||||
"volume": 1.0,
|
||||
"pitch": 1.0,
|
||||
"spatialBlend": 0.0,
|
||||
"loop": true,
|
||||
"clip": "Assets/Bundles/Sound/BGM/MeadowBreeze_MainMenu_Loop.ogg"
|
||||
}
|
||||
],
|
||||
"enemyMixBudget": 0.7,
|
||||
"enemyVoiceVolume": 0.4,
|
||||
"audio": {
|
||||
"speakerMode": 2,
|
||||
"dspBufferSize": 1024,
|
||||
"sampleRate": 48000,
|
||||
"numRealVoices": 32,
|
||||
"numVirtualVoices": 512
|
||||
},
|
||||
"listenerVolume": 1.0,
|
||||
"subjectivelyApproved": false,
|
||||
"accountWrites": false
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"method": "offline reconstruction from installed clips, Pipeline snapshot and authoritative trace; not a loopback recording",
|
||||
"rendererAttempt": "Unity AudioRenderer timed out; not used as acceptance evidence",
|
||||
"rate": 48000,
|
||||
"channels": 2,
|
||||
"normalized": false,
|
||||
"limiter": false,
|
||||
"subjectivelyApproved": false,
|
||||
"snapshotSha256": "a6bf2419730c1f97a709dbad86ae11e75e12796a011356a7d1228fa031b893b0",
|
||||
"traceSha256": "aa9109ff487d56166076ad4e56ec3c621345e14dcb606f1beed7a7423aa8fa99",
|
||||
"files": [
|
||||
{
|
||||
"file": "menu_ui.wav",
|
||||
"floatMaster": "menu_ui_float.wav",
|
||||
"seconds": 17.0,
|
||||
"samplePeakDbfs": -4.336533226935635,
|
||||
"truePeak4xDbfs": -4.309702970908978,
|
||||
"rmsDbfs": -24.227830554413536,
|
||||
"overRangeSamples": 0,
|
||||
"eventCount": 11,
|
||||
"maxSkillVoices": 8,
|
||||
"maxEnemyVoices": 8,
|
||||
"sha256": "62876e48d5caca9dcb95b7f8b4a2eff3efb1d6dd0f4b2301c46af9daccfc914f"
|
||||
},
|
||||
{
|
||||
"file": "skill_bank.wav",
|
||||
"floatMaster": "skill_bank_float.wav",
|
||||
"seconds": 16.0,
|
||||
"samplePeakDbfs": -30.34804044468181,
|
||||
"truePeak4xDbfs": -30.292306143405607,
|
||||
"rmsDbfs": -49.74545438120102,
|
||||
"overRangeSamples": 0,
|
||||
"eventCount": 9,
|
||||
"maxSkillVoices": 8,
|
||||
"maxEnemyVoices": 8,
|
||||
"sha256": "6d32ada277f8cb169ba8c91a2b5a710ac381210d433a59fbecb518c5eda976bd"
|
||||
},
|
||||
{
|
||||
"file": "battle_1x.wav",
|
||||
"floatMaster": "battle_1x_float.wav",
|
||||
"seconds": 26.0,
|
||||
"samplePeakDbfs": -9.634100414519697,
|
||||
"truePeak4xDbfs": -9.470244709901838,
|
||||
"rmsDbfs": -34.24835971765098,
|
||||
"overRangeSamples": 0,
|
||||
"eventCount": 53,
|
||||
"maxSkillVoices": 8,
|
||||
"maxEnemyVoices": 8,
|
||||
"sha256": "6e0990d1246fc357ce6a6493db028f3ab476fd003010b49046ac17ceac051ae5"
|
||||
},
|
||||
{
|
||||
"file": "battle_2x.wav",
|
||||
"floatMaster": "battle_2x_float.wav",
|
||||
"seconds": 26.0,
|
||||
"samplePeakDbfs": -9.578677334465777,
|
||||
"truePeak4xDbfs": -9.474940870674805,
|
||||
"rmsDbfs": -31.007300179811196,
|
||||
"overRangeSamples": 0,
|
||||
"eventCount": 114,
|
||||
"maxSkillVoices": 8,
|
||||
"maxEnemyVoices": 8,
|
||||
"sha256": "a6f2052e36f5d14b99392c6f74d88fa9e4842a3e067a26dcdaba14ba0c1594aa"
|
||||
},
|
||||
{
|
||||
"file": "overlap_stress.wav",
|
||||
"floatMaster": "overlap_stress_float.wav",
|
||||
"seconds": 8.0,
|
||||
"samplePeakDbfs": -3.496114864043605,
|
||||
"truePeak4xDbfs": -3.4662523640408245,
|
||||
"rmsDbfs": -22.092218848433497,
|
||||
"overRangeSamples": 0,
|
||||
"eventCount": 240,
|
||||
"maxSkillVoices": 8,
|
||||
"maxEnemyVoices": 8,
|
||||
"sha256": "4d94bfec886f5c447ae1ec32b94c42233a1bc4836ebdecd251c53265d1c3a8fa"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -77,3 +77,8 @@ v2 试听反馈为“不好听”,与清脆轻松的游戏风格不符。v3
|
||||
- 音色:木琴(基频加 3.93×、9.2× 快衰泛音)、钟琴(1 / 2.76 / 5.40 / 8.93× 非谐泛音)、气泡 pop(快速上滑的正弦),以及 4ms 高通噪声作起音。
|
||||
- 映射:Click 气泡 pop;Tab 木琴 A6 轻敲;Toggle 两连 pop;Confirm 木琴 E6→B6 上行;Back 木琴 G6→D6 下行;Open 上滑加 E7 叮;Close 下滑加 G5 闷敲;Claim 钟琴 C6-E6-G6-C7 琶音加高音闪烁;Deny 两声低音柔和 boop;Notify 钟琴 G6→D7 叮叮。
|
||||
- 调整:改 `RECIPES` 里的音高、衰减和音量后运行 `python Tools/synth_ui_sfx.py --preview`,再在 Unity 里执行 `BuildUiSfx.Build`。
|
||||
|
||||
|
||||
## 当前试听入口(2026-10-22)
|
||||
|
||||
当前正式资源是v3,以上v1/v2均为历史。已将全部10条v3与正式《微风小镇》BGM按持久化音量离线混合,试听 [menu_ui.wav](../MixReview/menu_ui.wav);战斗及双速/叠加试听见 [MixReview/Production.md](../MixReview/Production.md)。未归一化,菜单样例4倍过采样峰值-4.31dBFS且零越界;主观听感仍待确认。
|
||||
|
||||