We ported the original Doom to SQL 🔥 Горячее
SQLDoom переносит оригинальный Doom 1993 года полностью в SQL: логика игры и рендерер реализованы как запросы к базе данных CedarDB. Игровой цикл работает с оригинальными 35 FPS, а рендерер генерирует полный буфер кадра 320×200 пикселей до 60 Гц на ноутбуке. Python используется только для обработки ввода, синхронизации таймингов и вывода полученного битмапа. Поддерживается мультиплеер — deathmatch на четырёх слотах, доступный через публичные серверы в ЕС и США. Для рендеринга используется BSP-дерево, как в оригинале, что позволяет корректно упорядочивать глубину, накладывать текстуры, обрабатывать наклонные стены и переменную высоту пола — в отличие от предыдущего проекта DOOMQL, основанного на упрощённом рейкастинге. Хотя SQLDoom медленнее нативного бинарника из-за множества уровней абстракции, разрыв оказался неожиданно мал благодаря оптимизатору CedarDB и JIT-компиляции в LLVM. Для запуска требуется CedarDB Community Edition, Python с psycopg2 и pygame, а также IWAD-файл Dooma (shareware-версия доступна через пакетный менеджер). Исходный код доступен на GitHub, а играть можно прямо сейчас via веб-интерфейс, где при заполненных слотах игрок помещается в очередь, но может продолжать исследовать игровое состояние через SQL-запросы. Проект демонстрирует, насколько далеко можно зайти, используя СУБД не только для хранения данных, но и как платформу для выполнения сложных вычислений в реальном времени. John Carmack называют гением за то, как он извлёк максимум из ограниченного железа 1993 года — подход, который теперь находит отклик даже в неожиданных средах вроде SQL.
Комментарии (52)
SQL способен реализовать сложную игровую и бизнес‐логику: 5900 строк SQL заменяют ~9000 строк C, обеспечивая полноценный цикл рендеринга и физики. Хранение состояния в таблицах гарантирует атомарность и согласованность, устраняя потерю данных. Однако при большом числе игроков возникают проблемы с блокировками и масштабируемостью. Отладка хранимых процедур, отсутствие контроля версий и культурные барьеры делают такой подход спорным в реальных проектах. В полупроводниковом производстве процедуры использовались для ежедневного изменения правил сотнями пользователей на копии продакшн‐БД, но копировать продакшн‐БД ежедневно нереально для крупных систем из‐за объёма данных. Современные альтернативы (например, функции SpacetimeDB) и ограниченный набор стандартных функций в MSSQL снижают привлекательность чистого SQL для сложной логики. Рекомендуется держать меняющуюся и сложную бизнес‐логику в приложении, а в базе оставлять только ограничения и простые процедуры как резерв. Использование планировщика запросов как конечного автомата считается инженерным злоупотреблением, несмотря на сокращение кода. Выбор места логики часто определяется корпоративной культурой, а не только техническими факторами: многие избегают «болота» SQL‐логики. Существуют языки, компилирующиеся в SQL, которые можно использовать для реализации алгоритмов внутри БД. Проект уже развернут на EU и US серверах, подтверждая практическую возможность мультиплеерного режима в SQL‐базе. Опыт разработки многопользовательских игр с атомарными транзакциями показывает, что паттерн работает при правильном решении проблем конкурентного доступа (см. Designing Data‐Intensive Applications).
Microsoft fire idTech team at Id software 🔥 Горячее 💬 Длинная дискуссия
Microsoft уволила почти всех разработчиков, работающих над движком idTech в id Software, в рамках масштабного сокращения Xbox. По данным компании, в текущем финансовом году планируется убрать около 3 200 позиций, из которых уже сегодня ликвидировано 1 600 рабочих мест. id Software, известная своими шутерами первого лица, всегда зависела от собственного движка, который, согласно ранжированию, занимает четвёртое место среди самых важных игровых движков всех времён. Ранее idTech обеспечивал работу таких культовых франшиз, как Doom, Quake и Wolfenstein, а его архитектура до сих пор вдохновляет новые проекты.
Сокращения вызваны решением руководства Xbox перестроить структуру, озвученным новым CEO Asha Sharma: «Мы начинаем самую значимую реорганизацию в истории Xbox». Среди уволенных — ветеран Майкл Мэйнард, работавший над idTech более 20 лет, который опубликовал пост о влиянии увольнений. Появление комментариев вроде твитака Скотта Миллера подчёркивает, что последствия могут затронуть весь сектор, использующий idTech, включая множество игр и даже сторонние движки.
Комментарии (592)
- Увольнения в id Software после покупки Microsoft вызывают критику стратегии «поглощения» игровых студий.
- Эксперты отмечают, что потеря уникального движка idTech ослабит конкурентоспособность Xbox и игровую индустрию в целом.
- Некоторые считают, что талантливые разработчики могут перейти в независимые проекты, что в долгосрочной перспективе обогатит рынок.
- Комментарии подчеркивают несоответствие корпоративных решений интересам игроков и сохранению инноваций в геймдеве.
There are a few things that I look back on as my mistakes in the early days 🔥 Горячее 💬 Длинная дискуссия
John Carmack признаёт, что ранние ошибки id Software связаны с излишней технической амбицией Quake. Он считает, что компания могла бы реализовать мультиплеер и моды в более стабильном движке Doom++, а не «вырывать ковры» у дизайнеров каждый раз. Такой подход позволил бы добавить полноценный 6‑DOF мир и персонажей в следующей игре, а не перенапрягать команду. Carmack также признаёт, что слишком жёсткий стартап‑ритм выжгал людей, а корпоративный устав с соглашением о покупке‑продаже оказался ошибочным; стандартный вестинг акций оказался бы лучше. Он admits that he pushed everyone too hard, didn’t appreciate the need for slack, and finally accepted his personal limits, working as hard as possible yet still missing goals.
В дизайне Carmack вспоминает, что требовали, чтобы level‑designers обладали сильными эстетическими навыками, что породило конфликты внутри команды и привело к тому, что те, кто справлялся с визуалом, disparagingly относились к тем, кто не мог. Он извиняется перед Sandy Petersen за эту динамику. Sandy Petersen отмечает 30‑летний юбилей Quake, называет его «удивительным сочетанием искусства, программирования и дизайна», подчёркивая, что игра до сих пор впечатляет.
Комментарии (277)
- Sandy Petersen объясняет, что Quake стал «последней великой игрой» id Software и что её амбиции привели к разрыву команды
- Участники обсуждают, как технические новшества Quake (новый движок, QuakeC, мультиплеер) изменили индустрию, но также создали узкое место в разработке
- Мнения разделяются: одни видят в Quake крах творческого потенциала id, другие считают, что игра оправдала свои технические цели и оставила наследие
- Рефлексия о том, что молодёжная энергия и стремление к прорыву могут привести к сожалению, но в долгосрочной перспективе приносят пользу отрасли
Doom crash after 2.5 years of real-world runtime confirmed on real hardware 🔥 Горячее 💬 Длинная дискуссия
Два с половиной года назад я начал свой самый длинный эксперимент с программным обеспечением в реальных условиях. Прочитав статью о работе движка DOOM, я заметил, что переменная для отслеживания демо-записи продолжала увеличиваться даже после начала следующей демки. Эта переменная сравнивалась с другой, хранящей предыдущее значение. Проблема в том, что каждое увеличение медленно приближало переменную к переполнению. В обычных условиях это никогда бы не произошло, но мне стало интересно, сколько времени потребуется для краха игры.
Я провёл расчёты и получил примерно 2,5 года работы до переполнения. Чтобы проверить это на практике, я запустил DOOM на КПК с питанием от самодельного ИБП на 18650, подключённого к роутеру. Система работала всё это время, и я почти забыл о ней.
Сегодня игра наконец crashed — всего через несколько часов после отметки в 2,5 года. Переменная переполнилась, что подтвердило теорию.
Комментарии (178)
- В игре Crash Bandicoot 3 используется 32-битный счётчик времени, который переполняется через ~2.26 года, вызывая сбои.
- Аналогичная проблема переполнения счётчика обсуждается в контексте DOOM, Windows NT и других систем.
- Переполнение знакового целого в C является неопределённым поведением, что может приводить к краху программы.
- Упоминаются другие примеры из игр (Final Fantasy 9) и систем, где переполнение таймеров вызывает проблемы.
- Обсуждаются технические детали, такие как использование signed vs unsigned integer для счётчиков.
- Пользователи шутят о грядущих проблемах в 2038 году из-за переполнения времени Unix.
- Высказывается уважение к стабильности и инженерному качеству кода старых игр, несмотря на подобные баги.