Add formal enemies, remaining formal partners and synthesized UI SFX
- UI SFX v3: procedurally synthesized one-shots (Tools/synth_ui_sfx.py) wired to buttons, rewards, errors and red dots via UiSfx, gated by the SFX setting. - Five formal enemies (Hornlet, Dashlet, Shellhorn, HornCaptain, GreatHorn): Hunyuan 50k -> 2000-tri XPbr, DGXA TokenRig, Idle/Walk/Attack, nested per type in PrototypeArena; PrototypeBattle.Enemy gains presentation-only Moving/Strikes. - Formal partners for all ten pets in the arena and portraits, including new VineSprite, ThunderLeopard and TideWhale. - Pipeline fixes: reject local TokenRig fallback, drop loose mesh islands, configurable Unity run_script timeout, companion static stage. - Also includes concurrent work from another tool in this working tree (FlameLion, enemy combat FX, challenge mode, home explorer, server updates). - Resources registered in Doc/ResDesc_*.md; verified on isolated :18081. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "Dashlet",
|
||||
"kind": "Enemy",
|
||||
"usage": "enemy_visual",
|
||||
"profile": "biped_short",
|
||||
"boneMappingReady": true,
|
||||
"height": 0.5,
|
||||
"maxTriangles": 2000,
|
||||
"assetRoot": "Assets/Bundles/Characters/Enemy/Dashlet",
|
||||
"staticPrefab": "Assets/Bundles/Characters/Enemy/Dashlet/Dashlet.prefab",
|
||||
"approvedMesh": "AIClient/Assets/Bundles/Characters/Enemy/Dashlet/Dashlet.fbx",
|
||||
"rigSource": "Tools/output/enemy_dgx/Dashlet/high_rig/rigged.glb",
|
||||
"lowUp": "Y",
|
||||
"skinOverrides": [],
|
||||
"outputDir": "Tools/output/enemy_characters/Dashlet",
|
||||
"enemyPrefab": "Assets/Bundles/Characters/Enemy/Dashlet/Dashlet_Enemy.prefab",
|
||||
"reviewScene": "Assets/Bundles/Scenes/Review/Enemy_Dashlet_Review.unity",
|
||||
"reviewOriginX": 160,
|
||||
"rootBone": "bone_0",
|
||||
"chestBone": "bone_3",
|
||||
"faceRight": "bone_16",
|
||||
"faceLeft": "bone_20",
|
||||
"rightFoot": "bone_16",
|
||||
"leftFoot": "bone_20",
|
||||
"rightFootTip": "bone_17",
|
||||
"leftFootTip": "bone_21",
|
||||
"rightArm": "bone_6",
|
||||
"leftArm": "bone_10",
|
||||
"walkStride": 0.06,
|
||||
"walkLift": 0.018,
|
||||
"walkSeconds": 0.8,
|
||||
"walkBindCalibration": true,
|
||||
"walkSourceWeight": 0.25,
|
||||
"idleSeconds": 1.4,
|
||||
"idleBreath": 0.003,
|
||||
"idleSourceWeight": 0.06,
|
||||
"attackStyle": "body_slam",
|
||||
"attackSeconds": 0.9,
|
||||
"attackSourceWeight": 0.1,
|
||||
"attackWindup": 0.25,
|
||||
"attackImpact": 0.45,
|
||||
"attackRecover": 0.88,
|
||||
"attackLeanDegrees": 14,
|
||||
"attackArmDegrees": 25,
|
||||
"attackLunge": 0.025,
|
||||
"maxRootTilt": 25,
|
||||
"groundTolerance": 0.003,
|
||||
"anatomyNotes": "Inspected this Dashlet DGXA TokenRig original: 22 bones. Root0 pelvis with spine1..3 (chest3) -> neck4/head5; x-positive arm6..9 and x-negative arm10..13 hang from chest3; x-positive leg14 hip/15 knee/16 ankle/17 toe and x-negative leg18/19/20/21 hang from root0. Ears, horn and tail have no independent bones. Fast runner: shorter walk cycle than Hornlet.",
|
||||
"motions": [
|
||||
{
|
||||
"name": "Idle",
|
||||
"sourceDir": "Tools/output/enemy_characters/Dashlet/motions/Idle",
|
||||
"prompt": "a small bipedal imp stands upright and idles with gentle breathing, slightly bouncing with impatience",
|
||||
"duration": 2.0
|
||||
},
|
||||
{
|
||||
"name": "Walk",
|
||||
"sourceDir": "Tools/output/enemy_characters/Dashlet/motions/Walk",
|
||||
"prompt": "a small bipedal imp walks forward upright with quick alternating short steps and small arm swings",
|
||||
"duration": 2.0
|
||||
},
|
||||
{
|
||||
"name": "Attack",
|
||||
"sourceDir": "Tools/output/enemy_characters/Dashlet/motions/Attack",
|
||||
"prompt": "a small bipedal character performs one forward body slam attack and recovers to standing",
|
||||
"duration": 2.0
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "GreatHorn",
|
||||
"kind": "Enemy",
|
||||
"usage": "enemy_visual",
|
||||
"profile": "biped_short",
|
||||
"boneMappingReady": true,
|
||||
"height": 0.8,
|
||||
"maxTriangles": 2000,
|
||||
"assetRoot": "Assets/Bundles/Characters/Enemy/GreatHorn",
|
||||
"staticPrefab": "Assets/Bundles/Characters/Enemy/GreatHorn/GreatHorn.prefab",
|
||||
"approvedMesh": "AIClient/Assets/Bundles/Characters/Enemy/GreatHorn/GreatHorn.fbx",
|
||||
"rigSource": "Tools/output/enemy_dgx/GreatHorn/high_rig/rigged.glb",
|
||||
"lowUp": "Y",
|
||||
"skinOverrides": [],
|
||||
"outputDir": "Tools/output/enemy_characters/GreatHorn",
|
||||
"enemyPrefab": "Assets/Bundles/Characters/Enemy/GreatHorn/GreatHorn_Enemy.prefab",
|
||||
"reviewScene": "Assets/Bundles/Scenes/Review/Enemy_GreatHorn_Review.unity",
|
||||
"reviewOriginX": 220,
|
||||
"rootBone": "bone_0",
|
||||
"chestBone": "bone_3",
|
||||
"faceRight": "bone_16",
|
||||
"faceLeft": "bone_20",
|
||||
"rightFoot": "bone_16",
|
||||
"leftFoot": "bone_20",
|
||||
"rightFootTip": "bone_17",
|
||||
"leftFootTip": "bone_21",
|
||||
"rightArm": "bone_6",
|
||||
"leftArm": "bone_10",
|
||||
"walkStride": 0.08,
|
||||
"walkLift": 0.02,
|
||||
"walkSeconds": 1.3,
|
||||
"walkBindCalibration": true,
|
||||
"walkSourceWeight": 0.25,
|
||||
"idleSeconds": 2.0,
|
||||
"idleBreath": 0.004,
|
||||
"idleSourceWeight": 0.06,
|
||||
"attackStyle": "body_slam",
|
||||
"attackSeconds": 1.2,
|
||||
"attackSourceWeight": 0.1,
|
||||
"attackWindup": 0.25,
|
||||
"attackImpact": 0.45,
|
||||
"attackRecover": 0.88,
|
||||
"attackLeanDegrees": 12,
|
||||
"attackArmDegrees": 25,
|
||||
"attackLunge": 0.025,
|
||||
"maxRootTilt": 25,
|
||||
"groundTolerance": 0.003,
|
||||
"anatomyNotes": "Inspected this GreatHorn DGXA TokenRig original: 22 bones. Root0, spine1..3 (chest3), short neck4/head5; x-positive arm6..9, x-negative arm10..13 from chest3; x-positive leg14/15/16 ankle/17 toe and x-negative 18/19/20/21 from root0. Ram horns and cape have no independent bones; check cape weighting at the attack peak.",
|
||||
"motions": [
|
||||
{
|
||||
"name": "Idle",
|
||||
"sourceDir": "Tools/output/enemy_characters/GreatHorn/motions/Idle",
|
||||
"prompt": "a big heavy bipedal imp boss stands upright and idles with slow proud breathing",
|
||||
"duration": 2.0
|
||||
},
|
||||
{
|
||||
"name": "Walk",
|
||||
"sourceDir": "Tools/output/enemy_characters/GreatHorn/motions/Walk",
|
||||
"prompt": "a big heavy bipedal imp boss walks forward upright with slow heavy alternating steps",
|
||||
"duration": 2.0
|
||||
},
|
||||
{
|
||||
"name": "Attack",
|
||||
"sourceDir": "Tools/output/enemy_characters/GreatHorn/motions/Attack",
|
||||
"prompt": "a big heavy bipedal character performs one forward body slam attack and recovers to standing",
|
||||
"duration": 2.0
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "HornCaptain",
|
||||
"kind": "Enemy",
|
||||
"usage": "enemy_visual",
|
||||
"profile": "biped_short",
|
||||
"boneMappingReady": true,
|
||||
"height": 0.6,
|
||||
"maxTriangles": 2000,
|
||||
"assetRoot": "Assets/Bundles/Characters/Enemy/HornCaptain",
|
||||
"staticPrefab": "Assets/Bundles/Characters/Enemy/HornCaptain/HornCaptain.prefab",
|
||||
"approvedMesh": "AIClient/Assets/Bundles/Characters/Enemy/HornCaptain/HornCaptain.fbx",
|
||||
"rigSource": "Tools/output/enemy_dgx/HornCaptain/high_rig/rigged.glb",
|
||||
"lowUp": "Y",
|
||||
"skinOverrides": [],
|
||||
"outputDir": "Tools/output/enemy_characters/HornCaptain",
|
||||
"enemyPrefab": "Assets/Bundles/Characters/Enemy/HornCaptain/HornCaptain_Enemy.prefab",
|
||||
"reviewScene": "Assets/Bundles/Scenes/Review/Enemy_HornCaptain_Review.unity",
|
||||
"reviewOriginX": 200,
|
||||
"rootBone": "bone_0",
|
||||
"chestBone": "bone_3",
|
||||
"faceRight": "bone_16",
|
||||
"faceLeft": "bone_20",
|
||||
"rightFoot": "bone_16",
|
||||
"leftFoot": "bone_20",
|
||||
"rightFootTip": "bone_17",
|
||||
"leftFootTip": "bone_21",
|
||||
"rightArm": "bone_6",
|
||||
"leftArm": "bone_10",
|
||||
"walkStride": 0.07,
|
||||
"walkLift": 0.02,
|
||||
"walkSeconds": 1.1,
|
||||
"walkBindCalibration": true,
|
||||
"walkSourceWeight": 0.25,
|
||||
"idleSeconds": 1.8,
|
||||
"idleBreath": 0.003,
|
||||
"idleSourceWeight": 0.06,
|
||||
"attackStyle": "body_slam",
|
||||
"attackSeconds": 1.0,
|
||||
"attackSourceWeight": 0.1,
|
||||
"attackWindup": 0.25,
|
||||
"attackImpact": 0.45,
|
||||
"attackRecover": 0.88,
|
||||
"attackLeanDegrees": 14,
|
||||
"attackArmDegrees": 25,
|
||||
"attackLunge": 0.025,
|
||||
"maxRootTilt": 25,
|
||||
"groundTolerance": 0.003,
|
||||
"anatomyNotes": "Inspected this HornCaptain DGXA TokenRig original (cleaned source horncaptain_main.glb): 22 bones. Root0, spine1..3 (chest3), neck4/head5; x-positive arm6..9 and x-negative arm10..13 from chest3; x-positive leg14/15/16 ankle/17 toe and x-negative 18/19/20/21 from root0. Scarf, horns and tail have no independent bones. Bl_keep_main_island.py dropped the floating tail tip and a speck that TokenRig discards (they had broken bind alignment: max 0.36m); game mesh and rig share that cleaned source. The first 28-bone rig and its motions are kept in diagnostics/island_rig.",
|
||||
"motions": [
|
||||
{
|
||||
"name": "Idle",
|
||||
"sourceDir": "Tools/output/enemy_characters/HornCaptain/motions/Idle",
|
||||
"prompt": "a sturdy small bipedal imp leader stands upright and idles with confident gentle breathing",
|
||||
"duration": 2.0
|
||||
},
|
||||
{
|
||||
"name": "Walk",
|
||||
"sourceDir": "Tools/output/enemy_characters/HornCaptain/motions/Walk",
|
||||
"prompt": "a sturdy small bipedal imp leader walks forward upright with steady alternating short steps and arm swings",
|
||||
"duration": 2.0
|
||||
},
|
||||
{
|
||||
"name": "Attack",
|
||||
"sourceDir": "Tools/output/enemy_characters/HornCaptain/motions/Attack",
|
||||
"prompt": "a small bipedal character performs one forward body slam attack and recovers to standing",
|
||||
"duration": 2.0
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "Hornlet",
|
||||
"kind": "Enemy",
|
||||
"usage": "enemy_visual",
|
||||
"profile": "biped_short",
|
||||
"boneMappingReady": true,
|
||||
"height": 0.5,
|
||||
"maxTriangles": 2000,
|
||||
"assetRoot": "Assets/Bundles/Characters/Enemy/Hornlet",
|
||||
"staticPrefab": "Assets/Bundles/Characters/Enemy/Hornlet/Hornlet.prefab",
|
||||
"approvedMesh": "AIClient/Assets/Bundles/Characters/Enemy/Hornlet/Hornlet.fbx",
|
||||
"rigSource": "Tools/output/enemy_dgx/Hornlet/high_rig/rigged.glb",
|
||||
"lowUp": "Y",
|
||||
"skinOverrides": [],
|
||||
"outputDir": "Tools/output/enemy_characters/Hornlet",
|
||||
"enemyPrefab": "Assets/Bundles/Characters/Enemy/Hornlet/Hornlet_Enemy.prefab",
|
||||
"reviewScene": "Assets/Bundles/Scenes/Review/Enemy_Hornlet_Review.unity",
|
||||
"reviewOriginX": 140,
|
||||
"rootBone": "bone_0",
|
||||
"chestBone": "bone_3",
|
||||
"faceRight": "bone_16",
|
||||
"faceLeft": "bone_20",
|
||||
"rightFoot": "bone_16",
|
||||
"leftFoot": "bone_20",
|
||||
"rightFootTip": "bone_17",
|
||||
"leftFootTip": "bone_21",
|
||||
"rightArm": "bone_6",
|
||||
"leftArm": "bone_10",
|
||||
"walkStride": 0.06,
|
||||
"walkLift": 0.018,
|
||||
"walkSeconds": 1.0,
|
||||
"walkBindCalibration": true,
|
||||
"walkSourceWeight": 0.25,
|
||||
"idleSeconds": 1.6,
|
||||
"idleBreath": 0.003,
|
||||
"idleSourceWeight": 0.06,
|
||||
"attackStyle": "body_slam",
|
||||
"attackSeconds": 1.0,
|
||||
"attackSourceWeight": 0.1,
|
||||
"attackWindup": 0.25,
|
||||
"attackImpact": 0.45,
|
||||
"attackRecover": 0.88,
|
||||
"attackLeanDegrees": 14,
|
||||
"attackArmDegrees": 25,
|
||||
"attackLunge": 0.025,
|
||||
"maxRootTilt": 25,
|
||||
"groundTolerance": 0.003,
|
||||
"anatomyNotes": "Inspected this Hornlet DGXA TokenRig original: 22 bones, same topology as Dashlet but its own rig. Root0, spine1..3 (chest3), neck4/head5; x-positive arm6..9, x-negative arm10..13 from chest3; x-positive leg14/15/16 ankle/17 toe and x-negative 18/19/20/21 from root0. Horn, ears and long tail have no independent bones. Two earlier rigs were degenerate single chains from the local SkinTokens fallback and are kept only in Tools/output/enemy_dgx/Hornlet/diagnostics.",
|
||||
"motions": [
|
||||
{
|
||||
"name": "Idle",
|
||||
"sourceDir": "Tools/output/enemy_characters/Hornlet/motions/Idle",
|
||||
"prompt": "a small bipedal imp stands upright and idles with gentle breathing",
|
||||
"duration": 2.0
|
||||
},
|
||||
{
|
||||
"name": "Walk",
|
||||
"sourceDir": "Tools/output/enemy_characters/Hornlet/motions/Walk",
|
||||
"prompt": "a small bipedal imp walks forward upright with alternating short steps and gentle arm swings",
|
||||
"duration": 2.0
|
||||
},
|
||||
{
|
||||
"name": "Attack",
|
||||
"sourceDir": "Tools/output/enemy_characters/Hornlet/motions/Attack",
|
||||
"prompt": "a small bipedal character performs one forward body slam attack and recovers to standing",
|
||||
"duration": 2.0
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "Shellhorn",
|
||||
"kind": "Enemy",
|
||||
"usage": "enemy_visual",
|
||||
"profile": "biped_short",
|
||||
"boneMappingReady": true,
|
||||
"height": 0.5,
|
||||
"maxTriangles": 2000,
|
||||
"assetRoot": "Assets/Bundles/Characters/Enemy/Shellhorn",
|
||||
"staticPrefab": "Assets/Bundles/Characters/Enemy/Shellhorn/Shellhorn.prefab",
|
||||
"approvedMesh": "AIClient/Assets/Bundles/Characters/Enemy/Shellhorn/Shellhorn.fbx",
|
||||
"rigSource": "Tools/output/enemy_dgx/Shellhorn/high_rig/rigged.glb",
|
||||
"lowUp": "Y",
|
||||
"skinOverrides": [],
|
||||
"outputDir": "Tools/output/enemy_characters/Shellhorn",
|
||||
"enemyPrefab": "Assets/Bundles/Characters/Enemy/Shellhorn/Shellhorn_Enemy.prefab",
|
||||
"reviewScene": "Assets/Bundles/Scenes/Review/Enemy_Shellhorn_Review.unity",
|
||||
"reviewOriginX": 180,
|
||||
"rootBone": "bone_0",
|
||||
"chestBone": "bone_3",
|
||||
"faceRight": "bone_22",
|
||||
"faceLeft": "bone_26",
|
||||
"rightFoot": "bone_22",
|
||||
"leftFoot": "bone_26",
|
||||
"rightFootTip": "bone_23",
|
||||
"leftFootTip": "bone_27",
|
||||
"rightArm": "bone_6",
|
||||
"leftArm": "bone_13",
|
||||
"walkStride": 0.055,
|
||||
"walkLift": 0.016,
|
||||
"walkSeconds": 1.2,
|
||||
"walkBindCalibration": true,
|
||||
"walkSourceWeight": 0.25,
|
||||
"idleSeconds": 1.8,
|
||||
"idleBreath": 0.003,
|
||||
"idleSourceWeight": 0.06,
|
||||
"attackStyle": "body_slam",
|
||||
"attackSeconds": 1.0,
|
||||
"attackSourceWeight": 0.1,
|
||||
"attackWindup": 0.25,
|
||||
"attackImpact": 0.45,
|
||||
"attackRecover": 0.88,
|
||||
"attackLeanDegrees": 14,
|
||||
"attackArmDegrees": 25,
|
||||
"attackLunge": 0.025,
|
||||
"maxRootTilt": 25,
|
||||
"groundTolerance": 0.003,
|
||||
"anatomyNotes": "Inspected this Shellhorn DGXA TokenRig original: 28 bones (same topology as HornCaptain, own rig). Root0, spine1..3 (chest3), neck4/head5; x-positive arm6..8 with hand chain9..12, x-negative arm13..15 with chain16..19 from chest3; x-positive leg20/21/22 ankle/23 toe, x-negative 24/25/26/27 from root0. Back stone shell, brow plate and horn have no independent bones; check the shell stays rigid on the chest/spine at the attack peak.",
|
||||
"motions": [
|
||||
{
|
||||
"name": "Idle",
|
||||
"sourceDir": "Tools/output/enemy_characters/Shellhorn/motions/Idle",
|
||||
"prompt": "a stocky small bipedal imp with a heavy stone shell on its back stands upright and idles with slow gentle breathing",
|
||||
"duration": 2.0
|
||||
},
|
||||
{
|
||||
"name": "Walk",
|
||||
"sourceDir": "Tools/output/enemy_characters/Shellhorn/motions/Walk",
|
||||
"prompt": "a stocky small bipedal imp with a heavy stone shell walks forward upright with slow alternating short steps",
|
||||
"duration": 2.0
|
||||
},
|
||||
{
|
||||
"name": "Attack",
|
||||
"sourceDir": "Tools/output/enemy_characters/Shellhorn/motions/Attack",
|
||||
"prompt": "a small bipedal character performs one forward body slam attack and recovers to standing",
|
||||
"duration": 2.0
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user