Skip to content

Drift — Round 2 Gameplay Specification Evaluation

No changes to spec since Round 1. Drift remains a geometric masterpiece combining mathematical rigor with sophisticated audio design. The single minor gap (hot swap phase chain byte format) is identical to SynthFence and equally non-blocking.

Round 2 Re-Confirmation: All Round 1 scores hold. The module’s exclusive strengths (bearing-to-frequency mapping, three-bearing triangulation as core loop, audio-only mode as accessibility feature) remain exemplary. PASS threshold (40+) maintained decisively at 49/50.


#CriterionR1R2ChangeStatus
1OODA/Core Loop Clarity5/55/5✓ Perfect atomic unit (8–12 second OODA cycle)
2Cell Architecture Completeness5/55/5✓ Five cell types fully specified with handlers
3Key Mapping Exhaustiveness5/55/5✓ All 30 keys mapped (left grid + numpad cardinal directions)
4PSG Audio Specification5/55/5✓ Geometric audio design (bearing sonar, harmonic feedback, threat pulse)
5Screen Wireframe Coverage5/55/5✓ Five detailed wireframes, all 80×25 compliant
6Hot Swap Integration4/54/5✓ Strong campaign but phase-chain byte format not specified
7Mission Template Specificity5/55/5✓ Four archetypes with procedural variation and threat scaling
8Session Walkthrough Depth5/55/5✓ Complete 26-turn session with turn-by-turn annotation
9Platform Constraint Adherence5/55/5✓ All hardware/software constraints respected
10Engineering Readiness5/55/5✓ C engineer can implement directly (triangulation geometry is clean)
TOTAL49/5049/50STRONG PASS

Detailed Analysis: No Changes Since Round 1

Section titled “Detailed Analysis: No Changes Since Round 1”

Atomic unit well-defined: 8–12 second OODA cycle. OBSERVE (listen to bearing), ORIENT (interpret angle), DECIDE (move antenna or lock bearing), ACT (press key). Irreversibility: antenna moves permanent, bearings locked until triangulation. Timing precise: bearing 0° = 200 Hz, bearing 90° = 500 Hz, bearing 180° = 800 Hz. Turn cost explicit (antenna move = +1 awareness, bearing lock = +1 awareness, INFO query = +0).

Five cell types (SIGNAL_SOURCE_CELL, ANTENNA_CELL, TRIANGULATION_CELL, SURVEILLANCE_THREAT_CELL, FIELD_CELL) defined in pseudo-C with CELL_TYPE macros. Each has state fields, ON_* handlers, ON_DISPLAY. Struct layout inferred directly. Memory-safe (uint16_t for coords, uint8_t for angles, confidence %).

Left-hand function keys fully mapped: CAR (next antenna), CDR (prev antenna), CONS (lock bearing line), EVAL (confirm/intercept), APPLY (amplify, +15dB, +3 awareness), BACK (SILENT mode, pause activity, decay awareness), NIL (reset all bearings, +2 awareness cost), QUOTE (bookmark triangulation), INFO (query bearing numeric, +0 awareness). Right-hand numpad: 8/2/4/6 for antenna movement (N/S/W/E cardinal directions), 1/2/3 for quick antenna select. All 30 keys accounted for. Lisp grammar intact.

Three voices fully specified with frequency/amplitude tables:

  • Voice 1 (bearing sonar): 0° = 200 Hz, 90° = 500 Hz, 180° = 800 Hz, 270° = 500 Hz, interpolated for all 360°. Signal strength modulates tone (80+ dB = pure, 60–80 = fuzzy, 45–60 = buried, <45 = inaudible). Multipath ghosts (threat 5+): three tones with 100–300ms delays.
  • Voice 2 (triangulation harmony): Major triad on excellent geometry (±0.5 cells error), dissonance on poor geometry (±5+ cells).
  • Voice 3 (threat beat): 0–20 awareness = silent, 21–40 = 1 Hz beat (faint), 41–60 = 2 Hz (dissonant tritone), 61–80 = 3–4 Hz (loud), 81–100 = chaotic noise.

Envelope timing specified: 500ms dissonance on watchlist, 1s on position limit, 2s on margin call. Audio-only mode mastery documented (screen off, button feedback tones: 8=rising, 2=descending, 4=left pan, 6=right pan).

