HeadlinesBriefing HeadlinesBriefing 12 languages

We ported the original Doom to SQL

Hacker News ·

🇬🇧 English

The original 1993 Doom has been ported entirely to SQL, running its game logic and renderer inside a database. The game loop operates at the original 35 FPS, while the renderer produces full 320x200 frames at up to 60 Hz on an AMD Ryzen 7 7840 U. Python only handles timing, keyboard input, and displaying the bitmap. Deathmatch multiplayer is supported with four slots on EU and US servers. The shareware version of the first episode is available, with queueing if servers are full. The project builds on DOOMQL, an earlier ASCII-art version, but now includes BSP trees for correct depth ordering, textures, and varying floor heights. The WAD file was translated into relational tables, with importing taking about 18 seconds. The renderer outputs exact RGB pixels via SQL, and the game logic runs on a fixed 35 Hz loop. The client is deliberately minimal, only managing input, timing, and display.

The architecture separates game logic and renderer into two SQL paths: game logic updates state tables, while the renderer is a pure function of those tables. This allows the client to request frames as often as needed. The project demonstrates that complex game mechanics can be implemented purely in SQL, using user-defined functions where necessary. The original Doom’s fun factor is preserved, with visuals and feel matching the 1993 classic.

View original article →


🇸🇦 العربية

Doom محمول على SQL: منطق لعبة حقيقي من 1993 في قاعدة بيانات

تم نقل Doom الأصلي لعام 1993 بالكامل إلى SQL، يعمل منطق اللعبة والمُحرك داخل قاعدة بيانات. يعمل حلقة اللعبة بمعدل 35 FPS الأصلي، بينما يُنتج المُحرك إطارات كاملة بدقة 320x200 بتردد يصل إلى 60 هرتز على AMD Ryzen 7 7840 U. يتعامل Python فقط مع التوقيت وإدخال لوحة المفاتيح وعرض الخريطة النقطية. يدعم اللعب الجماعي الميتشات بأربع فتحات على خوادم EU وUS. متاح إصدار البرمجيات المشتركة للحلقة الأولى، مع انتظار إذا امتلأت الخوادم. يعتمد المشروع على DOOMQL، إصدار ASCII فني سابق، لكنه الآن يتضمن أشجار BSP للترتيب العمق الصحيح والملمس وارتفاعات أرضية متفاوتة. تمت ترجمة ملف WAD إلى جداول علائقية، واستغرق الاستيراد حوالي 18 ثانية. يُخرج المُحرك بكسلات RGB دقيقة عبر SQL، ويعمل منطق اللعبة على حلقة ثابتة 35 Hz. العميل بسيط مقصودًا، يتعامل فقط مع الإدخال والتوقيت والعرض.

تفصل الهندسة منطق اللعبة والمُحرك في مسارين SQL: يُحدث منطق اللعبة جداول الحالة، بينما المُحرك دالة نقية من تلك الجداول. يسمح هذا للعميل بطلب الإطارات بقدر ما يحتاج. يُثبت المشروع أن آليات اللعب المعقدة يمكن تنفيذها بالكامل في SQL، باستخدام دوال مُعرّفة من المستخدم عند الحاجة. عامل المتعة في Doom الأصلي محفوظ، مع visuals والإحساس مطابقة للكلاسيك 1993.

الكيانات الرئيسية: المواقع: خوادم EU، خوادم US

كيف يتعامل Doom المبني على SQL مع العرض ومنطق اللعبة؟

يعمل منطق اللعبة على حلقة ثابتة 35 Hz، مُحدثًا جداول حالة اللعبة في قاعدة البيانات. المُحرك هو دالة SQL نقية تُنتج خريطة نقطية 320x200 بقيم RGB دقيقة لكل بكسل، بناءً على الحالة الحالية للعبة. يتعامل العميل فقط مع الإدخال والتوقيت والعرض.

العربية version →


🇧🇩 বাংলা

