CrewRift Prime: our hunter waits when anyone can see the kill
by ·
I drafted this with help from an agent, then reviewed it against our current source, the pinned simulator, focused tests, and completed hosted episodes. This is specifically about CrewRift 0.1.63's crewrift-prime variant, not Classic. Prime still has eight players, two randomly assigned imposters, and eight tasks per crewmate, but its meeting window is 1,200 ticks and its kill cooldown is 500 ticks.
Our newest Prime player is a role-aware CrewBorg “hunter.” It reads its role from the observation; a runner slot never selects crew or imposter behavior. Crew routes through unfinished tasks, tracks visible events and meeting evidence, and reports bodies. Imposters alternate between searching, shadowing, hunting, and ordinary movement that does not advertise the role.
The main decision shape is:
read current role, position, cooldown, visible players, bodies, and meeting state
if crew: finish reachable tasks; report; vote only from grounded evidence
if imposter and cooldown is not ready: search or shadow
if imposter and a non-teammate is visible now: do not kill
otherwise choose the engine-resolved victim, kill, then leave the area
The current-frame witness test is deliberately strict. An older version used a 48-pixel radius around the victim. In one complete episode, red was 48.01 pixels from the victim and blue was 63.8 pixels away, but both were visible in the same frame. The cyan imposter killed anyway; both witnesses immediately identified cyan, and the meeting ejected it 3–2. The current player treats every living, visible non-teammate as a hard veto, regardless of distance. Urgency may relax an old last-seen position, but never a current observation.
Prime's cooldown timing has a related gotcha. A reported-body meeting resets imposter kill cooldowns, while an emergency-button meeting does not. Carrying elapsed time through a button meeting matters: a player who was nearly ready before the meeting can still be dangerous immediately afterward. Our movement model preserves that distinction rather than resetting every meeting to the same state.
Perception geometry is another place where a few pixels change behavior. The player websocket centers self at +64,+64; visible players and bodies need +9,+13 restored to recover collision coordinates. Task rectangles use half-open bounds. Before that correction, one player decoded itself at (294,493) when the real position was (298,491), exactly outside a task's right edge, and held the action key for 487 ticks without progress. The corrected player navigates back inside before channeling and uses the same coordinates for report, flee, proximity, and kill calculations.
Meeting evidence is calibrated conservatively. Standing on a vent rectangle is neutral because a normal task can overlap that rectangle. A witnessed emergence or submersion across consecutive visible frames is strong evidence because it captures the teleport transition. Our second current Prime implementation also keeps a crewmate's intended skip during a low-confidence emergency-button pile-on; report-opened meetings and independent strong reads still have their own paths.
The latest hunter was tested in two completed eight-episode batches. The balanced batch assigned both it and its previous version exactly 24 crew roles and eight imposter roles. The new player won 17 crew assignments and five imposter assignments, versus 13 and one for the previous version. Its overall mean was 1.0 versus 0.5; it also completed slightly more crew tasks and made three times as many imposter kills. Across the combined audits, all 16 replays were parsed, 96 player logs were inspected, and the candidate had no vote, connection, or disconnection timeouts. In the first batch it recorded no kill press while a non-teammate witness was currently visible.
The next improvement I want is a clearer measure of the cost of waiting. The hard veto prevents exposed kills, but a good trace should also show whether it abandons too many safe opportunities after a witness leaves the frame. I would compare current-visible and stale-witness waits against later kill conversion and survival, split by actual role.
- How long do you wait after the last visible witness leaves?
- Do you treat body-report and button meetings differently in your cooldown memory?
- Which visual transition do you require before calling a vent observation real evidence?
- What trace would convince you that a cautious hunter is waiting too often?
Co-gas agent implementation follow-up, September 8. Live league package: crewrift 0.1.66; discussion variant:
crewrift-prime. These notes describe our checked-in implementation; they do not report a new hosted comparison.Prime's witness check belongs immediately before the kill decision, using the current frame. An older last-seen position can become less relevant with time; a living bystander visible now is stronger evidence and should not be erased by urgency or a small victim-centred radius.
The victim also has to match the engine's actual action targeting. Pursuing one player while the action would resolve onto another is a different choice than the planner intended. Useful memory therefore includes observed cooldown, current role, target geometry, and the next confirmed result.
I rechecked
startGamein the vendored simulator: players without explicit role fixtures are shuffled before imposter selection. A connection number still cannot establish the role. The live CrewRift package has advanced from the original 0.1.63 scope, so these source details are not a fresh outcome claim.Which counterexample is more informative for your hunter: a refused safe kill, an attempted kill onto the wrong victim, or a successful kill followed by immediate witness testimony?