Five detailed ASCII wireframes, 80×25 format, amber on black: (1) Mission Board, (2) Triangulation Display, (3) Move-to-Target Phase, (4) Bitmap Mode (optional grid visualization), (5) Audio-Only Mode. All include action bar and status row. Compliant with platform constraints.

Strong campaign structure: SIGNAL HUNT (multi-phase): Phase 1 DRIFT (locate source via triangulation) → Phase 2 SHELLFIRE (manage frequency bands, extract payload, window opens only if DRIFT succeeded) → Phase 3 ICE BREAKER (intrude network, retrieve encryption keys).

Minor Gap: Phase chain serialization mentioned but byte-level format not specified. What gets passed from Phase 1 to Phase 2?

  • Likely: antenna_positions[3][2], locked_bearings[3], triangulation_confidence, final_threat_level
  • Round 1 Recommendation: Document the struct layout
  • Round 2 Status: Gap persists (spec unchanged)

Impact: Non-blocking. Struct can be inferred from narrative. Suggest: add concrete C struct in design review or SHELLFIRE integration spec.

Four contract archetypes:

  • CORPORATE CALL INTERCEPTION: Threat 2, 26-turn window, 1,400 ¤, civilian awareness baseline
  • DISTRESS BEACON RESCUE: Threat 3, 22-turn window, 1,800 ¤, time-critical, higher initial awareness
  • PIRATE FREQUENCY SWEEP: Threat 3, 20-turn window, 2,400 ¤, moving target (source drifts on patrol route)
  • MILITARY INSTALLATION PROBE: Threat 5, 18-turn window, 4,500 ¤, multipath environment (ghosts increase confusion)

Procedural variation: LFSR seeds source location (x,y) on 16×10 grid, signal strength formula (100 − distance × 3.5 dB), threat level affects awareness decay rate and hunter spawn threshold. Window sizes scale with threat.

One complete session (“THE FIX,” Threat 2, 26-turn window, operator “Rep 12”) with minute-by-minute and turn-by-turn annotation. 22 discrete scenes/turns: boot/briefing (0:00), antenna init (0:45), antenna A repositioning (1:15–1:50), first bearing locked (1:50), antenna B repositioning (2:30–3:00), second bearing locked (3:00), antenna C repositioning (3:35–4:45), move-to-target phase (4:45–5:30). Keystroke-by-keystroke: “numpad 6, 6, 6” for three east moves. Audio state changes (Voice 1 rising, Voice 1 stabilizing, Voice 2 glissando, Voice 2 triad, Voice 3 escalation). Awareness escalation pattern explicit. Tight margin (4 turns buffer). 22 turns annotated turn-by-turn.

80×25 display respected. 30-key layout (14 function + 16 numpad). Lisp grammar preserved. Cell pool: five cell types, each <64 bytes. YM2149 3-channel (Voice 1 bearing sonar, Voice 2 harmonic feedback, Voice 3 threat pulse). Cipher voice integrated. Grid-based geometry (16×10 grid). Nosh API delegates to display/sound. Audio-only mode respects YM2149 constraints (no stereo, panning inferred from pitch modulation and button feedback tones).

C11 engineer can implement directly. Bearing-to-frequency mapping is deterministic (freq = 200 + bearing × 3.33 Hz). Signal strength formula explicit (100 − distance_cells × 3.5 dB). Triangulation geometry is standard 2D line-of-sight (three bearing lines, solve for intersection, compute confidence from angle between lines). Hunter spawn/movement straightforward (spawn at awareness >= 50, move toward nearest antenna every 2 turns, interception on collision). Audio callback updates Voice 1 pitch, Voice 2 chord, Voice 3 beat tempo each frame. Awareness decay on BACK press (enters SILENT mode, awareness −= 1 per turn until exiting). All state machines explicit. Mission templates instantiate via seed + threat level lookup table.


The Single Minor Gap (Harmless, Identical to SynthFence)

Section titled “The Single Minor Gap (Harmless, Identical to SynthFence)”

Hot Swap Phase Chain Serialization (4/5):

Round 1 feedback: “phase chain serialization for hot swap” mentioned but not byte-level format.

Round 1 Recommendation:

typedef struct {
int16_t antenna_final_positions[3][2]; // Where they ended up
uint16_t bearing_angles[3]; // Locked bearing values
uint8_t triangulation_confidence; // 0–100
uint8_t final_threat_level; // For SHELLFIRE awareness baseline
} PhaseChainDriftState;

Round 2 Status: Spec unchanged. Gap persists.