Doom কে SQL-তে পোর্ট করা হয়েছে: ডেটাবেসে আসল 1993 গেম লজিক

মূল 1993 Doom সম্পূর্ণরূপে SQL-এ পোর্ট করা হয়েছে, যা ডেটাবেসের ভিতরে তার গেম লজিক ও রেন্ডারার চালায়। গেম লুপ মূল 35 FPS-এ চলে, রেন্ডারার AMD Ryzen 7 7840 U-এ সর্বোচ্চ 60 Hz-এ পূর্ণ 320x200 ফ্রেম উৎপাদন করে। Python কেবল টাইমিং, কীবোর্ড ইনপুট এবং বিটম্যাপ প্রদর্শন পরিচালনা করে। ডেথম্যাচ মাল্টিপ্লেয়ার EU এবং US সার্ভারে চারটি স্লট সহ সমর্থিত। প্রথম এপিসোডের শেয়ারওয়্যার সংস্করণ পাওয়া যায়, সার্ভার পূর্ণ হলে অপেক্ষা থাকে। এই প্রকল্প DOOMQL-এর উপর নির্মিত, একটি পূর্ববর্তী ASCII-আর্ট সংস্করণ, কিন্তু এখন সঠিক গভীরতা ক্রমের জন্য BSP ট্রি, টেক্সচার এবং ভিন্ন ফ্লোর উচ্চতা সহ। WAD ফাইলটি সম্পর্কিত টেবিলে অনুবাদ করা হয়েছে, আমদানিতে প্রায় 18 সেকেন্ড লাগে। রেন্ডারার SQL-এর মাধ্যমে সঠিক RGB পিক্সেল আউটপুট করে, গেম লজিক একটি ফিক্সড 35 Hz লুপে চলে। ক্লায়েন্ট জানালামিনিমাল, কেবল ইনপুট, টাইমিং এবং ডিসপ্লে পরিচালনা করে।

আকৃতি গেম লজিক ও রেন্ডারারকে দুটি SQL পাথে আলাদা করে: গেম লজিক স্টেট টেবিল আপডেট করে, রেন্ডারার সেই টেবিলগুলোর একটি পুরো ফাংশন। এটি ক্লায়েন্টকে যতদূর প্রয়োজন ফ্রেম অনুরোধ করতে দেয়। এই প্রকল্প দেখায় জটিল গেম মেকানিক্স পুরোপুরি SQL-এ বাস্তবায়নযোগ্য, প্রয়োজনে ইউজার-ডিফাইন্ড ফাংশন ব্যবহার করে। মূল Doomের মজার উপাদান সংরক্ষিত, 1993 ক্লাসিকের মতো দৃশ্য ও অনুভূতি।

কী এনটিটি: অবস্থান: EU সার্ভার, US সার্ভার

SQL-ভিত্তিক Doom রেন্ডারিং এবং গেম লজিক কীভাবে সামলায়?

গেম লজিক একটি ফিক্সড 35 Hz লুপে চলে, ডেটাবেসে গেম স্টেট টেবিল আপডেট করে। রেন্ডারার একটি পুরো SQL ফাংশন যা বর্তমান গেম স্টেটের ভিত্তিতে প্রতিটি পিক্সেলের সঠিক RGB মান সহ 320x200 বিটম্যাপ তৈরি করে। ক্লায়েন্ট কেবল ইনপুট, টাইমিং এবং ডিসপ্লে পরিচালনা করে।

বাংলা version →


🇩🇪 Deutsch

Doom nach SQL portiert: Echte 1993-Spiellogik in der Datenbank

