Data-driven tuning bench: feel profiles (JSON gestalts + overlay A/B), asset-derived timing audit, server-measured combat probe

FeelProfileService: partial-apply profiles ride the authoritative SetTuning
path + FeelConfig reflection; Save-current captures hand-dialed state; 3
starter profiles (baseline-0720 / heavy-committed / snappier, DPS-held).
TuningAuditTools: contact truth derived from clip WindUp takes / state
speeds vs MeleeTiming (drift detector), coupling invariants, cadence/DPS,
reach-honesty ratio off the baked weapon mesh (now x0.93/x1.16, was >2x).
CombatProbe: dummy + injected mash chain, per-swing server-measured
start/contact/damage + cadence/DPS report. Verified live: snappier profile
apply -> measured 24/24/36 gaps, +12/+8/+15 contacts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-20 21:28:33 -07:00
parent 2b742f0179
commit 730bad3d74
15 changed files with 520 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c9422a862aa42ce49be71d2cab58f0b8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,20 @@
{
"name": "baseline-0720",
"notes": "The shipped 07-20 defaults (forks 1-6). Apply to RESET after experiments. DPS ~60 held: dmg = recover ticks.",
"sim": [
{ "k": "MeleeDamage", "v": "30" },
{ "k": "MeleeRange", "v": "2.2" },
{ "k": "MeleeRecoverTicks", "v": "30" },
{ "k": "MeleeChainGraceTicks", "v": "24" },
{ "k": "MeleeFinisherMult", "v": "1.5" },
{ "k": "MeleeFinisherRangeMult", "v": "1.25" },
{ "k": "MeleeBufferTicks", "v": "8" },
{ "k": "MeleeContactTicks", "v": "16" }
],
"feel": [
{ "k": "MeleeArcIntensity", "v": "1" },
{ "k": "MeleeArcBubbles", "v": "6" },
{ "k": "FinisherHoldFrames", "v": "5" },
{ "k": "CombatIdleHoldSec", "v": "4" }
]
}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d5f21d9955bf61d4ca0e4543712e8b46
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,17 @@
{
"name": "heavy-committed",
"notes": "Slower, weightier: MonHun-lean. Longer lock + contact, bigger hit + hold, dimmer arc (the weapon is the read). DPS ~60 held.",
"sim": [
{ "k": "MeleeDamage", "v": "36" },
{ "k": "MeleeRecoverTicks", "v": "36" },
{ "k": "MeleeChainGraceTicks", "v": "28" },
{ "k": "MeleeContactTicks", "v": "20" },
{ "k": "MeleeBufferTicks", "v": "10" },
{ "k": "MeleeSwingMoveScale", "v": "0.25" }
],
"feel": [
{ "k": "MeleeArcIntensity", "v": "0.8" },
{ "k": "FinisherHoldFrames", "v": "7" },
{ "k": "MeleeConnectFovKick", "v": "1.1" }
]
}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2ed6c17ceb8dc044f885d858b99e9a21
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,17 @@
{
"name": "snappier",
"notes": "Faster, Hades-lean: shorter lock + contact, lighter hits, freer movement mid-swing. DPS ~60 held. Contact 12 keeps step-3 (15t) under CastFacingTicks 26.",
"sim": [
{ "k": "MeleeDamage", "v": "24" },
{ "k": "MeleeRecoverTicks", "v": "24" },
{ "k": "MeleeChainGraceTicks", "v": "20" },
{ "k": "MeleeContactTicks", "v": "12" },
{ "k": "MeleeBufferTicks", "v": "8" },
{ "k": "MeleeSwingMoveScale", "v": "0.45" }
],
"feel": [
{ "k": "MeleeArcIntensity", "v": "1.1" },
{ "k": "FinisherHoldFrames", "v": "4" },
{ "k": "MeleeConnectFovKick", "v": "0.7" }
]
}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b58b377cf031b0b489bd1e1234a1f3ec
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: