Docs: 07-19 melee weight pass session log (heavy cadence, salvage axe, FX retone) + inventory

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-19 10:26:45 -07:00
parent 4b18a368bd
commit 9079266397
2 changed files with 39 additions and 1 deletions
@@ -29,7 +29,7 @@ Catalog of the Synty Polygon packs under `Assets/Synty/`, produced by the [[DR-0
- **PolygonNature**: trees/rocks/foliage/water + skybox — terrain dressing, harvestable-node visuals. - **PolygonNature**: trees/rocks/foliage/water + skybox — terrain dressing, harvestable-node visuals.
- **PNB_Core**: shared sky/weather/water/aurora atmosphere (rain/snow/fog FX, skydome, 9 ShaderGraphs — verify under URP 17.4; use the skydome in the classic-URP cosmetic root, not baked EG meshes). - **PNB_Core**: shared sky/weather/water/aurora atmosphere (rain/snow/fog FX, skydome, 9 ShaderGraphs — verify under URP 17.4; use the skydome in the classic-URP cosmetic root, not baked EG meshes).
- **PolygonKaiju** (env half): 23 buildings incl. **pre-destroyed** highrises/blocks + 40 props (cars, boats, bridge+rubble, neon signs, powerlines, crane, jet, missile) — a ruined-city map + FX meshes (bullets/fire/stomp). - **PolygonKaiju** (env half): 23 buildings incl. **pre-destroyed** highrises/blocks + 40 props (cars, boats, bridge+rubble, neon signs, powerlines, crane, jet, missile) — a ruined-city map + FX meshes (bullets/fire/stomp).
- **PolygonFantasyKingdom**: castle/base kit + 15 **siege engines** → turret/structure visuals. **PolygonGeneric** `Models/Base`: sci-fi wall/floor kit with destroyed variants → buildable structures. **PolygonWestern/DungeonRealms/Carnival**: modular building kits, props. - **PolygonFantasyKingdom**: castle/base kit + 15 **siege engines** → turret/structure visuals. **PolygonGeneric** `Models/Base`: sci-fi wall/floor kit with destroyed variants → buildable structures. **PolygonWestern/DungeonRealms/Carnival**: modular building kits, props. **DungeonRealms `SM_Wep_*` IN USE 07-19**: `SM_Wep_Axe_Large_01` = the player's salvage axe (rigid-skinned to Hand_R via `PlayerRigTools.AttachMeleeWeapon`; atlas `Dungeons_2_Texture_01_A`); large axes/maces/picks ship as future per-frame weapon variants.
## FX / props ## FX / props
@@ -0,0 +1,38 @@
# 2026-07-19 — Melee weight pass: heavy cadence + salvage axe + FX retone
**Operator feedback on the 07-18 pass:** the swings read jerky (0.70.8 s mocap crammed into a 0.22 s window at 25× speed), the diver swings empty-handed, and the bright slash arc doesn't fit the murk. Direction delegated ("bulkier weapon and lighter fx… you figure it out").
**The read:** the three problems share one fix — a heavy underwater diver should swing SLOW. A weighty cadence lets the clips play near natural speed (kills the jerk), justifies a bulky tool in hand, and wants subdued water-wake FX instead of a laser arc.
## What shipped
**1. Heavy swing timing (gameplay feel, no wire change)**
- `PlayerAimSystem.CastFacingTicks` 13 → **26** (~0.43 s): the cast-turn + swing-anim window now tracks the full swing. Invariant: MUST stay < `MeleeRecoverTicks` (the anim pulse needs a false gap between chained swings to re-trigger the Any-State transition).
- `TuningConfig.Defaults()`: `MeleeRecoverTicks` 16 → **30** (~0.50 s lock), `MeleeChainGraceTicks` 18 → 24, `MeleeDamage` 18 → **30** (DPS ≈ held), `MeleeFinisherMult` 1.8 → **1.5** (finisher recover was ballooning at the heavy cadence). All live knobs.
- Clip speeds re-set near natural: Swing1 **1.25×**, Swing2 **1.0×**, Swing3 **1.1×**; entry blends 0.03 → 0.06, exits 0.12 → 0.15.
- **SpecialSlam = a custom take** `A_Attack_HeavyCombo01A_Slam_Sword` (starts 22% into the fbx, skipping ~2/3 of the 1 s windup) at 1.5× — no more comic 5× compression. Take is created idempotently by the wire tool on the pack fbx importer.
- **Tests:** `MeleeComboTests.MakeWorld` now PINS an explicit `TuningConfig` (the values the mechanics assertions were authored against) — live feel defaults are free to drift without breaking mechanics tests. The ComboLength2 test modifies the pinned singleton instead of creating a second one (two singletons = `TryGetSingleton` false = silent Defaults fallback).
**2. Salvage axe in hand** (`PlayerRigTools.AttachMeleeWeapon`, menu `ProjectM/Animation/Player - Attach Melee Weapon (LANTERN)`, idempotent)
- `SM_Wep_Axe_Large_01` (PolygonDungeonRealms) rigid-skinned 100% to **Hand_R** — an in-engine variant of the GraftSmr rebase recipe for a STATIC source mesh: verts baked to hand-rest world space × a grip offset, bindpose = rigid hand-rest inverse, `RecalculateTangents` (mandatory), mesh persisted GUID-stably (`Rebased_SM_Wep_Melee.asset`). Grip offset consts (`WeaponGripPos/Euler`) at the top of the tool — nudge + re-run.
- Material `M_Weapon_Animated.mat` = AnimatedLitShader clone of the suit material + the **explicit** `Dungeons_2_Texture_01_A` atlas. **Gotcha confirmed again: the fbx importer material carries NO texture** — a `mainTexture` fallback silently kept the suit atlas, caught ONLY by the material-VALUES check (the murk render masked it). Axe reads bronze head / wood handle — matches the brass kit.
**3. FX retone (CombatFeedbackSystem)**
- Slash arc: dim bioluminescent teal (0.5,0.9,1.05 → 0.8,1.3,1.4 per step), finisher = lamp-warm amber (1.7,1.25,0.5); inner alpha 0.55 → 0.35; life 0.150.28 → **0.300.50** (tracks the heavy swing); scale pop 0.10 → 0.06; connected boost 1.6 → 1.4. Remote arcs match (life 0.34/0.50, `RemoteSlashColor` dimmed).
- New knobs: `FeelConfig.MeleeArcIntensity` (1.0; live dimmer) + `MeleeArcBubbles` (6) — a small bubble burst sheds along the cleave path per swing (the murk answers the swing).
**4. Dev harness:** `DebugInputInjectionSystem.Attack(frames)` — injects the melee Attack button (was Fire/sockets/move only), so a real predicted swing (sim + anim + arc + bubbles) is drivable headless. Used for the validation captures.
## Validation
- L1 console error-free. L2 EditMode green (411 at the time — pinned melee tests included).
- L3 end-to-end: injected real Attack input → guardian-timed captures show windup/hit/follow-through at the new pacing with the axe in hand and the toned arc; material VALUES verified (`_BaseColorMap` = the Dungeons atlas).
## Open follow-ups
- **Grip micro-polish is operator eyes-on**: `WeaponGripPos/Euler` consts in `AttachMeleeWeapon` (currently pos (0,0.06,0.02), euler (0,0,-90)) — the axe reads right in stills but only a live look judges the blade plane through the whole swing.
- If the arc now reads TOO faint in play: `FeelConfig.MeleeArcIntensity` (live-pokeable).
- Melee DPS was re-balanced by feel-math (30 dmg / 0.5 s ≈ old 67/s → 60/s); a proper balance pass over enemy HP may want a look.
- Weapon variants per frame-kind (axe/mace/pick all ship in DungeonRealms) — the tool takes one const path today.
**Next-session intent:** operator eyes/ears-on: swing weight (knobs: `MeleeRecoverTicks`, clip speeds in the `swaps` table), grip offset, arc intensity.