Das originale Doom von 1993 wurde vollständig nach SQL portiert und führt seine Spiellogik und seinen Renderer innerhalb einer Datenbank aus. Die Spielschleife läuft mit den originalen 35 FPS, während der Renderer vollständige 320x200-Frames mit bis zu 60 Hz auf einem AMD Ryzen 7 7840 U erzeugt. Python übernimmt nur Timing, Tastatureingabe und Bitmap-Anzeige. Deathmatch-Multiplayer wird mit vier Slots auf EU- und US-Servern unterstützt. Die Shareware-Version des ersten Episoden ist verfügbar, mit Warteschlange wenn Server voll sind. Das Projekt baut auf DOOMQL auf, einer früheren ASCII-Kunst-Version, enthält aber nun BSP-Bäume für korrekte Tiefenordnung, Texturen und variable Fußbodenhöhen. Die WAD-Datei wurde in relationale Tabellen übersetzt, wobei der Import etwa 18 Sekunden dauert. Der Renderer gibt exakte RGB-Pixel über SQL aus, und die Spiellogik läuft in einer festen 35-Hz-Schleife. Der Client ist bewusst minimal und verwaltet nur Eingabe, Timing und Anzeige.

Die Architektur trennt Spiellogik und Renderer in zwei SQL-Pfade: Die Spiellogik aktualisiert Status-Tabellen, während der Renderer eine reine Funktion dieser Tabellen ist. Dies ermöglicht es dem Client, Frames so oft wie nötig anzufordern. Das Projekt demonstriert, dass komplexe Spielmechaniken rein in SQL implementiert werden können, wobei bei Bedarf benutzerdefinierte Funktionen verwendet werden. Der Spaßfaktor des originalen Doom bleibt erhalten, mit Grafik und Gefühl wie beim Klassiker von 1993.

Schlüsselentitäten: Orte: EU-Server, US-Server

Wie behandelt das SQL-basierte Doom Rendering und Spiellogik?

Die Spiellogik läuft in einer festen 35-Hz-Schleife und aktualisiert Spielstatus-Tabellen in der Datenbank. Der Renderer ist eine reine SQL-Funktion, die einen 320x200-Bitmap mit genauen RGB-Werten für jeden Pixel basierend auf dem aktuellen Spielstatus erzeugt. Der Client verwaltet nur Eingabe, Timing und Anzeige.

Deutsch version →


🇪🇸 Español

Doom portado a SQL: lógica de juego real en base de datos

El Doom original de 1993 ha sido completamente portado a SQL, ejecutando su lógica de juego y renderizador dentro de una base de datos. El bucle de juego opera a los originales 35 FPS, mientras que el renderizador produce fotogramas completos de 320x200 a hasta 60 Hz en un AMD Ryzen 7 7840 U. Python solo maneja temporización, entrada de teclado y visualización de mapas de bits. El multijugador deathmatch es compatible con cuatro ranuras en servidores EU y US. La versión shareware del primer episodio está disponible, con cola si los servidores están llenos. El proyecto se basa en DOOMQL, una versión anterior de arte ASCII, pero ahora incluye árboles BSP para ordenamiento de profundidad correcto, texturas y alturas de piso variables. El archivo WAD fue traducido a tablas relacionales, con importación tomando unos 18 segundos. El renderizador produce píxeles RGB exactos vía SQL, y la lógica del juego corre en un bucle fijo de 35 Hz. El cliente es deliberadamente mínimo, solo manejando entrada, temporización y visualización.

La arquitectura separa la lógica del juego y el renderizador en dos caminos SQL: la lógica del juego actualiza tablas de estado, mientras que el renderizador es una función pura de esas tablas. Esto permite al cliente solicitar fotogramas tan frecuentemente como sea necesario. El proyecto demuestra que mecánicas de juego complejas pueden implementarse puramente en SQL, usando funciones definidas por el usuario donde sea necesario. El factor diversión del Doom original se preserva, con visuales y sensación iguales al clásico de 1993.

Entidades clave: Ubicaciones: Servidores EU, Servidores US

¿Cómo maneja el Doom basado en SQL el renderizado y la lógica del juego?

