HeadlinesBriefing HeadlinesBriefing 12 languages

Someone got Doom in an SQL database

Ars Technica ·

🇬🇧 English

Lukas Vogel writes in a lengthy blog post explaining how he managed to render Doom using an SQL database. The SQLDoom project uses a small Python client to handle input and output, drive the game’s timing, and display each frame. Behind that, a series of Cedar DB tables tracks game geometry and state, while about 1,300 lines of SQL queries across 89 common table expressions implement game logic and generate 35 bitmap framebuffers per second.

SQLDoom is a major improvement over Vogel’s previous Doom QL project, which built “a multiplayer Doom-like shooter entirely in SQL” but ended up with grayscale ASCII graphics. The newer SQLDoom generates full-color 640×480 frames resembling the original Doom executable.

Converting Doom’s classic WAD files to a relational database was straightforward, Vogel says, because the game broke levels into vertices, lines, and sectors. Doom’s binary-space partition trees can be broken down into SQL using a sort_key pre-computed for each position. With this, a simple “ORDER BY” statement determines which parts of walls to display each frame.

View original article →


🇸🇦 العربية

Doom معروض في قاعدة بيانات SQL بواسطة Lukas Vogel

يكتب Lukas Vogel في تدوينة مطولة يشرح فيها كيف تمكن من عرض Doom باستخدام قاعدة بيانات SQL. يستخدم مشروع SQLDoom عميل Python صغير للتعامل مع الإدخال والإخراج، وقيادة توقيت اللعبة، وعرض كل إطار. خلف ذلك، تتبع سلسلة من جداول Cedar DB هندسة اللعبة وحالتها، بينما تنفذ حوالي 1300 سطر من استعلامات SQL عبر 89 تعبير جدول شائع منطق اللعبة وتولد 35 مخزن إطارات نقطي في الثانية.

SQLDoom هو تحسين كبير مقارنة بمشروع Vogel السابق Doom QL، الذي بنى "لعبة إطلاق نار متعددة اللاعبين تشبه Doom بالكامل في SQL" لكنه انتهى برسومات ASCII بتدرج الرمادي. يولد SQLDoom الجديد إطارات كاملة الألوان بدقة 640×480 تشبه ملف Doom الأصلي القابل للتنفيذ.

يقول Vogel إن تحويل ملفات WAD الكلاسيكية لـ Doom إلى قاعدة بيانات علائقية كان مباشرًا، لأن اللعبة قسمت المستويات إلى رؤوس وخطوط وقطاعات. يمكن تحليل أشجار تقسيم المساحة الثنائية لـ Doom إلى SQL باستخدام sort_key محسوب مسبقًا لكل موضع. بهذا، يحدد بيان "ORDER BY" بسيط أي أجزاء الجدران سيتم عرضها في كل إطار.

الكيانات الرئيسية: الشركات: Ars Technica | الأشخاص: Lukas Vogel

الأسئلة الشائعة: كيف يعرض SQLDoom الإطارات باستخدام قاعدة بيانات؟

يستخدم SQLDoom عميل Python للإدخال والعرض، بينما تخزن جداول Cedar DB الهندسة والحالة. تولد حوالي 1300 سطر من استعلامات SQL عبر 89 CTE 35 مخزن إطارات نقطي في الثانية، باستخدام ORDER BY مع مفاتيح فرز محسوبة مسبقًا لعرض فعال.

كيف يعرض SQLDoom الإطارات باستخدام قاعدة بيانات؟

يستخدم SQLDoom عميل Python للإدخال والعرض، بينما تخزن جداول Cedar DB الهندسة والحالة. تولد حوالي 1300 سطر من استعلامات SQL عبر 89 CTE 35 مخزن إطارات نقطي في الثانية، باستخدام ORDER BY مع مفاتيح فرز محسوبة مسبقًا لعرض فعال.

العربية version →


🇧🇩 বাংলা

Lukas Vogel দ্বারা SQL ডাটাবেসে Doom রেন্ডার করা হয়েছে

Lukas Vogel একটি দীর্ঘ ব্লগ পোস্টে লিখেছেন কিভাবে তিনি SQL ডাটাবেস ব্যবহার করে Doom রেন্ডার করতে পেরেছেন। SQLDoom প্রকল্প ইনপুট এবং আউটপুট পরিচালনা, গেমের সময় চালনা এবং প্রতিটি ফ্রেম প্রদর্শনের জন্য একটি ছোট Python ক্লায়েন্ট ব্যবহার করে। এর পিছনে, Cedar DB টেবিলের একটি সিরিজ গেম জ্যামিতি এবং অবস্থা ট্র্যাক করে, যখন প্রায় 1300 লাইন SQL কোয়েরি 89 সাধারণ টেবিল এক্সপ্রেশন জুড়ে গেম লজিক বাস্তবায়ন করে এবং প্রতি সেকেন্ডে 35 বিটম্যাপ ফ্রেমবাফার তৈরি করে।

SQLDoom, Vogel এর পূর্ববর্তী Doom QL প্রকল্পের তুলনায় একটি বড় উন্নতি, যা "সম্পূর্ণ SQL-এ একটি মাল্টিপ্লেয়ার Doom-সদৃশ শুটার" তৈরি করেছিল কিন্তু গ্রেস্কেল ASCII গ্রাফিক্সে শেষ হয়েছিল। নতুন SQLDoom পূর্ণ-রঙের 640×480 ফ্রেম তৈরি করে যা মূল Doom এক্সিকিউটেবলের মতো।

Vogel বলেন, Doom এর ক্লাসিক WAD ফাইলগুলিকে রিলেশনাল ডাটাবেসে রূপান্তর করা সরল ছিল, কারণ গেমটি স্তরগুলিকে শীর্ষবিন্দু, রেখা এবং সেক্টরে ভাগ করেছিল। Doom এর বাইনারি-স্পেস পার্টিশন ট্রি প্রতিটি অবস্থানের জন্য পূর্ব-গণনা করা sort_key ব্যবহার করে SQL-এ ভাঙা যায়। এর সাথে, একটি সাধারণ "ORDER BY" বিবৃতি নির্ধারণ করে প্রতিটি ফ্রেমে দেয়ালের কোন অংশ প্রদর্শন করতে হবে।

মূল সত্ত্বা: কোম্পানি: Ars Technica | ব্যক্তি: Lukas Vogel

SQLDoom কিভাবে ডাটাবেস ব্যবহার করে ফ্রেম রেন্ডার করে?

SQLDoom ইনপুট এবং প্রদর্শনের জন্য Python ক্লায়েন্ট ব্যবহার করে, যখন Cedar DB টেবিল জ্যামিতি এবং অবস্থা সংরক্ষণ করে। প্রায় 1300 লাইন SQL কোয়েরি 89 CTE জুড়ে প্রতি সেকেন্ডে 35 বিটম্যাপ ফ্রেমবাফার তৈরি করে, দক্ষ রেন্ডারিংয়ের জন্য পূর্ব-গণনা করা sort_keys সহ ORDER BY ব্যবহার করে।

বাংলা version →


🇩🇪 Deutsch

Doom in SQL-Datenbank von Lukas Vogel gerendert

Lukas Vogel schreibt in einem ausführlichen Blogbeitrag, wie es ihm gelungen ist, Doom mithilfe einer SQL-Datenbank zu rendern. Das SQLDoom-Projekt verwendet einen kleinen Python-Client für die Ein- und Ausgabe, die Steuerung des Spieltimings und die Anzeige jedes Frames. Dahinter verfolgt eine Reihe von Cedar DB-Tabellen die Spielgeometrie und den Spielzustand, während etwa 1300 Zeilen SQL-Abfragen über 89 allgemeine Tabellenausdrücke die Spiellogik implementieren und 35 Bitmap-Framebuffer pro Sekunde erzeugen.

SQLDoom ist eine deutliche Verbesserung gegenüber Vogels vorherigem Doom QL-Projekt, das „einen Multiplayer-Doom-ähnlichen Shooter vollständig in SQL“ erstellte, aber mit Graustufen-ASCII-Grafiken endete. Das neuere SQLDoom erzeugt vollfarbige 640×480-Frames, die der ursprünglichen Doom-Ausführungsdatei ähneln.

Die Umwandlung der klassischen Doom-WAD-Dateien in eine relationale Datenbank war einfach, sagt Vogel, weil das Spiel die Level in Scheitelpunkte, Linien und Sektoren unterteilte. Dooms binäre Raumpartitionierungsbäume können mithilfe eines für jede Position vorberechneten sort_key in SQL zerlegt werden. Damit bestimmt eine einfache „ORDER BY“-Anweisung, welche Teile der Wände in jedem Frame angezeigt werden.

Wichtige Entitäten: Unternehmen: Ars Technica | Personen: Lukas Vogel

Wie rendert SQLDoom Frames mithilfe einer Datenbank?

