← Back
FeaturedAIProducts#ai-assisted-programming#Datasette#DOOMQL#GPT-5.6 Sol#SQLite

DOOMQL: An AI-Generated Doom-like Game Using SQLite as the Game Engine

Simon Willison 博客(Atom)T2
06:3407/14, 06:34 AMCommunityRead the original ↗Export MD ↓

Score

71
Information gain8 ×0.3

展示了SQLite作为游戏引擎的极端用法,颠覆传统认知,信息增量高。

Content quality9 ×0.2

文章详细描述了实现过程、代码链接和运行方式,质量很高。

Practical value5 ×0.2

虽然创意有趣,但实用性有限,难以直接应用,主要作为概念验证。

Timeliness9 ×0.15

2026年7月发布,时效性极高。

Source reliability9 ×0.15

来源为知名技术博主Simon Willison的博客,可信度高。

Base 79 × T2 Source weight ×0.9 = 71

Curation line 70Selected

Why selected

Full marks for technical creativity, but limited practicality as a proof-of-concept and source of inspiration.

AI commentary

「DOOMQL perfectly demonstrates how AI can combine seemingly unrelated technologies (SQLite and game engines) into stunning results. For database enthusiasts and AI programming explorers, this is a brilliant collision of inspiration.」

Quick overview

DOOMQL, built by Peter Gostev with GPT-5.6 Sol, uses SQLite as the full game engine to create a Doom-like game with ray tracing, collision, enemies, combat, and progression. Every pixel is driven by SQL recursive CTEs, running as a Python terminal script. Integrated with Datasette and an AI-generated app, it enables real-time game state viewing and a minimap, showcasing AI's remarkable potential in creative coding.

  • Built with GPT-5.6 Sol, SQLite serves as the full game engine powering movement, collision, enemies, combat, and rendering.
  • A full ray tracer implemented via recursive CTEs, with every pixel generated by SQL queries.
  • Runs as a Python terminal script while creating an SQLite database for real-time analysis via Datasette.
  • Using the Datasette Apps plugin and Claude (Fable 5), an HTML+JavaScript app was generated to display the game screen and minimap in real time.

Full text

Showing the source text; the full translation is being generated.

DOOMQL

Peter Gostev built this using GPT-5.6 Sol. This is a lot of fun:

DOOMQL started with a deliberately unreasonable question: what if SQLite were the game engine, not merely the place where a game stores data?

The result is a small, original Doom-like game in which SQL owns movement, collision, enemies, combat, progression and every RGB pixel on screen.

It's implemented as a Python terminal script - I tried it out like this:

cd /tmp
git clone https://github.com/petergpt/doomql
cd doomql
uv run host/doomql.py

Screenshot of a macOS terminal window titled "doomql — python3.14 ◂ uv run host/doomql.py — 134×31" showing a retro Doom-style game rendered as text-mode pixel art. The scene is a pixelated first-person corridor with gray paneled walls, dark red doors on the far left and right, a floating cyan-and-gold coin pickup on the right side, a white crosshair near the center, and a dark weapon barrel rising from the bottom center. A status bar below the scene reads "HP 100/100 AMMO 037 SCORE 00225 INDEX MISSING TICK 0028450", followed by an orange line "FIND THE INDEX TOKEN" and a cyan controls line "WASD MOVE J/L OR ARROWS TURN SPACE FIRE E USE P PAUSE CTRL-C EXIT".

Here's the huge SQL query that implements a full ray tracer in SQLite using a recursive CTE.

Running the above script creates a /tmp/doomql/.doomql/doomql.sqlite SQLite database, which you can explore using Datasette like this:

uvx --prerelease=allow  --with datasette-apps datasette \
  /tmp/doomql/.doomql/doomql.sqlite \
  -p 4444 --root --secret 1 --internal internal.db

The --with datasette-apps option installs the new Datasette Apps plugin, which supports creating custom HTML+JavaScript apps that can run SQL queries directly within the Datasette interface.

I created a new app, pasted the copy-paste prompt into Claude chat (Fable 5) and told it:

Build an app that displays the current state of the screen using the frame_pixels view with its x, y, r, g, b columns. have it refresh once a second.

This got me a working HTML+JavaScript app inside Datasette that could reflect the current state while I played the game in my terminal. Then I added:

add a minimap

And now my Datasette App looks like this:

Screenshot of a dark-themed web app running a retro Doom-style game rendered from SQL queries. The page header reads "DOOMQL" with buttons "All apps", "Edit app", "Pin", and "Full screen". Inside the game panel, the title "DOOMQL" sits above the subtitle "auto-refreshing once a second · frame and tactical map straight from SQL". The left side shows a pixelated first-person corridor view with gray walls, dark red doors, a floating cyan-and-gold coin pickup, a white crosshair, and a weapon barrel at bottom center. A status bar below reads "HP 100/100 AMMO 037 SCORE 00225 INDEX MISSING TICK 0027847". On the right, a panel titled "TACTICAL MAP" shows a top-down grid map with a player triangle, a red enemy circle, yellow pickup dots, red wall markers, and a green exit square, with a legend reading "you", "enemy", "pickup", "locked door", "door", "exit". Below the game view, an orange banner reads "FIND THE INDEX TOKEN", followed by the cyan line "READ-ONLY VIEWER · SELECT x, y, r, g, b FROM frame_pixels". At the bottom, a green "RUNNING" badge appears beside the stats "160×54 · 8,640 pixels · 3 hostiles · query 89 ms · refreshing every 1 s".

Here's the HTML app code - paste that into your own Datasette instance (using the uvx --with datasette-apps recipe from above) to try it yourself.

Via @petergostev

Tags: games, sql, sqlite, ai, datasette, generative-ai, llms, ai-assisted-programming, gpt, datasette-apps

Related items

92

Five-dimension score

Information gain8 ×0.3

首次系统介绍 OpenRouter 缓存与路由协同策略,信息增量较高。

Content quality9 ×0.2

官方教程,结构清晰,包含原理、示例和实测效果。

Practical value10 ×0.2

直接明确降低 API 成本,开发者可立即应用。

Timeliness10 ×0.15

刚刚发布,且对当前 Agent 开发热潮具有及时指导意义。

Source reliability10 ×0.15

来源为 OpenRouter 官方 RSS 和官网,信源权威可靠。

Base 92 × T1 Source weight ×1 = 92

Curation line 60Selected

08:00OpenRouter:Announcements(RSS)T1RSS

FeaturedOpenRouter Launches Prompt Caching with Sticky Routing to Drastically Reduce Multi-Turn Costs

OpenRouter 推出提示缓存与粘性路由,大幅降低多轮对话成本

For developers making frequent AI API calls, this feature is a direct money-saver. Sticky routing guarantees cache hit rates, and session_id requires zero configuration—every OpenRouter user should try it immediately.

AIProducts#OpenRouter#session_id#Cost Optimization
91

Five-dimension score

Information gain9 ×0.3

首次公开ChatGPT Work的Agent能力,信息增量高。

Content quality8 ×0.2

官方发布,内容清晰,但细节较少。

Practical value9 ×0.2

为用户提供可直接使用的Agent能力,实用价值高。

Timeliness10 ×0.15

刚刚发布,时效性极强。

Source reliability10 ×0.15

来自OpenAI官方,信源权威可靠。

Base 91 × T1 Source weight ×1 = 91

Curation line 60Selected

18:00OpenAI:News(RSS)T1RSS

FeaturedChatGPT Work: An AI Agent That Takes Action Across Apps and Files

ChatGPT Work:可在跨应用和文件中执行操作的AI Agent

I think this is a key step for AI assistants moving from Q&A to execution. Especially noteworthy for professionals who need to automate complex workflows. ChatGPT Work could become a new paradigm for productivity tools.

AIProducts#Agent#AI Productivity#ChatGPT Work
90

Five-dimension score

Information gain9 ×0.3

首次公开前沿实验室代理入侵的完整技术时间线,信息增量极高。

Content quality8 ×0.2

结构严谨、技术细节丰富,但缺乏部分原始日志数据佐证。

Practical value9 ×0.2

提供了缓解建议和自检工具,对AI安全从业者具有直接指导意义。

Timeliness10 ×0.15

事件发生仅数月后即发布分析,时效性极佳。

Source reliability9 ×0.15

Hugging Face 作为顶级开源AI平台,其技术博客可信度极高。

Base 89.5 × T1 Source weight ×1 = 90

Curation line 60Selected

08:00Hugging Face:Blog(RSS)T1RSS

FeaturedAnatomy of a Frontier Lab Agent Intrusion: A Technical Timeline of the July 2026 Incident

前沿实验室代理入侵事件技术时间线:2026年7月事件剖析

This technical timeline is a must-read for all AI security researchers and agent developers—it doesn't just describe one attack but sounds an alarm on the weak defense systems of agent architectures. For teams deploying autonomous agents, this is an essential disaster prevention manual.

TechProducts#AI Agent Security#Hugging Face#Intrusion Timeline
90

Five-dimension score

Information gain8 ×0.3

文章揭示了工具增强反而导致AI性能下降的反直觉发现,并提供了具体工程改进方案,信息增量高。

Content quality9 ×0.2

来自GitHub官方工程博客,有数据支撑(成本下降40%),论证清晰,质量上乘。

Practical value9 ×0.2

对AI产品团队、代码审查工具开发者、以及依赖AI辅助编程的团队有直接借鉴意义。

Timeliness10 ×0.15

2024年发布的工程实践,符合当前AI产品优化趋势,时效性强。

Source reliability10 ×0.15

信源为GitHub官方博客,具有高度权威性和技术可信度。

Base 90 × T1 Source weight ×1 = 90

Curation line 60Selected

23:57GitHub Blog(网页)T1Web

FeaturedBetter Tools Made Copilot Code Review Worse? Here's How GitHub Improved It

更好的工具反而让Copilot代码审查更糟?GitHub这样改进