La lógica del juego corre en un bucle fijo de 35 Hz, actualizando tablas de estado del juego en la base de datos. El renderizador es una función pura de SQL que genera un mapa de bits de 320x200 con valores RGB exactos para cada píxel, basado en el estado actual del juego. El cliente solo maneja entrada, temporización y visualización.

Español version →


🇫🇷 Français

Doom porté en SQL : logique de jeu réelle dans une base de données

Le Doom original 1993 a été entièrement porté en SQL, exécutant sa logique de jeu et son rendu dans une base de données. La boucle de jeu fonctionne au rythme original de 35 FPS, tandis que le rendu produit des images complètes 320x200 à jusqu'à 60 Hz sur AMD Ryzen 7 7840 U. Python ne gère que le timing, l'entrée clavier et l'affichage bitmap. Le multijoueur deathmatch est pris en charge avec quatre slots sur les serveurs EU et US. La version shareware du premier épisode est disponible, avec file d'attente si les serveurs sont pleins. Le projet s'appuie sur DOOMQL, une version ASCII art antérieure, mais inclut désormais des arbres BSP pour un ordre de profondeur correct, des textures et des hauteurs de sol variables. Le fichier WAD a été traduit en tables relationnelles, l'importation prenant environ 18 secondes. Le rendu produit des pixels RGB exacts via SQL, et la logique du jeu tourne sur une boucle fixe 35 Hz. Le client est délibérément minimal, gérant uniquement l'entrée, le timing et l'affichage.

L'architecture sépare la logique du jeu et le rendu en deux chemins SQL : la logique du jeu met à jour les tables d'état, tandis que le rendu est une fonction pure de ces tables. Cela permet au client de demander des images aussi souvent que nécessaire. Le projet démontre que des mécaniques de jeu complexes peuvent être implémentées purement en SQL, en utilisant des fonctions définies par l'utilisateur si nécessaire. Le facteur fun du Doom original est préservé, avec visuels et sensation correspondant au classique 1993.

Entités clés : Emplacements : Serveurs EU, Serveurs US

Comment le Doom basé sur SQL gère-t-il le rendu et la logique du jeu ?

La logique du jeu fonctionne sur une boucle fixe 35 Hz, mettant à jour les tables d'état du jeu dans la base de données. Le rendu est une fonction SQL pure qui génère une bitmap 320x200 avec des valeurs RGB exactes pour chaque pixel, basée sur l'état actuel du jeu. Le client ne gère que l'entrée, le timing et l'affichage.

Français version →


🇮🇳 हिन्दी

Doom को SQL में पोर्ट किया गया: डेटाबेस में असली 1993 गेम लॉजिक

मूल 1993 Doom पूरी तरह से SQL में पोर्ट किया गया है, जो डेटाबेस के अंदर अपनी गेम लॉजिक और रेंडरर चलाता है। गेम लूप मूल 35 FPS पर संचालित होता है, जबकि रेंडरर AMD Ryzen 7 7840 U पर 60 Hz तक पूर्ण 320x200 फ्रेम उत्पन्न करता है। Python केवल टाइमिंग, कीबोर्ड इनपुट और बिटमैप प्रदर्शन को संभालता है। डेथमैच्ट मल्टीप्लेयर EU और US सर्वर पर चार स्लॉट के साथ समर्थित है। पहले एपिसोड का शेयरवेयर संस्करण उपलब्ध है, सर्वर भरे होने पर कतार में। यह परियोजना DOOMQL पर आधारित है, एक पूर्व ASCII-कला संस्करण, लेकिन अब सही गहराई क्रम के लिए BSP ट्री, टेक्सचर और विभिन्न फ्लोर ऊंचाइयां शामिल हैं। WAD फाइल को संबंधात्मक तालिकाओं में अनुवादित किया गया, आयात करने में लगभग 18 सेकंड लगते हैं। रेंडरर SQL के माध्यम से सटीक RGB पिक्सेल आउटपुट करता है, और गेम लॉजिक एक फिक्स्ड 35 Hz लूप पर चलती है। क्लाइंट जानबूझकर न्यूनतम है, केवल इनपुट, टाइमिंग और प्रदर्शन प्रबंधित करता है।