SQLDoom verwendet einen Python-Client für Eingabe und Anzeige, während Cedar DB-Tabellen Geometrie und Zustand speichern. Etwa 1300 Zeilen SQL-Abfragen über 89 CTEs erzeugen 35 Bitmap-Framebuffer pro Sekunde, wobei ORDER BY mit vorberechneten Sortierschlüsseln für effizientes Rendern verwendet wird.

Deutsch version →


🇪🇸 Español

Doom renderizado en base de datos SQL por Lukas Vogel

Lukas Vogel escribe en una extensa publicación de blog explicando cómo logró renderizar Doom usando una base de datos SQL. El proyecto SQLDoom utiliza un pequeño cliente Python para manejar la entrada y salida, controlar el tiempo del juego y mostrar cada fotograma. Detrás de eso, una serie de tablas Cedar DB rastrean la geometría y el estado del juego, mientras que alrededor de 1300 líneas de consultas SQL en 89 expresiones de tabla comunes implementan la lógica del juego y generan 35 búferes de trama de mapa de bits por segundo.

SQLDoom es una mejora significativa respecto al proyecto anterior de Vogel, Doom QL, que construyó "un shooter multijugador similar a Doom completamente en SQL" pero terminó con gráficos ASCII en escala de grises. El nuevo SQLDoom genera fotogramas a todo color de 640×480 que se asemejan al ejecutable original de Doom.

Convertir los archivos WAD clásicos de Doom a una base de datos relacional fue sencillo, dice Vogel, porque el juego dividía los niveles en vértices, líneas y sectores. Los árboles de partición de espacio binario de Doom se pueden descomponer en SQL usando una sort_key precalculada para cada posición. Con esto, una simple declaración "ORDER BY" determina qué partes de las paredes mostrar en cada fotograma.

Entidades clave: Empresas: Ars Technica | Personas: Lukas Vogel

Preguntas frecuentes: ¿Cómo renderiza SQLDoom fotogramas usando una base de datos?

SQLDoom usa un cliente Python para entrada y visualización, mientras que las tablas Cedar DB almacenan geometría y estado. Alrededor de 1300 líneas de consultas SQL en 89 CTE generan 35 búferes de trama de mapa de bits por segundo, usando ORDER BY con claves de orden precalculadas para un renderizado eficiente.

¿Cómo renderiza SQLDoom fotogramas usando una base de datos?

SQLDoom usa un cliente Python para entrada y visualización, mientras que las tablas Cedar DB almacenan geometría y estado. Alrededor de 1300 líneas de consultas SQL en 89 CTE generan 35 búferes de trama de mapa de bits por segundo, usando ORDER BY con claves de orden precalculadas para un renderizado eficiente.

Español version →


🇫🇷 Français

Doom rendu dans une base de données SQL par Lukas Vogel

Lukas Vogel écrit dans un long article de blog expliquant comment il a réussi à rendre Doom en utilisant une base de données SQL. Le projet SQLDoom utilise un petit client Python pour gérer les entrées et sorties, piloter le timing du jeu et afficher chaque image. Derrière cela, une série de tables Cedar DB suit la géométrie et l'état du jeu, tandis qu'environ 1300 lignes de requêtes SQL réparties sur 89 expressions de table communes implémentent la logique du jeu et génèrent 35 tampons d'image bitmap par seconde.

SQLDoom est une amélioration majeure par rapport au précédent projet Doom QL de Vogel, qui construisait "un jeu de tir multijoueur similaire à Doom entièrement en SQL" mais se terminait avec des graphismes ASCII en niveaux de gris. Le nouveau SQLDoom génère des images couleur complètes en 640×480 ressemblant à l'exécutable original de Doom.

Convertir les fichiers WAD classiques de Doom en une base de données relationnelle était simple, dit Vogel, car le jeu divisait les niveaux en sommets, lignes et secteurs. Les arbres de partition spatiale binaire de Doom peuvent être décomposés en SQL en utilisant une sort_key précalculée pour chaque position. Avec cela, une simple instruction "ORDER BY" détermine quelles parties des murs afficher à chaque image.

Entités clés : Entreprises : Ars Technica | Personnes : Lukas Vogel

FAQ : Comment SQLDoom rend-il les images en utilisant une base de données ?

SQLDoom utilise un client Python pour l'entrée et l'affichage, tandis que les tables Cedar DB stockent la géométrie et l'état. Environ 1300 lignes de requêtes SQL sur 89 CTE génèrent 35 tampons d'image bitmap par seconde, en utilisant ORDER BY avec des clés de tri précalculées pour un rendu efficace.