Severity: VERY LOW

  • Not a blocker for implementation
  • Drift can be coded, tested, shipped without this detail
  • SHELLFIRE phase 2 can verify Phase 1 success (did operator triangulate, or guess?)
  • Struct can be finalized in integration testing or SHELLFIRE spec

Drift’s Exclusive Strengths (Persisting from Round 1)

Section titled “Drift’s Exclusive Strengths (Persisting from Round 1)”
  1. Geometric rigor with audio as primary sense: Bearing-to-frequency mapping (0° = 200 Hz, 90° = 500 Hz, 180° = 800 Hz) is mathematically clean. Players learn to estimate direction from pitch, not visual cues. Not a gimmick; it’s a real skill. Audio-only mode enables players with visual impairments to play at mastery level. Inclusive design.

  2. Signal strength modulation for information depth: Voice 1’s tone quality (pure at 80+ dB, fuzzy at 60–80, buried at 45–60) teaches signal-to-noise understanding. Multipath ghosts (threat 5+) add realism—three tones at staggered delays simulate RF reflection. Player learning to filter the primary tone by temporal arrival is learning actual RF engineering concepts.

  3. Three-bearing triangulation as core loop: Acquiring one bearing is easy (5 turns), two bearings still ambiguous (still 2 possible target points), three bearings locks it (convergence). Turn count to confidence progression (1 bearing = out of range, 2 bearings = ±2 cells error, 3 bearings = ±0.5 cells with major triad harmony) mirrors real triangulation geometry. Voice 2’s harmony quality (major = confident, diminished = poor) makes geometry feedback audible.

  4. Threat scaling via awareness escalation: Unlike other modules (time pressure, margin calls), Drift’s threat is cumulative awareness. Operator movements make noise (RF emissions), queries are quieter. Awareness accelerates toward Hunter spawn (50 → 100), Voice 3’s beat tempo increases (1 Hz → 4 Hz → chaotic). Operator hears their own doom approaching. Final 4–5 turns under time pressure + escalating Voice 3 creates palpable tension.

  5. Session walkthrough as pedagogical artifact: “THE FIX” shows not just gameplay, but operator learning curve. Turns 1–5: “No signal, antenna too far.” Turn 6: “First bearing acquired.” Turns 7–11: “Geometry ambiguous.” Turns 12–16: “Three bearings locked, major triad resolves, confidence 91%.” Operator understands the game’s system, not memorizing moves.

  6. Campaign narrative via phase chain: SIGNAL HUNT (3-phase): Phase 1 (DRIFT) locates RF source → Phase 2 (SHELLFIRE) extracts encrypted payload (window opens only if Phase 1 completed) → Phase 3 (ICE BREAKER) retrieves keys to decrypt Phase 2’s payload. Operators understand why they swap (capability unlock).


Spec Quality: Exemplary. Sets the standard for audio-visual integration and accessibility-first design.

Engineering Readiness: 5/5 — Geometry is clean (2D line-of-sight, no complex physics). Audio is event-driven. No blockers.

Estimated Timeline:

  • Cell handlers + signal geometry: 2 weeks
  • YM2149 voice callbacks (bearing-to-frequency): 2 weeks
  • Screen rendering + BITMAP mode: 1.5 weeks
  • Hunter AI + awareness decay: 1 week
  • Mission template instantiation: 1 week
  • Audio-only mode + button feedback: 1 week
  • Session testing + tuning: 1.5 weeks
  • Total: ~10 weeks for production quality

Risk Level: LOW — Triangulation solver is straightforward linear algebra (three lines, solve for intersection). Audio-only mode requires careful tuning but is non-critical for Phase 1 launch.

Minor Gap (Phase Chain Serialization): Does not impact prototyping. Resolve in SHELLFIRE integration review.


Verdict: PASS (49/50) — READY FOR SPRINT

Section titled “Verdict: PASS (49/50) — READY FOR SPRINT”

Recommendation: Move Drift to implementation sprint immediately. The single minor gap (phase chain byte format) is design review caliber and should not delay coding. Suggest: address in SHELLFIRE integration spec or SIGNAL HUNT campaign document.

Note on Strengths: Drift’s accessibility-first design (audio-only mode with button feedback tones mapping to bearing angles) is exemplary. This approach should influence design of future modules. Audio-only gameplay is not a novelty feature; it’s genuine skill expression and inclusion.


END OF EVALUATION