<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[2 Minute Drill Game Devlog]]></title><description><![CDATA[2 Minute Drill Game Devlog]]></description><link>https://2minutedrillgame.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ad870e9b13ded20c3c0d510/87961b3e-c6b0-4ef8-8b84-8ee36565595e.png</url><title>2 Minute Drill Game Devlog</title><link>https://2minutedrillgame.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 23 Oct 2026 11:10:09 GMT</lastBuildDate><atom:link href="https://2minutedrillgame.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Building an NFL play-calling simulator with Claude Code and nflverse data]]></title><description><![CDATA[When a viral "two-minute drill" game went around in October 2026, I wanted something a bit different: a game where every situation is a real NFL ending…]]></description><link>https://2minutedrillgame.hashnode.dev/building-an-nfl-play-calling-simulator-with-claude-code-and-nflverse-data</link><guid isPermaLink="true">https://2minutedrillgame.hashnode.dev/building-an-nfl-play-calling-simulator-with-claude-code-and-nflverse-data</guid><category><![CDATA[Next.js]]></category><category><![CDATA[GameDev]]></category><category><![CDATA[AI]]></category><dc:creator><![CDATA[lok lok]]></dc:creator><pubDate>Wed, 21 Oct 2026 08:21:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ad870e9b13ded20c3c0d510/77740d58-bb00-4c07-9aba-5739e9a6b24a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When a viral "two-minute drill" game went around in October 2026, I wanted something a bit different: a game where every situation is a real NFL ending, every call you make is graded on win probability, and you can see how the real head coach's calls grade on the same scale. The result is <a href="https://2minutedrillgame.app/">2 Minute Drill Game</a>, a free browser game. Almost all of the code was written with Claude Code — I steered, reviewed and tested; the AI wrote nearly every commit.</p>
<h2>The stack</h2>
<ul>
<li><strong>Data pipeline (Python):</strong> nflverse play-by-play since 2016, plus FTN charting (via nflverse) for play-action, RPOs, screens, box counts and blitzes.</li>
<li><strong>Engine (TypeScript package):</strong> a Monte Carlo simulator that plays out the rest of a game from any snap.</li>
<li><strong>Site (Next.js):</strong> the game, Practice and Survivor modes, guides, and an anonymous percentile board.</li>
</ul>
<h2>Picking situations</h2>
<p>Every drive starts from a real game: fourth quarter, five minutes or less, a one-score margin, a normal offensive snap. One starting point per real drive, skipping spots where the leader could kneel it out or where the game was already decided (below 5% or above 95% win probability). That leaves 3,599 situations. The daily drive uses 2022 onward and mixes trailing, tied and leading spots across the week.</p>
<h2>How a play resolves</h2>
<p>Every snap since 2016 is classified into one of 27 calls (inside run to the weak side, quick pass to the strong side, deep shot, screen, sneak...). For each call, down, distance bucket, field zone and defensive look, the pipeline keeps a sample of real late-half outcomes. When you call a play, the engine draws one real outcome from the matching bucket and shows you the official play description it came from. Small buckets fall back to broader groups.</p>
<p>Team strength comes from the closing point spread: on each snap the favorite sometimes gets the better of two drawn outcomes, sized so one point of spread moves win chance about as much as it does in nflverse's Vegas-adjusted model. The clock is measured from consecutive late-game snaps by tempo, with the real rules (two-minute warning, timeouts, spikes, incompletions and out-of-bounds stopping the clock) layered on top.</p>
<h2>Grading the choice, not the result</h2>
<p>This is the part I cared most about. A great call can still fail and a bad call can still work, so the game grades your <em>decision</em>. From any moment the engine plays out the rest of the game hundreds of times with both teams following a baseline NFL policy measured from real coaches. Every option you could choose is evaluated with the same random numbers, and the top few plus your choice get a second, larger batch so a lucky estimate doesn't win. The gap to the best option sets the grade: green, yellow, orange or red.</p>
<p>At the end your total is ranked against 4,000 simulated play-callers, tuned so real NFL coaches graded on their own drives land near the middle.</p>
<h2>Does it hold up?</h2>
<p>On 600 held-out 2024–2025 situations, the engine's starting win probability scored a Brier score of 0.160 against actual results, slightly better than nflfastR's model on the same set (0.166). Trailing teams average 30% in the engine where real teams won 29%. The full write-up, including the limitations (no injuries, no matchups, schematic field), is on the <a href="https://2minutedrillgame.app/about">methodology page</a>.</p>
<h2>What working with Claude Code was like</h2>
<p>The useful pattern was small, verifiable steps: write a diagnostic, look at the numbers, change one constant, rerun. Calibration bugs (deep passes too good, touchdowns drawn from too far out, trailing teams too pessimistic) were found that way. The AI was fast at the plumbing; deciding what "correct" means stayed a human job.</p>
<h2>Try it</h2>
<p>The game is free with no sign-up: <a href="https://2minutedrillgame.app/">play today's drive</a>, or open <a href="https://2minutedrillgame.app/practice">Practice mode</a> for unlimited situations. It's a fan project and isn't affiliated with the NFL.</p>
]]></content:encoded></item></channel></rss>