Comment SQLDoom rend-il les images en utilisant une base de données ?

SQLDoom utilise un client Python pour l'entrée et l'affichage, tandis que les tables Cedar DB stockent la géométrie et l'état. Environ 1300 lignes de requêtes SQL sur 89 CTE génèrent 35 tampons d'image bitmap par seconde, en utilisant ORDER BY avec des clés de tri précalculées pour un rendu efficace.

Français version →


🇮🇳 हिन्दी

Lukas Vogel द्वारा SQL डेटाबेस में Doom रेंडर किया गया

Lukas Vogel ने एक लंबी ब्लॉग पोस्ट में लिखा है कि कैसे उन्होंने SQL डेटाबेस का उपयोग करके Doom रेंडर किया। SQLDoom प्रोजेक्ट इनपुट और आउटपुट को संभालने, गेम के टाइमिंग को चलाने और प्रत्येक फ्रेम को प्रदर्शित करने के लिए एक छोटे Python क्लाइंट का उपयोग करता है। इसके पीछे, Cedar DB तालिकाओं की एक श्रृंखला गेम ज्यामिति और स्थिति को ट्रैक करती है, जबकि लगभग 1300 लाइनें SQL क्वेरीज़ 89 सामान्य तालिका अभिव्यक्तियों में गेम लॉजिक लागू करती हैं और प्रति सेकंड 35 बिटमैप फ्रेमबफर उत्पन्न करती हैं।

SQLDoom, Vogel के पिछले Doom QL प्रोजेक्ट की तुलना में एक बड़ा सुधार है, जिसने "पूरी तरह से SQL में एक मल्टीप्लेयर Doom-जैसी शूटर" बनाया लेकिन ग्रेस्केल ASCII ग्राफिक्स के साथ समाप्त हुआ। नया SQLDoom पूर्ण-रंग 640×480 फ्रेम उत्पन्न करता है जो मूल Doom निष्पादन योग्य के समान हैं।

Vogel कहते हैं, Doom के क्लासिक WAD फ़ाइलों को रिलेशनल डेटाबेस में बदलना सीधा था, क्योंकि गेम ने स्तरों को वर्टिस, लाइन्स और सेक्टरों में तोड़ दिया। Doom के बाइनरी-स्पेस पार्टीशन ट्री को प्रत्येक स्थिति के लिए पूर्व-गणना की गई sort_key का उपयोग करके SQL में तोड़ा जा सकता है। इसके साथ, एक सरल "ORDER BY" स्टेटमेंट यह निर्धारित करता है कि प्रत्येक फ्रेम में दीवारों के कौन से हिस्से प्रदर्शित हों।

मुख्य संस्थाएं: कंपनियां: Ars Technica | लोग: Lukas Vogel

SQLDoom डेटाबेस का उपयोग करके फ्रेम कैसे रेंडर करता है?

SQLDoom इनपुट और प्रदर्शन के लिए Python क्लाइंट का उपयोग करता है, जबकि Cedar DB तालिकाएं ज्यामिति और स्थिति संग्रहीत करती हैं। लगभग 1300 लाइनों की SQL क्वेरीज़ 89 CTE में प्रति सेकंड 35 बिटमैप फ्रेमबफर उत्पन्न करती हैं, कुशल रेंडरिंग के लिए पूर्व-गणना की गई sort_keys के साथ ORDER BY का उपयोग करती हैं।

हिन्दी version →


🇮🇩 Bahasa Indonesia

Doom Dirender dalam Database SQL oleh Lukas Vogel

Lukas Vogel menulis dalam posting blog panjang yang menjelaskan bagaimana ia berhasil merender Doom menggunakan database SQL. Proyek SQLDoom menggunakan klien Python kecil untuk menangani input dan output, mengatur waktu permainan, dan menampilkan setiap frame. Di belakangnya, serangkaian tabel Cedar DB melacak geometri dan status permainan, sementara sekitar 1300 baris kueri SQL di 89 ekspresi tabel umum mengimplementasikan logika permainan dan menghasilkan 35 framebuffer bitmap per detik.

SQLDoom adalah peningkatan besar dibandingkan proyek Doom QL Vogel sebelumnya, yang membangun "penembak mirip Doom multipemain sepenuhnya dalam SQL" tetapi berakhir dengan grafik ASCII skala abu-abu. SQLDoom yang lebih baru menghasilkan frame penuh warna 640×480 yang mirip dengan executable Doom asli.