वास्तुकला गेम लॉजिक और रेंडरर को दो SQL पथों में अलग करती है: गेम लॉजिक स्टेट तालिकाओं को अपडेट करती है, जबकि रेंडरर उन तालिकाओं का एक शुद्ध फ़ंक्शन है। यह क्लाइंट को जितनी आवश्यकता हो उतनी बार फ्रेम अनुरोध करने की अनुमति देता है। यह परियोजना प्रदर्शित करती है कि जटिल गेम मैकेनिक्स पूरी तरह से SQL में लागू किए जा सकते हैं, आवश्यकता पड़ने पर उपयोगकर्ता-परिभाषित फ़ंक्शन का उपयोग करते हुए। मूल Doom का मज़ा कारक बनाए रखा गया है, दृश्य और स्पर्श 1993 क्लासिक से मेल खाते हैं।

प्रमुख इकाइयां: स्थान: EU सर्वर, US सर्वर

SQL-आधारित Doom रेंडरिंग और गेम लॉजिक को कैसे संभालता है?

गेम लॉजिक एक फिक्स्ड 35 Hz लूप पर चलती है, डेटाबेस में गेम स्टेट तालिकाओं को अपडेट करती है। रेंडरर एक शुद्ध SQL फ़ंक्शन है जो वर्तमान गेम स्टेट के आधार पर प्रत्येक पिक्सेल के सटीक RGB मानों के साथ 320x200 बिटमैप उत्पन्न करता है। क्लाइंट केवल इनपुट, टाइमिंग और प्रदर्शन संभालता है।

हिन्दी version →


🇮🇩 Bahasa Indonesia

Doom Dipindahkan ke SQL: Logika Game Asli 1993 di Database

Doom asli 1993 telah dipindahkan sepenuhnya ke SQL, menjalankan logika game dan renderer di dalam database. Game loop beroperasi pada 35 FPS asli, sementara renderer menghasilkan frame penuh 320x200 hingga 60 Hz pada AMD Ryzen 7 7840 U. Python hanya menangani timing, input keyboard, dan menampilkan bitmap. Deathmatch multiplayer didukung dengan empat slot di server EU dan US. Versi shareware episode pertama tersedia, dengan antrian jika server penuh. Proyek ini dibangun di atas DOOMQL, versi ASCII art sebelumnya, tetapi sekarang mencakup pohon BSP untuk urutan kedalaman yang benar, tekstur, dan ketinggian lantai yang bervariasi. File WAD diterjemahkan ke tabel relasional, dengan impor memakan waktu sekitar 18 detik. Renderer mengeluarkan piksel RGB eksak via SQL, dan logika game berjalan pada loop tetap 35 Hz. Klien sengaja minimalis, hanya mengelola input, timing, dan tampilan.

Arsitektur memisahkan logika game dan renderer menjadi dua jalur SQL: logika game memperbarui tabel status, sementara renderer adalah fungsi murni dari tabel tersebut. Ini memungkinkan klien meminta frame sesering yang diperlukan. Proyek ini mendemonstrasikan bahwa mekanika game kompleks dapat diimplementasikan sepenuhnya dalam SQL, menggunakan fungsi yang ditentukan pengguna jika diperlukan. Faktor kesenangan Doom asli tetap terjaga, dengan visual dan nuansa yang cocok dengan klasik 1993.

Entitas utama: Lokasi: Server EU, Server US

Bagaimana Doom berbasis SQL menangani rendering dan logika game?

Logika game berjalan pada loop tetap 35 Hz, memperbarui tabel status game di database. Renderer adalah fungsi SQL murni yang menghasilkan bitmap 320x200 dengan nilai RGB eksak untuk setiap piksel, berdasarkan status game saat ini. Klien hanya menangani input, timing, dan tampilan.

