A Data-First Approach to Player Assessment in Njordfel Futures
Battleship is a solved information game with a tractable decision space, making it an effective vehicle for measuring cognitive function. This paper describes a system that actively selects ship placement strategies to isolate five cognitive dimensions, records player actions with millisecond precision, and generates AI-powered assessments from the raw data. The player owns all data collected. The system stores actions and timestamps in kilobytes; all inference is computed on read and can be replaced as models improve. The data accrues value over time without structural change.
Battleship has properties that make it unusually well-suited for cognitive measurement. Each attack is a discrete, observable decision. The decision space is bounded (100 cells, binary outcomes). The game has no hidden mechanics — every outcome is deterministic given the board state. And critically, the game requires multiple cognitive systems simultaneously: spatial reasoning, probabilistic thinking, memory, pattern recognition, and impulse control.
Most games conflate these systems. A chess mistake could be a calculation error, a positional misjudgment, or a time pressure failure. In Battleship, we can isolate variables by controlling what the player faces. The opponent's ship placement is the independent variable. The player's attack sequence is the dependent variable. Everything else is held constant.
Each bot game the player plays, the system selects a placement strategy designed to isolate one cognitive dimension. The bot's targeting AI stays at the difficulty level the player chose — only the ship placement is overridden. The player is unaware of the probe; the game feels identical.
| Probe | Placement | Dimension | What It Measures |
|---|---|---|---|
| Spread | Ships in separate quadrants | Working Memory | Can the player track multiple regions and return to unresolved areas after a sink? |
| Gapped | No ships adjacent (including diagonals) | Inhibitory Control | After sinking a ship, does the player waste shots on adjacent cells? |
| Aligned | All ships same orientation | Pattern Recognition | Does the player detect the orientation pattern and adapt their search? |
| Stealth | Anti-probabilistic positioning | Probabilistic Reasoning | How efficiently does the player eliminate the search space? |
| Cluster | Ships packed in center zone | Strategic Planning | Does the player prioritize high-density regions early? |
The first game a player plays uses random placement to establish a baseline efficiency score. Subsequent games rotate through probes, prioritizing the dimension with the fewest data points. This ensures balanced coverage across all five dimensions with minimal games played.
The selector counts how many times each probe type has been used for the current player. It picks the probe with the fewest samples. Ties are broken randomly. This greedy approach ensures convergence to uniform coverage without requiring a fixed sequence, which would be detectable by pattern-sensitive players.
Each probe has a specific metric computed from the player's attack sequence:
Every game event is recorded with Date.now() millisecond timestamps. However, raw attack-to-attack timing in bot games is contaminated by the bot's artificial thinking delay (500–3000ms depending on difficulty). To isolate the player's actual deliberation time, we compute:
deliberation = player_attack.ts_ms - last_bot_or_system_event.ts_ms
This strips out the bot's turn entirely. What remains is the time between the player gaining control and the player acting — their actual thinking time, plus negligible network latency.
Deliberation time is further segmented by context: post-hit versus post-miss. The ratio between these reveals cognitive processing style. A player who slows down after misses is recalculating (analytical). A player who speeds up after misses may be frustration-firing (reactive). A player with consistent timing regardless of outcome is following a predetermined strategy (systematic).
The system has two layers that are deliberately decoupled:
This separation means the raw data accrues value over time. As inference models improve, historical games can be reassessed without re-collection. The data outlives any specific model.
| Table | Rows Per Game | Bytes Per Row | Purpose |
|---|---|---|---|
| game_events | ~80 | ~100 | Raw event stream (actions + timestamps) |
| game_sessions | 1 | ~300 | Game metadata |
| probe_results | 1 | ~80 | Probe type + computed metric |
| cognitive_profiles | 0–1 | ~60 | Running average per dimension |
| game_assessments | 0–1 | ~300 | Cached AI narrative |
A complete game with AI assessment: approximately 9 KB. A player's full profile after 50 games: approximately 450 KB, dominated by the raw event stream. The event stream is the investment — everything else is derived.
After each completed bot game, the system sends a compact summary to a language model (Claude) containing: outcome, shot count, accuracy, probe type and score, deliberation timing (average, post-hit, post-miss, peak), and longest miss streak. The model returns a 3–4 sentence assessment addressing the player directly.
The assessment is cached with the model identifier. When a better model becomes available, cached assessments can be regenerated from the same raw data. The model column in the assessment table records provenance, so old and new assessments are distinguishable.
Without an API key configured, the system falls back to template-based narratives — deterministic, structured assessments derived from score thresholds and timing ratios. These are less nuanced but cost nothing and respond instantly.
The prompt contains only aggregate statistics, never raw event streams. This keeps token costs negligible (under 1000 tokens per assessment) while providing enough signal for specific, actionable feedback. The model is instructed to reference timing patterns, address adversity (miss streaks), and avoid flattery. The player's data belongs to them; the model is a tool providing insight.
The cognitive profile is the player's property. The system collects actions and timestamps — the minimum necessary to reconstruct gameplay and derive cognitive metrics. No data is aggregated across players. No data is sold. No data is used for purposes beyond player insight.
The player can access their full cognitive profile, per-game analysis, and AI assessments through their profile page. Every metric is transparent: what was measured, how it was scored, and what the conditions were. The probe type is visible in the game analysis so the player understands why a particular cognitive dimension was tested.
Each cognitive dimension is presented with Norse mythological naming to integrate with the game's Viking aesthetic:
| Dimension | Norse Name | Origin |
|---|---|---|
| Working Memory | Huginn's Recall | Huginn, Odin's raven of thought and memory |
| Inhibitory Control | Warrior's Discipline | The restraint of a seasoned warrior |
| Pattern Recognition | Seer's Sight | The Völva's ability to perceive hidden patterns |
| Probabilistic Reasoning | Norns' Wisdom | The Norns who weave fate and probability |
| Strategic Planning | Jarl's Command | The Jarl's capacity for strategic direction |
This framing serves a purpose beyond aesthetics. It gives players a vocabulary for discussing cognitive function that feels empowering rather than clinical. "Your Warrior's Discipline is developing" lands differently than "Your inhibitory control scored 45."
model column in assessment storage enables A/B comparison of assessment quality across model generations.A game that most people consider solved turns out to be a remarkably clean cognitive measurement instrument when the placement strategy is treated as an experimental variable. The key insight is that the player doesn't need to know they're being assessed — the assessment emerges naturally from how they play. By recording actions and timestamps in kilobytes and computing all inference on read, the system creates a permanent, portable cognitive record that improves as assessment models improve. The data belongs to the player. The system is the tool.
NJORDFEL FUTURES · njordfellfutures.com