4bd00818e1
This is what the operator's report was actually describing, and it was never a CPU hitch: median frame was 12.2 ms with a kill costing ~15 ms, wave respawn is not a spike, and enemies carry no PhysicsCollider so corpses never blocked. Two bugs in PrototypeCameraRig.LateUpdate, both measured with a STATIONARY player so the ideal camera motion is exactly zero and everything observed is artifact: 1. Shake was integrated by the follow filter. The smoothing ran as Lerp(transform.position, desired, k), and transform.position already contained last frame's random shake — so the filter treated shake as real positional error and corrected only ~9 %/frame. Shake was never subtracted, just slowly lerped out while new shake piled on, so in sustained combat the camera random-walked around its framing and never settled. One kill left it 0.447 units off-frame and still 0.199 off 24 frames later. The follow now smooths a _basePos that shake never touches; shake is applied only when writing the transform. 2. The position HOLD froze the follow for a fixed number of RENDER frames on every kill and heavy hit (2, or 7 on a finisher), making the freeze framerate-dependent — 49 ms at 144 fps, 233 ms at 30 fps — and it took its base from transform.position, permanently baking that frame's shake in as a 0.283-unit single-frame jump. A camera that stops while the world keeps moving reads as a hitch, not as crunch. Dropped; impact rides the FOV punch + shake alone (operator's call). HitStopMaxFrames / HitStopFreezeEnabled / FinisherHoldFrames retire with it, and the three saved feel profiles drop the dead keys. Worth recording: dropping the hold ALONE measured slightly worse (max deviation 0.653 vs 0.447) — the hold had been partly masking the shake integration. Both fixes together: deviation returns to 0.000 within a few frames of a kill, mean deviation 0.038 across the window. The 0.428 peak is now the shake impulse itself, a transient punch that immediately returns instead of a drift that lingers. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
40 lines
953 B
JSON
40 lines
953 B
JSON
{
|
|
"name": "heavy-committed",
|
|
"notes": "LOCKED into code defaults 2026-07-21 (kept as the record of the winning A/B candidate). 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": "MeleeConnectFovKick",
|
|
"v": "1.1"
|
|
}
|
|
]
|
|
} |