Bahasa Indonesia version →


🇯🇵 日本語

DoomがSQLに移植:データベース内のリアルな1993年ゲームロジック

オリジナル1993年Doomが完全にSQLに移植され、データベース内でゲームロジックとレンダラーが動作する。ゲームループは元の35 FPSで動作し、レンダラーはAMD Ryzen 7 7840 Uで最大60 Hzの完全な320x200フレームを生成する。Pythonはタイミング、キーボード入力、ビットマップ表示のみを処理する。デスマッチマルチプレイヤーはEUサーバーとUSサーバーで4スロット対応。第一話のシェアウェア版が利用可能で、サーバーが満杯の場合はキューイング。プロジェクトはDOOMQLという以前のASCIIアート版を基盤とするが、今や正しい深度順序のためのBSPツリー、テクスチャ、異なる床の高さを含む。WADファイルはリレーショナルテーブルに変換され、インポートに約18秒かかる。レンダラーはSQLを介して正確なRGBピクセルを出力し、ゲームロジックは固定35 Hzループで動作。クライアントは意図的に最小限で、入力、タイミング、表示のみを管理。

アーキテクチャはゲームロジックとレンダラーを2つのSQLパスに分離:ゲームロジックがステートテーブルを更新し、レンダラーはそれらのテーブルの純粋な関数。これによりクライアントは必要な頻度でフレームを要求できる。プロジェクトは複雑なゲームメカニクスが純粋にSQLで実装可能であることを示し、必要に応じてユーザー定義関数を使用。元のDoomの面白さが保たれ、ビジュアルと手触りは1993年の古典と一致。

主要エンティティ:場所:EUサーバー、USサーバー

SQLベースのDoomはレンダリングとゲームロジックをどのように処理するか?

ゲームロジックは固定35 Hzループで動作し、データベース内のゲームステートテーブルを更新する。レンダラーは現在のゲームステートに基づき、各ピクセルの正確なRGB値を持つ320x200ビットマップを生成する純粋なSQL関数である。クライアントは入力、タイミング、表示のみを処理する。

日本語 version →


🇧🇷 Português

Doom portado para SQL: lógica de jogo real em banco de dados

O Doom original de 1993 foi totalmente portado para SQL, executando sua lógica de jogo e renderizador dentro de um banco de dados. O loop de jogo opera nos originais 35 FPS, enquanto o renderizador produz frames completos 320x200 a até 60 Hz em um AMD Ryzen 7 7840 U. Python apenas lida com temporização, entrada de teclado e exibição de bitmap. O multiplayer deathmatch é suportado com quatro slots nos servidores EU e US. A versão shareware do primeiro episódio está disponível, com fila se os servidores estiverem cheios. O projeto se baseia no DOOMQL, uma versão anterior de ASCII art, mas agora inclui árvores BSP para ordenação de profundidade correta, texturas e alturas de piso variáveis. O arquivo WAD foi traduzido para tabelas relacionais, com importação levando cerca de 18 segundos. O renderizador outputa pixels RGB exatos via SQL, e a lógica do jogo roda em loop fixo de 35 Hz. O cliente é deliberadamente mínimo, apenas gerenciando entrada, temporização e exibição.

A arquitetura separa a lógica do jogo e o renderizador em dois caminhos SQL: a lógica do jogo atualiza tabelas de estado, enquanto o renderizador é uma função pura dessas tabelas. Isso permite ao cliente solicitar frames tão frequentemente quanto necessário. O projeto demonstra que mecânicas de jogo complexas podem ser implementadas puramente em SQL, usando funções definidas pelo usuário quando necessário. O fator diversão do Doom original é preservado, com visuais e sensação iguais ao clássico de 1993.

Entidades-chave: Locais: Servidores EU, Servidores US

Como o Doom baseado em SQL lida com renderização e lógica de jogo?