Mengonversi file WAD klasik Doom ke database relasional itu mudah, kata Vogel, karena permainan membagi level menjadi simpul, garis, dan sektor. Pohon partisi ruang biner Doom dapat dipecah menjadi SQL menggunakan sort_key yang telah dihitung sebelumnya untuk setiap posisi. Dengan ini, pernyataan "ORDER BY" sederhana menentukan bagian dinding mana yang akan ditampilkan setiap frame.

Entitas Kunci: Perusahaan: Ars Technica | Orang: Lukas Vogel

Bagaimana SQLDoom merender frame menggunakan database?

SQLDoom menggunakan klien Python untuk input dan tampilan, sementara tabel Cedar DB menyimpan geometri dan status. Sekitar 1300 baris kueri SQL di 89 CTE menghasilkan 35 framebuffer bitmap per detik, menggunakan ORDER BY dengan kunci urut yang telah dihitung sebelumnya untuk rendering yang efisien.

Bahasa Indonesia version →


🇯🇵 日本語

Lukas Vogel が SQL データベースで Doom をレンダリング

Lukas Vogel は長いブログ記事で、SQL データベースを使って Doom をレンダリングする方法を説明しています。SQLDoom プロジェクトは、入力と出力を処理し、ゲームのタイミングを制御し、各フレームを表示するために小さな Python クライアントを使用します。その背後では、一連の Cedar DB テーブルがゲームのジオメトリと状態を追跡し、約 1300 行 の SQL クエリ(89 の共通テーブル式にわたる)がゲームロジックを実装し、毎秒 35 のビットマップフレームバッファを生成します。

SQLDoom は、Vogel の以前の Doom QL プロジェクトからの大きな改善です。以前のプロジェクトは「完全に SQL で構築されたマルチプレイヤーの Doom 風シューティングゲーム」でしたが、グレースケールの ASCII グラフィックスに終わりました。新しい SQLDoom は、オリジナルの Doom 実行ファイルに似たフルカラーの 640×480 フレームを生成します。

Vogel によると、Doom のクラシックな WAD ファイルをリレーショナルデータベースに変換するのは簡単でした。なぜなら、ゲームはレベルを頂点、線、セクターに分割していたからです。Doom のバイナリ空間分割ツリーは、各位置に対して事前計算された sort_key を使用して SQL に分解できます。これにより、単純な「ORDER BY」ステートメントで、各フレームに表示する壁の部分が決定されます。

主要エンティティ:企業:Ars Technica | 人物:Lukas Vogel

FAQ:SQLDoom はデータベースを使ってどのようにフレームをレンダリングしますか?

SQLDoom は入力と表示に Python クライアントを使用し、Cedar DB テーブルがジオメトリと状態を保存します。約 1300 行の SQL クエリが 89 の CTE にわたって毎秒 35 のビットマップフレームバッファを生成し、事前計算された sort_key を使用した ORDER BY で効率的なレンダリングを実現します。

SQLDoom はデータベースを使ってどのようにフレームをレンダリングしますか?

SQLDoom は入力と表示に Python クライアントを使用し、Cedar DB テーブルがジオメトリと状態を保存します。約 1300 行の SQL クエリが 89 の CTE にわたって毎秒 35 のビットマップフレームバッファを生成し、事前計算された sort_key を使用した ORDER BY で効率的なレンダリングを実現します。

日本語 version →


🇧🇷 Português

Doom renderizado em banco de dados SQL por Lukas Vogel

Lukas Vogel escreve em uma longa postagem de blog explicando como conseguiu renderizar Doom usando um banco de dados SQL. O projeto SQLDoom usa um pequeno cliente Python para lidar com entrada e saída, controlar o tempo do jogo e exibir cada quadro. Por trás disso, uma série de tabelas Cedar DB rastreia a geometria e o estado do jogo, enquanto cerca de 1300 linhas de consultas SQL em 89 expressões de tabela comuns implementam a lógica do jogo e geram 35 buffers de quadro bitmap por segundo.

SQLDoom é uma grande melhoria em relação ao projeto anterior de Vogel, Doom QL, que construiu "um jogo de tiro multijogador semelhante a Doom inteiramente em SQL" mas acabou com gráficos ASCII em escala de cinza. O novo SQLDoom gera quadros coloridos completos de 640×480 semelhantes ao executável original de Doom.

Converter os arquivos WAD clássicos de Doom para um banco de dados relacional foi simples, diz Vogel, porque o jogo dividia os níveis em vértices, linhas e setores. As árvores de partição de espaço binário de Doom podem ser decompostas em SQL usando uma sort_key pré-calculada para cada posição. Com isso, uma simples declaração "ORDER BY" determina quais partes das paredes exibir em cada quadro.

