Building a DOOM-like multiplayer shooter in pure SQL
## DOOMQL: шутер в чистом SQL
**Идея**
- Всё состояние — в таблицах CedarDB
- Картинка = стек VIEW с трассировкой лучей
- Цикл — bash-скрипт, 30 FPS: `psql < game.sql`
- Клиент — 150 строк Python: читает клавиши, SELECT’ит кадр
**Схема (сокращённо)**
```sql
config( move, turn, ammo_max … );
map(x,y,tile);
players(id,hp,ammo…);
inputs(player_id,action);
mobs(id,x,y,angle,type);
sprites(id,texture,offset);
Рендер
rays— лучи от игрока, столкновения со стенамиwalls— высота линии = 1 / distancesprites— проекция по x, z-orderframe— UNION walls+sprites, строка = пиксельhud— здоровье, ammo, миникарта в ASCII
Мультиплеер
-- добавить игрока
INSERT INTO players VALUES(:id);
-- чужие движения
SELECT * FROM players WHERE id != :me;
Производительность
- 640×480 ≈ 30 кадр/с на ноутбуке
- CedarDB распараллеливает лучи между ядрами
Читерство
UPDATE players SET hp=100, ammo=99 WHERE id=my_id;
Вывод
База = готовый игровой сервер: транзакции дают согласованность, а SQL — ещё и консоль читов.