Real Game Dev Reviews Game By Devin.ai
Based on The PrimeTime's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.
Devin AI’s PRs were automatically merged into master via a CI actor check, enabling rapid chat-driven iteration despite Devin being unable to push to master directly.
Briefing
An autonomous coding agent (Devin AI) was pushed—via Twitch chat prompts—into generating and iterating a playable Doom-style browser game in roughly eight hours, producing about 126 commits/PRs and thousands of lines of JavaScript/HTML. The result is functional and surprisingly aligned with the requested premise, but the code quality is widely criticized as brittle, inefficient, and hard to maintain—turning the project into a live stress test of what “English-to-code” can do today.
The workflow hinges on a workaround for Devin’s inability to push directly to the GitHub master branch. Instead, when Devin’s CI actor is detected as Devin, the changes are automatically merged into master. Every few minutes, Twitch chat sends a new instruction, indirectly steering the agent’s next implementation steps. Over the session, chat requests lead to visible gameplay features: a first-person shooter loop with walls, enemies, bullets, a minimap, health/HUD elements, and even “fire and cheese” effects—though the cheese portion becomes a recurring debugging saga.
The game’s core loop is reviewed line-by-line through a code walkthrough. The browser animation timing uses requestAnimationFrame with a timestamp, and the loop clears the canvas, draws walls and enemies, updates bullets, handles collisions, and renders overlays like semi-transparent bullet effects. Collision logic relies on distance checks (with discussion of why squared distances usually avoid square roots), and bullets have a limited lifetime. When enemies die, the code removes them from arrays immediately, which the reviewer flags as a common source of state bugs in real games—especially when other systems might hold references to entities.
Player movement and physics receive heavy critique. Movement and friction appear frame-rate dependent because there’s little or no delta-time scaling, meaning acceleration and velocity changes assume a stable update rate. Wall collision is treated like tile collision with limited neighborhood checks, raising the risk of tunneling at higher speeds. Strafing and rotation also show “laggy” behavior, attributed to an input timeline mismatch when chat nudged controls from turning to strafing.
Enemy behavior includes pathfinding logic that resembles A* using a priority queue and a heuristic based on distance. The reviewer notes rate limiting around path updates and discusses how sorting by distance is used for draw order in engines without a z-buffer—yet the code sorts enemies and then later updates them, potentially undoing the intended ordering. Rendering choices are repeatedly called out as cargo-culted: expensive angle math (atan2) appears in projection, and repeated sign/cosine computations and long-hand distance calculations reduce maintainability.
The “cheese” feature becomes the project’s punchline. Devin eventually adds a cheese sprite asset and gets cheese bobbing onto the screen, but earlier attempts fail due to missing rendering hooks, asset mismatches, and coordinate/spawn bugs (including a moment where negative radius values appear). Even when cheese finally appears, it’s not consistently integrated with the rest of the world rendering and ordering.
Overall, the session lands on a split verdict: English understanding and feature completion are impressive, but the resulting codebase is “rewrite-level” poor—inefficient, duplicated, and fragile. The reviewer suggests these tools may be more useful as code search or scaffolding than as production-ready game engines, and proposes future iterations (like an idle RPG) as a more forgiving target for automated development.
Cornell Notes
Devin AI was used as a fully autonomous coding agent to build a Doom-like first-person browser shooter by repeatedly merging PRs into a GitHub project. Twitch chat provided English prompts every few minutes, steering the agent toward features like walls, enemies, bullets, HUD/minimap, and a requested “fire and cheese” mechanic. A detailed code review found the game is playable and the agent’s English-to-code mapping is strong, but the implementation quality is weak: frame-rate-dependent physics, brittle collision handling, inefficient math (including heavy angle/projection work), and entity-management patterns that can cause subtle bugs. The cheese feature illustrates both the agent’s persistence and its tendency to miss integration details (assets, rendering paths, and spawn logic) even after adding partial solutions.
How did the project get around Devin AI’s inability to push to master, and why does that matter for the build process?
What did the code review say about the game loop and timing in JavaScript?
Why is removing enemies/bullets immediately during collision potentially dangerous in real game code?
What were the biggest concerns about player movement and physics?
How did enemy pathfinding work, and what did the reviewer infer about its approach?
What went wrong with the “cheese” mechanic, and what ultimately made it appear?
Review Questions
- Which parts of the code review suggest the game’s physics are frame-rate dependent, and what delta-time mechanism would typically fix that?
- What entity-management strategy (dead flags, sparse arrays, or stable handles) would prevent the “wrong enemy index” bug described in the review?
- Why does a z-buffer absence push engines toward sorting by distance/draw order, and how could sorting become incorrect if the array is later mutated?
Key Points
- 1
Devin AI’s PRs were automatically merged into master via a CI actor check, enabling rapid chat-driven iteration despite Devin being unable to push to master directly.
- 2
Twitch chat prompts every few minutes steered the agent toward gameplay features, resulting in a functional Doom-like browser shooter with HUD and minimap.
- 3
The game loop uses requestAnimationFrame with timestamps, but movement/physics criticized as frame-rate dependent due to missing delta-time scaling.
- 4
Collision and entity handling were flagged as brittle: immediate removal from arrays can break indirect references and cause subtle targeting/behavior bugs.
- 5
Enemy pathfinding resembles A* with a priority queue and a distance-based heuristic, while path updates are rate-limited using real-time checks.
- 6
Rendering math and architecture choices were repeatedly criticized as inefficient and hard to maintain, including heavy angle/projection computations and duplicated distance calculations.
- 7
The “cheese” feature demonstrates partial success: assets and bobbing were eventually added, but earlier failures show how easy it is to miss rendering hooks, asset wiring, and spawn logic.