Skip to content

Training targets, and restyle the character as an irregular fighter - #13

Merged
ralyodio merged 1 commit into
mainfrom
feat/targets-clean
Jul 26, 2026
Merged

Training targets, and restyle the character as an irregular fighter#13
ralyodio merged 1 commit into
mainfrom
feat/targets-clean

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Replaces #12, which was branched off a squash-merged branch and conflicted.

There was nothing to shoot at

character.glb was built and then had no consumer — the multiplayer entry point that would draw remote players doesn't exist yet — so the sandbox was an empty yard with a working rifle and no enemy. PRD §40 puts "one enemy and one rifle" ahead of everything else.

Five training targets now stand in the yard. They take hits, topple, and stand back up after three seconds.

Deliberately targets, not AI: there's no animation system, and a figure sliding around frozen in a standing pose looks worse than one that honestly stands still.

Hit detection is presentation only, like the weapon effects — the server owns registration via resolveHitscan. A target only counts if it's nearer than the world geometry behind it, so one standing behind a container can't be shot through it.

The character read as a Western regular

High-cut ballistic helmet, NVG mount, plate carrier with shoulder yoke, pauldrons — the wrong silhouette for a story whose stated premise is that neither nationality is the default villain, and whose two factions are fictional.

Restyled as an irregular fighter: cloth head wrap with tail and face cloth, field jacket, chest rig with rifle pouches and a bandolier, canvas satchel, rolled blanket, cloth knee wraps. No helmet, no optics mount, no armour plate.

Unmarked and fictional — no insignia, no script, no religious or ethnic signifiers. Faction identity is an armband and head-wrap band in the team colour, nothing else. CLAUDE.md gates Iranian/Farsi content on native review that hasn't happened.

201 tests pass. Format, lint, typecheck clean.

🤖 Generated with Claude Code

…ar fighter

**There was nothing to shoot at.** `character.glb` was built and then had no
consumer — the multiplayer entry point that would draw remote players does not
exist yet — so the sandbox was an empty yard with a working rifle and no enemy.
PRD §40 puts "one enemy and one rifle" ahead of everything else.

Five training targets now stand in the yard. They take hits, topple, and stand
back up after three seconds. Deliberately targets rather than AI: there is no
animation system and no client-side bot pathing, and a figure sliding around
frozen in a standing pose would look worse than one that honestly stands still.

Hit detection is presentation only, like the weapon effects — the server owns
hit registration through resolveHitscan. A target only counts if it is nearer
than the world geometry behind it, so one standing behind a container cannot be
shot through it.

**The character read as a Western regular** — high-cut ballistic helmet, NVG
mount, plate carrier with shoulder yoke, pauldrons. That is the wrong silhouette
for a story whose stated premise is that neither nationality is the default
villain, and whose two factions are fictional.

Restyled as an irregular fighter: cloth head wrap with a tail and face cloth,
field jacket, simple chest rig with rifle pouches and a bandolier, canvas
satchel, rolled blanket, cloth knee wraps. No helmet, no optics mount, no
armour plate.

It stays unmarked and fictional — no insignia, no script, no religious or
ethnic signifiers. Faction identity is carried by an armband and a head-wrap
band in the team colour and nothing else. CLAUDE.md gates Iranian/Farsi content
on native review that has not happened, and a caricature would fail that review
and the PRD's own §21.12 launch gate.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

vu1nz Security Review

0 finding(s) in PR #?

No security issues found.

@ralyodio
ralyodio merged commit 5d6736c into main Jul 26, 2026
6 checks passed
@ralyodio
ralyodio deleted the feat/targets-clean branch July 26, 2026 11:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant