اکنون میتوانید Doom را در پایگاه داده SQL در یکی از شگفتانگیزترین پروژههای پورتینگ که تاکنون دیدهایم بازی کنید.
توسعهدهنده Doom را در SQL بازسازی میکند و از طریق جستجوهای CedarDB به صورت محلی به رندر تمام رنگی، منطق بازی، چند نفره و عملکرد قابل بازی دست مییابد.
Vogel Doom را به طور کامل در یک پایگاه داده SQL پورت کرد
این پورت فریم های تمام رنگی 640×480 را از حدود 1300 خط SQL ترسیم می کند.
از دست رفتن پیمایش درخت BSP در DoomQL باعث شد که Vogel نسخه دوم را شروع کند توسعه دهنده Lukas Vogel Doom را به گونه ای منتقل کرده است که به طور کامل در یک پایگاه داده SQL اجرا شود که هم منطق بازی و هم رندرینگ از طریق پرس و جو انجام می شود.
این پروژه که SQLDoom نام دارد، هندسه سطح و وضعیت بازی را در جداول CedarDB ذخیره میکند، در حالی که یک اسکریپت پایتون سبک وزن، زمانبندی، ورودی و خروجی نمایش را کنترل میکند.
نتیجه، 35 فریم تمام رنگی در ثانیه با وضوح 640×480، با استفاده از تقریبا 1300 خط کد SQL که در 89 بلوک پرس و جو تقسیم شده است، تولید می کند.
تلاش قبلی کمتر از Doom واقعی بود
تلاش قبلی به نام DoomQL سال گذشته راهاندازی شد و مبتنی بر پخش پرتو با کاراکترهای متنی در مقیاس خاکستری بود، بنابراین بیشتر به Wolfenstein 3D شبیه بود تا Doom.
پخش پرتو از پیمایش درخت BSP که به تمایز رویکرد رندر Doom کمک کرد، نادیده گرفت و وگل را وادار کرد تا نسخه دوم را توسعه دهد.
برای SQLDoom، توسعهدهنده هم سیستم رندرینگ و هم حلقه بازی را ملزم میکرد که به طور کامل از طریق SQL کار کنند، با خروجی محدود به جداول با رنگ دقیق یا بیت مپ.
ووگل در یک پست وبلاگی درباره این پروژه گفت: «پرداخت Doom در پایگاه داده بدیهی است ایده بدی است.
ساخت نسخه جدید به معنای بازسازی بخشهای کلیدی فرآیند رندر Doom با استفاده از عملیات پایگاه داده به جای کدهای معمولی موتور بازی بود.
مدیریت هندسه سطح نسبتا ساده بود، زیرا یک کلید مرتبسازی که هنگام بارگیری هر نقشه محاسبه میشود، به یک بند سفارش واحد اجازه میدهد تعیین کند که کدام بخش دیوار کشیده شده است.
کف و سقف مشکل سخت تری را ایجاد کرد. موتور اصلی Doom از visplanes و تغییرات حالت استفاده میکند، که هیچکدام بهطور منظم به رندر SQL ستون به ستون ترجمه نمیشوند.
ووگل آن سیستم را با رویکردی «خیلی هکی» جایگزین کرد و از میان یک رشته پانلهای مرتب شده برای پر کردن آن سطوح حلقه زد.
ارقام سرعت و تست های سرور نتایج متفاوتی ارائه می دهند
Vogel در لپتاپهایی با تراشه Ryzen 7 7840U حدود 60 فریم در ثانیه گزارش میدهد، اگرچه سرعت صحنههای شلوغ میتواند به 35 فریم در ثانیه برسد.
او گفت که سربار جدول قابل توجهی است، با این حال پورت همچنان سریعتر از تلاش ساده DoomQL او در سال گذشته است.
ووگل گفت: «من آن را به عنوان یک نسخه نمایشی فناوری در نظر گرفتم، اما مانند Doom واقعی به نظر می رسد، حتی اگر یک خط کد را با هیچ پورت Doom موجود به اشتراک نمی گذارد.
این پورت همچنین از بازی deathmatch پشتیبانی میکند و سرورهای آنلاین عمومی میزبانی شده در اروپا و ایالات متحده برای مسابقات چند نفره باز هستند.
بررسیکنندگانی که دموی آنلاین را امتحان کردند، عملکرد ضعیفی را توصیف کردند، با یکی از خروجیها پیشنهاد میشود که سرورها به جای خود پورت مسئول هستند.
ووگل استدلال میکند که پایگاه داده یک رکورد ثابت از وضعیت بازی را حفظ میکند، «بدون بهروزرسانی جزئی اعمال شده، باگهای فیزیکی، یا اختلاف نظر در مورد اینکه آیا موشک واقعا اصابت کرده است یا خیر».
ثبت اشاره کرد که این کار به عنوان ویترینی برای CedarDB، یک سیستم پایگاه داده که پرس و جوهای پیچیده را در کد ماشین کامپایل می کند، دو برابر می شود.
هرکسی که میخواهد آن را امتحان کند، میتواند کد GitHub را به صورت محلی با دادههای CedarDB و WAD اصلی Doom اجرا کند یا به یک مسابقه میزبانی رایگان آنلاین بپیوندد.
از طریق ثبت نام
متن اصلی (انگلیسی)
You can now play Doom on a SQL database in one of the most astonishing porting projects we've ever seen
Developer rebuilds Doom in SQL, achieving full-color rendering, game logic, multiplayer, and playable performance through CedarDB queries locally.