This blog post deserves close reading by all AI product engineers and ML practitioners—it breaks the intuition that 'more powerful tools = better AI' and instead emphasizes an engineering philosophy aligned with agent reasoning patterns. Especially important for teams optimizing code review or similar agent-based products.

AIProducts#Agent Workflows#Copilot#GitHub
88

Five-dimension score

Information gain9 ×0.3

披露了OpenRouter产品的新能力,对关注多模态开发的用户有较高信息增量。

Content quality8 ×0.2

内容清晰,准确描述了API功能与优势,但缺少性能数据对比。

Practical value9 ×0.2

直接解决多模态API碎片化问题,开发者可立即降低集成成本。

Timeliness10 ×0.15

该API为新近发布,具有很高时效性。

Source reliability8 ×0.15

OpenRouter官方博客,权威性高,但未提及其他第三方验证。

Base 88 × T1 Source weight ×1 = 88

Curation line 60Selected

08:00OpenRouter:Announcements(RSS)T1RSS

FeaturedOpenRouter Launches Unified Multimodal API: Single Endpoint for Image, Video, Audio, Embeddings, and Transcription

OpenRouter 推出统一多模态 API:单端点支持图像、视频、音频、嵌入与转录

This news is worth attention from all developers building multimodal AI applications: OpenRouter's unified API solves the pain of model switching, especially for startups or rapid prototyping. If you're struggling with multiple API keys and SDKs, this interface could be the unified layer you need.

AIProducts#OpenRouter#Multimodal API#Model Ensembles
87

Five-dimension score

Information gain8 ×0.3

介绍了全新的教育产品,填补了AI安全公司在教育垂直领域的空白,信息增量较高。

Content quality8 ×0.2

内容简洁清晰,准确概括产品功能、安全理念和试点情况,无冗余信息。

Practical value9 ×0.2

直接解决教师备课负担痛点,且强调安全合规,对教育工作者具有实际参考价值。

Timeliness10 ×0.15

消息发布时间接近当前日期,属于最新产品发布动态。

Source reliability9 ×0.15

来源为Anthropic官方新闻页面,权威性高,内容可靠。

Base 86.5 × T1 Source weight ×1 = 87

Curation line 60Selected

23:40Anthropic:News(网页)T1Web

FeaturedAnthropic Launches Claude for Teachers: AI Tools Designed for Educators

Anthropic 推出 Claude for Teachers:面向教师的教育 AI 工具

This announcement is valuable for educators and AI industry watchers alike. Instead of a generic chatbot, Anthropic designed a safety-first tool specifically for teachers, demonstrating the right approach for AI vertical deployment: solving real pain points rather than showing off technology. The built-in guardrails also set a reference for other AI companies, especially when serving scenarios involving children or teenagers.

AIProducts#AI Security#Anthropic#Claude
86

Five-dimension score

Information gain9 ×0.3

全新路由机制,市场智慧概念为行业带来较高信息增量。

Content quality8 ×0.2

官方公告内容清晰,但技术细节不足,略有扣分。

Practical value8 ×0.2

对开发者选型有直接实用价值,可降低试错成本。

Timeliness9 ×0.15

产品刚发布,时效性极强。

Source reliability9 ×0.15

来自OpenRouter官方RSS公告,信源可靠。

Base 86 × T1 Source weight ×1 = 86

Curation line 60Selected

08:00OpenRouter:Announcements(RSS)T1RSS

FeaturedOpenRouter Introduces New Auto Router: Model Routing Powered by Market Wisdom

OpenRouter发布全新Auto Router:用市场智慧优化模型路由

This update is worth attention for anyone using APIs to build AI apps. Instead of guessing or testing model selection, market data now does the heavy lifting. Though sparse on details, the direction is right, especially for teams relying on aggregated model services.

AIProducts#Auto Router#OpenRouter#Wisdom of the Market
86

Five-dimension score

Information gain8 ×0.3

包含大量具体修复细节和安全改进,信息密度高。

Content quality9 ×0.2

内容详尽,结构清晰,覆盖新功能、修复、改进多个方面。

Practical value9 ×0.2

修复了多个实际开发中遇到的问题,对用户有直接帮助。

Timeliness10 ×0.15

刚刚发布的版本,时效性极强。

Source reliability10 ×0.15

来自 Anthropic 官方 GitHub Release,信源权威可靠。

Base 90 × T1.5 Source weight ×0.95 = 86

Curation line 65Selected

07:02Claude Code:GitHub Releases(RSS)T1.5GitHub Release

FeaturedClaude Code v2.1.211 Release: Multiple Fixes and Improvements

Claude Code v2.1.211 发布:多项修复与改进

As a developer who frequently uses Claude Code for automated coding, I'm particularly interested in the security fixes, especially the permission preview character bypass and auto mode overriding hook decisions—these directly affect the security boundaries during team collaboration. The improvement in background agent reporting also makes long-running tasks more reliable. I recommend all users upgrade as soon as possible.

AIProducts#Anthropic#Claude Code#Code Generation Tool

Verify against the original source before citing