Entidades-chave: Empresas: Ars Technica | Pessoas: Lukas Vogel

Como o SQLDoom renderiza quadros usando um banco de dados?

SQLDoom usa um cliente Python para entrada e exibição, enquanto as tabelas Cedar DB armazenam geometria e estado. Cerca de 1300 linhas de consultas SQL em 89 CTEs geram 35 buffers de quadro bitmap por segundo, usando ORDER BY com chaves de ordenação pré-calculadas para renderização eficiente.

Português version →


🇷🇺 Русский

Doom, отрендеренный в базе данных SQL, от Lukas Vogel

Lukas Vogel пишет в длинном посте в блоге, объясняя, как ему удалось отрендерить Doom с помощью базы данных SQL. Проект SQLDoom использует небольшой Python-клиент для обработки ввода и вывода, управления временем игры и отображения каждого кадра. За этим стоит серия таблиц Cedar DB, отслеживающих геометрию и состояние игры, в то время как около 1300 строк SQL-запросов в 89 общих табличных выражениях реализуют игровую логику и генерируют 35 битмап-буферов кадров в секунду.

SQLDoom является значительным улучшением по сравнению с предыдущим проектом Vogel, Doom QL, который создавал "многопользовательский шутер, похожий на Doom, полностью на SQL", но заканчивался графикой в оттенках серого ASCII. Новый SQLDoom генерирует полноцветные кадры 640×480, напоминающие оригинальный исполняемый файл Doom.

Преобразование классических WAD-файлов Doom в реляционную базу данных было простым, говорит Vogel, потому что игра разбивала уровни на вершины, линии и сектора. Двоичные деревья пространственного разделения Doom можно разбить на SQL, используя предварительно вычисленный sort_key для каждой позиции. С помощью этого простой оператор "ORDER BY" определяет, какие части стен отображать в каждом кадре.

Ключевые сущности: Компании: Ars Technica | Люди: Lukas Vogel

Как SQLDoom рендерит кадры с помощью базы данных?

SQLDoom использует Python-клиент для ввода и отображения, в то время как таблицы Cedar DB хранят геометрию и состояние. Около 1300 строк SQL-запросов в 89 CTE генерируют 35 битмап-буферов кадров в секунду, используя ORDER BY с предварительно вычисленными ключами сортировки для эффективного рендеринга.

Русский version →


🇨🇳 简体中文

Lukas Vogel 在 SQL 数据库中渲染《Doom》

Lukas Vogel 在一篇长篇博客文章中解释了他如何通过 SQL 数据库渲染《Doom》。SQLDoom 项目使用一个小型 Python 客户端处理输入和输出,驱动游戏计时,并显示每一帧。背后,一系列 Cedar DB 表追踪游戏几何和状态,而约 1300 行 SQL 查询(分布在 89 个公共表表达式)实现游戏逻辑,每秒生成 35 个位图帧缓冲区。

SQLDoom 相比 Vogel 之前的 Doom QL 项目有重大改进,后者构建了“完全用 SQL 实现的多玩家类似《Doom》的射击游戏”,但最终只有灰度 ASCII 图形。新的 SQLDoom 生成全彩 640×480 帧,类似于原始《Doom》可执行文件。

Vogel 说,将《Doom》经典的 WAD 文件转换为关系数据库很简单,因为游戏将关卡分解为顶点、线和扇区。《Doom》的二叉空间分割树可以通过为每个位置预计算的 sort_key 分解为 SQL。这样,简单的“ORDER BY”语句就能决定每帧显示墙壁的哪些部分。

关键实体:公司:Ars Technica | 人物:Lukas Vogel

FAQ:SQLDoom 如何使用数据库渲染帧?

SQLDoom 使用 Python 客户端进行输入和显示,而 Cedar DB 表存储几何和状态。约 1300 行 SQL 查询(分布在 89 个 CTE)每秒生成 35 个位图帧缓冲区,利用预计算的 sort_key 通过 ORDER BY 实现高效渲染。

SQLDoom 如何使用数据库渲染帧?

SQLDoom 使用 Python 客户端进行输入和显示,而 Cedar DB 表存储几何和状态。约 1300 行 SQL 查询(分布在 89 个 CTE)每秒生成 35 个位图帧缓冲区,利用预计算的 sort_key 通过 ORDER BY 实现高效渲染。

简体中文 version →