Hacker News Digest

09 сентября 2025 г. в 15:12 • cedardb.com • ⭐ 228 • 💬 35

OriginalHN

#sql#cedardb#postgresql#raycasting#multiplayer#gaming#python#bash

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);

Рендер

  1. rays — лучи от игрока, столкновения со стенами
  2. walls — высота линии = 1 / distance
  3. sprites — проекция по x, z-order
  4. frame — UNION walls+sprites, строка = пиксель
  5. 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 — ещё и консоль читов.