# Detailed tactical shotgun upgrade

2026-10-30. The primitive weapon has been replaced in both first-person and teammate views. The new asset uses a rounded receiver crown, chamfered casing, recessed ejection window and sliding bolt, hollow muzzle, open heat shield, ribbed polymer pump, curved trigger/guard, shaped stock, rubber recoil pad and aligned aperture/front sights.

The selected Black survivor still supplies the actual hand/arm meshes, skin and sleeves. The existing support-hand reload, shell ejection, pump stroke, aim and recoil animations use the new parts. Remote survivors also cycle the new pump and bolt when their shot event arrives. Weapon balance and co-op authority are unchanged.

## Asset and visual direction

Original native Three.js geometry and deterministic base-colour, roughness and normal textures, generated once and shared. This is a real model in the renderer, not a concept image or a downloaded Call of Duty asset. It is not a claim of matching Call of Duty production quality. The existing shotgun contact dimensions were retained to preserve the survivor fit rather than asserting an exact firearm replica.

The source reference was [Mossberg's official tactical pump overview](https://resources.mossberg.com/journal/7-shots-now-available-in-mossbergs-legendary-590-tactical-shotguns): general silhouette, black synthetic furniture, matte metal and aperture-sight language. No reference image, manufacturer branding or source game content ships in the asset. No paid generation or purchase occurred.

The Flue installation was inspected (1.0.31); its documented context command is unavailable in that local version and no Blender bridge session exists. The supported alternative was direct game-engine geometry; no application, addon or package was installed.

21,780 triangles, 14 draws per instance. Six 256-square texture maps total 1.5 MiB of raw pixel data, plus runtime mipmaps. Geometry, materials and the small reflection capture are shared between players. Peer removal does not dispose resources still used by other players. Frustum culling is enabled for teammate guns. The reflection capture affects this asset's materials, preserving the characters' lighting and skin corrections.

## Verification

- 12 model checks pass: bounded geometry and texture memory, valid vertex attributes, material roles, an actually recessed muzzle/action, outward heat-shield normals, centred sight line, independent parts and clone isolation.
- 52 actual-survivor checks pass: the existing 44 animation checks plus both actual hand surfaces contacting the new gun triangles for all four survivors. Minimum sampled contacts range from about 0.001 to 0.18 mm. This is proximity evidence, not a guarantee against every intersection.
- Existing character intake checks pass again: 29 Rook and 33 each for Jeff, Fass and Joker.
- 49 gameplay/client/server logic tests and 13 four-session HTTP co-op checks pass.
- 64 game-browser checks pass; the browser showed no JavaScript errors. Visual inspection covered the asset sides, aimed sight picture, Rook reload in the club, and a selected survivor with the teammate weapon.

[Model checks](../evidence/shotgun-model-checks.json) / [actual hand and animation checks](../evidence/shotgun-fit-checks.json) / [browser checks](../evidence/shotgun-browser-checks.json) / [logic tests](../evidence/shotgun-tests.tap).

[Asset inspection](../evidence/shotgun-asset-review.png) uses isolated review lighting. [Game inspection](../evidence/shotgun-game-review.png) uses the actual production renderer in a labeled paused reload view.

## Limits

The existing generated hand meshes and fixed Meshy finger grips remain. This pass adds no new weapon class or captured animation. Casings remain cosmetic. A four-human Internet session and performance testing on other devices remain open. Detailed first-person geometry is shared with peers rather than a separate low-detail LOD.

Applied skills: Hard Surface, Three.js Materials & Lighting, Create Game Assets, Asset Optimization and the Game Dev Playbook. The local reusable lesson and applied ledger were updated; the installed playbook has no Git metadata, so no upstream lesson push is claimed.
