Skip to content
AI News HubLIVE
More
Original source2 min read

DOOMQL

Summary

Peter Gostev created DOOMQL, a Doom-like game that uses SQLite as the game engine, featuring a recursive CTE ray tracer. Simon Willison demonstrates how to play it and build a Datasette app to view the game state in real time.

DOOMQL
Report an error

The correction channel is not available yet. You can copy the article reference below for later.

Correction instructions
Read article

DOOMQL

Simon Willison’s Weblog

Subscribe

13th July 2026 - Link Blog

DOOMQL (via) 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

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:

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.

Recent articles

The new GPT-5.6 family: Luna, Terra, Sol - 9th July 2026

sqlite-utils 4.0, now with database schema migrations - 7th July 2026

sqlite-utils 4.0rc2, mostly written by Claude Fable (for about $149.25) - 5th July 2026

This is a link post by Simon Willison, posted on 13th July 2026.

games 23

sql 114

sqlite 479

ai 2,115

datasette 1,525

generative-ai 1,870

llms 1,837

ai-assisted-programming 397

gpt 130

datasette-apps 7

Monthly briefing

Sponsor me for $10/month and get a curated email digest of the month's most important LLM developments.

Pay me to send you less!

Sponsor & subscribe

Disclosures

Colophon

©

2002

2003

2004

2005

2006

2007

2008

2009

2010

2011

2012

2013

2014

2015

2016

2017

2018

2019

2020

2021

2022

2023

2024

2025

2026

Key points and analysis

Article intelligence

EngineersAdvanced

Key points

  • DOOMQL is a Doom-like game where SQLite serves as the game engine
  • It uses a recursive CTE to implement ray tracing in SQL
  • Players run a Python terminal script that generates a SQLite database
  • Simon Willison created a Datasette app to display live game visuals

Highlights and analysis are generated automatically and may contain errors. Check the original source.