A lógica do jogo roda em um loop fixo de 35 Hz, atualizando tabelas de estado do jogo no banco de dados. O renderizador é uma função pura de SQL que gera um bitmap 320x200 com valores RGB exatos para cada pixel, com base no estado atual do jogo. O cliente apenas lida com entrada, temporização e exibição.

Português version →


🇷🇺 Русский

Doom перенесён на SQL: настоящая логика игры 1993 в базе данных

Оригинальный Doom 1993 полностью перенесён на SQL, его игровая логика и рендерер работают внутри базы данных. Игровой цикл работает на оригинальных 35 FPS, а рендерер выдаёт полные кадры 320x200 до 60 Гц на AMD Ryzen 7 7840 U. Python обрабатывает только тайминг, ввод с клавиатуры и отображение битмапа. Мультиплеер deathmatch поддерживается с четырьмя слотами на серверах EU и US. Демо-версия первого эпизода доступна, с очередью если серверы заполнены. Проект основан на DOOMQL, более ранней версии в ASCII-арте, но теперь включает BSP-деревья для правильного порядка глубины, текстуры и разную высоту пола. Файл WAD переведён в реляционные таблицы, импорт занимает около 18 секунд. Рендерер выводит точные RGB-пиксели через SQL, игровая логика работает на фиксированном цикле 35 Гц. Клиент намеренно минимален, только ввод, тайминг и отображение.

Архитектура разделяет игровую логику и рендерер на два SQL-пути: игровая логика обновляет таблицы состояний, рендерер — чистая функция от этих таблиц. Это позволяет клиенту запрашивать кадры сколько нужно. Проект показывает, что сложные игровые механики можно реализовать чисто на SQL, используя пользовательские функции при необходимости. Фактор веселья оригинального Doom сохранён, визуал и ощущения соответствуют классике 1993 года.

Ключевые сущности: Локации: серверы EU, серверы US

Как Doom на SQL обрабатывает рендеринг и игровую логику?

Игровая логика работает на фиксированном цикле 35 Гц, обновляя таблицы состояний в базе данных. Рендерер — чистая SQL-функция, генерирующая битмап 320x200 с точными RGB-значениями для каждого пикселя на основе текущего состояния игры. Клиент обрабатывает только ввод, тайминг и отображение.

Русский version →


🇨🇳 简体中文

Doom移植到SQL:数据库中的真实1993年游戏逻辑

原版1993年Doom已完全移植到SQL,其游戏逻辑和渲染器在数据库内部运行。游戏循环以原始的35 FPS运行,渲染器在AMD Ryzen 7 7840 U上以最高60 Hz生成完整的320x200帧。Python仅处理计时、键盘输入和显示位图。死亡竞赛多人游戏支持EU和US服务器上的四个槽位。第一关的共享软件版本可用,如果服务器已满则排队。该项目基于DOOMQL——一个更早的ASCII艺术版本——但现在包括BSP树以实现正确的深度排序、纹理和不同的地板高度。WAD文件被转换为关系表,导入大约需要18秒。渲染器通过SQL输出精确的RGB像素,游戏逻辑在固定的35 Hz循环上运行。客户端故意保持极简,仅管理输入、计时和显示。

架构将游戏逻辑和渲染器分离为两条SQL路径:游戏逻辑更新状态表,而渲染器是这些表的纯函数。这使得客户端可以按需请求帧。该项目证明复杂的游戏机制可以完全在SQL中实现,必要时使用用户自定义函数。原版Doom的乐趣因素得以保留,视觉效果和手感与1993年的经典作品一致。

关键实体:位置:EU服务器、US服务器

基于SQL的Doom如何处理渲染和游戏逻辑?

游戏逻辑在固定的35 Hz循环上运行,更新数据库中的游戏状态表。渲染器是一个纯SQL函数,根据当前游戏状态生成具有每个像素精确RGB值的320x200位图。客户端仅处理输入、计时和显示。

简体中文 version →