DOOMQL

DOOMQL


13 de julho de 2026 – Link Blog

DOOMQL (através de) Peter Gostev construiu isso usando GPT-5.6 Sol. Este é um muito de diversão:

O DOOMQL começou com uma pergunta deliberadamente irracional: e se o SQLite fosse o motor do jogo, e não apenas o local onde um jogo armazena dados?

O resultado é um jogo pequeno e original do tipo Doom, no qual o SQL controla o movimento, a colisão, os inimigos, o combate, a progressão e cada pixel RGB na tela.

É implementado como um script de terminal Python – tentei assim:

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

Captura de tela de uma janela de terminal do macOS intitulada "doomql — python3.14 ◂ uv execute host/doomql.py — 134×31" mostrando um jogo retrô no estilo Doom renderizado como pixel art em modo texto. A cena é um corredor pixelado em primeira pessoa com paredes com painéis cinza, portas vermelhas escuras na extrema esquerda e direita, uma moeda flutuante em ciano e ouro no lado direito, uma cruz branca perto do centro e um cano de arma escuro subindo da parte inferior central. Uma barra de status abaixo da cena diz "HP 100/100 AMMO 037 PONTUAÇÃO 00225 ÍNDICE FALTANTE TICK 0028450"seguido por uma linha laranja "ENCONTRE O TOKEN DO ÍNDICE" e uma linha de controles ciano "WASD MOVE J/L OU SETAS GIRA ESPAÇO FOGO E USE P PAUSA CTRL-C SAIR".

Aqui está a enorme consulta SQL que implementa um ray tracer completo no SQLite usando um CTE recursivo.

A execução do script acima cria um /tmp/doomql/.doomql/doomql.sqlite Banco de dados SQLite, que você pode explorar usando o Datasette assim:

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

O --with datasette-apps A opção instala o novo plug-in Datasette Apps, que oferece suporte à criação de aplicativos HTML + JavaScript personalizados que podem executar consultas SQL diretamente na interface do Datasette.

Criei um novo aplicativo, colei o prompt de copiar e colar no chat do Claude (Fable 5) e disse:

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.

Isso me proporcionou um aplicativo HTML + JavaScript funcional dentro do Datasette que poderia refletir o estado atual enquanto eu jogava em meu terminal. Então adicionei:

add a minimap

E agora meu aplicativo Datasette está assim:

DOOMQL

Aqui está o código do aplicativo HTML – cole-o em sua própria instância do Datasette (usando o uvx --with datasette-apps receita acima) para experimentar você mesmo.





Source link

Postagens Similares

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *