docs(runicnpc): stage 5 spike, measured, and D263–D266 #310

Merged
whitlocktech merged 2 commits from docs/runicnpc-stage5-spike into main 2026-10-01 08:17:14 +00:00
Member

What

The stage 5 spike's answers, measured on both rigs on 2026-10-01, are now in runicnpc/PLAN.md under stage 5. The harness is runicnpc-rust#7. Your answers to the four questions it left open are recorded as D263–D266.

The headline: an NPC's bullets never hurt another NPC in Rust. BaseProjectile.ServerUse skips the hit unless the victim's faction is Horror, and that is what stage 1 actually saw (its "cover and facing states win" was wrong; that row is corrected). faction is a field nothing else reads, so our NPC marks only its own target Horror, and only for the length of its own shot. With that:

  • ours killed a stock scientist in 44–48 s, fought ours both ways, and shot boars and wolves;
  • an ally standing on the line of fire took 0 hits;
  • 100 of ours fighting 100 scientists cost 1.5–2.5 ms per think, against stage 1's 17.7–20.4 ms for Rust's own NPC sensing. That is about what fighting players costs.

Also measured:

  • Turrets (D259): player turrets already treat ours exactly as they treat Rust's scientists, and ours shoots back.
  • Kit items (D260): Rust's AI uses none of the extras in open ground, never fires a rocket launcher, and never uses up ammunition.
  • PVE (D261): TruePVE and NextGenPVE already allow ours both ways, like Rust's scientists. NextGenPVE ignores a "deny" answer, so the opt-out is RunicNPC's own.

Your answers

# Decision
D263 A fight with Rust's scientists stays one-sided (the scientist takes cover). A profile hostile to scientists fights only those within its own leash, and never walks into a monument to look for them
D264 turrets: always adds Outpost's and Bandit Camp's sentries; default is Rust's behaviour; ignore means no turret shoots it
D265 The main weapon's ammunition is endless, as in Rust; only D260's extras are used up
D266 Fire burns as it does in Rust, allies included

One thing the build still has to find: the hook that makes Outpost's sentries target always NPCs (D264). Rust's sentries refuse every ScientistNPC in their own code. The plan says so.

Rigs

The harness, TruePVE and NextGenPVE are removed from both rigs, with their config, data and language files. Both servers are running.

Checklist

  • I have read CONTRIBUTING.md.
  • Docs only.
  • AI tools were used. Tool(s): Claude Code (Claude Opus 5.5). The commits carry the Co-Authored-By trailer.
  • I agree that my contribution is licensed under GPL-3.0-or-later.

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

## What The stage 5 spike's answers, measured on both rigs on 2026-10-01, are now in `runicnpc/PLAN.md` under stage 5. The harness is runicnpc-rust#7. Your answers to the four questions it left open are recorded as D263–D266. **The headline:** an NPC's bullets never hurt another NPC in Rust. `BaseProjectile.ServerUse` skips the hit unless the victim's faction is `Horror`, and that is what stage 1 actually saw (its "cover and facing states win" was wrong; that row is corrected). `faction` is a field nothing else reads, so our NPC marks only its own target `Horror`, and only for the length of its own shot. With that: - ours killed a stock scientist in 44–48 s, fought ours both ways, and shot boars and wolves; - an ally standing on the line of fire took 0 hits; - 100 of ours fighting 100 scientists cost **1.5–2.5 ms per think**, against stage 1's 17.7–20.4 ms for Rust's own NPC sensing. That is about what fighting players costs. Also measured: - **Turrets (D259):** player turrets already treat ours exactly as they treat Rust's scientists, and ours shoots back. - **Kit items (D260):** Rust's AI uses none of the extras in open ground, never fires a rocket launcher, and never uses up ammunition. - **PVE (D261):** TruePVE and NextGenPVE already allow ours both ways, like Rust's scientists. NextGenPVE ignores a "deny" answer, so the opt-out is RunicNPC's own. ## Your answers | # | Decision | |---|---| | D263 | A fight with Rust's scientists stays one-sided (the scientist takes cover). A profile hostile to `scientists` fights only those within its own leash, and never walks into a monument to look for them | | D264 | `turrets: always` adds Outpost's and Bandit Camp's sentries; `default` is Rust's behaviour; `ignore` means no turret shoots it | | D265 | The main weapon's ammunition is endless, as in Rust; only D260's extras are used up | | D266 | Fire burns as it does in Rust, allies included | **One thing the build still has to find:** the hook that makes Outpost's sentries target `always` NPCs (D264). Rust's sentries refuse every `ScientistNPC` in their own code. The plan says so. ## Rigs The harness, TruePVE and NextGenPVE are removed from both rigs, with their config, data and language files. Both servers are running. ## Checklist - [x] I have read CONTRIBUTING.md. - [x] Docs only. - [x] AI tools were used. Tool(s): `Claude Code (Claude Opus 5.5)`. The commits carry the `Co-Authored-By` trailer. - [x] I agree that my contribution is licensed under GPL-3.0-or-later. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-01 06:02:46 +00:00
What the stage 5 spike measured on both rigs, written into the stage 5
section of runicnpc/PLAN.md: why an NPC's bullets never hurt an NPC (Rust
skips the hit unless the victim's faction is Horror) and the per-shot
mark that fixes it; what our own sensing costs against stage 1's; what
Rust's turrets, its AI and TruePVE or NextGenPVE do with our NPC; and
four questions the answers leave for the org lead.

Stage 1's row on fighting NPCs is corrected: its "cover and facing states
win" was not the cause.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-01 08:05:58 +00:00
The org lead's answers to the spike's four open questions (2026-10-01):
D263 a fight with Rust's scientists stays one-sided and our NPCs never
go hunting into monuments; D264 `turrets: always` adds Outpost's and
Bandit Camp's sentries; D265 the main weapon's ammunition is endless, as
in Rust; D266 fire burns as it does in Rust, allies included.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude changed title from docs(runicnpc): stage 5 spike, measured (D231, D253) to docs(runicnpc): stage 5 spike, measured, and D263–D266 2026-10-01 08:06:08 +00:00
whitlocktech merged commit 098c379918 into main 2026-10-01 08:17:14 +00:00
whitlocktech deleted branch docs/runicnpc-stage5-spike 2026-10-01 08:17:15 +00:00
Sign in to join this conversation.
No description provided.