اجرای بازی Doom درون یک دیتابیس SQL؛ وقتی همهچیز فقط داده است!

حتماً شما هم عبارت معروف «آیا این دستگاه میتواند Doom را اجرا کند؟» را شنیدهاید؛ از تست کردن این بازی روی تست بارداری گرفته تا دستگاههای عجیبوغریب دیگر. حالا یک توسعهگر توانسته این بازی خاطرهانگیز را کاملاً داخل یک دیتابیس SQL اجرا کند! لukas Vogel با استفاده از جدولهای دیتابیس CedarDB و کدهای SQL موفق شده بازی Doom را با فریمریت روان و گرافیک رنگی اصلی روی پایگاه داده پیادهسازی کند.
شاید در نگاه اول اجرای یک بازی اکشن و سریع درون ساختار خشک و جدولبندی شده یک دیتابیس، ایدهای کاملاً دیوانهوار و اشتباه به نظر برسد؛ اما این پروژه که با نام SQLDoom شناخته میشود، ثابت میکند که با تکنیکهای هوشمندانه میتوان هر ناممکنی را ممکن کرد. در این پروژه یک پایتون client کوچک وظیفه مدیریت ورودی و خروجیها و زمانبندی بازی را بر عهده دارد، اما تمام منطق بازی و ساخت فریمها توسط کوئریهای SQL پردازش میشوند.
nn

nn

همهچیز فقط یک مشت داده است، مرد!
تبدیل فایلهای کلاسیک WAD بازی Doom به یک دیتابیس رابطهای کار چندان پیچیدهای نبوده است، چون ساختار اصلی بازی بر اساس بخشهای هندسی مشخصی مثل اضلاع و بخشهای مختلف طراحی شده است. لukas Vogel با استفاده از ترفندهای مرتبسازی و دستور ساده ORDER BY در هر فریم مشخص میکند که کدام بخش از دیوارها باید نمایش داده شوند و کدامها نادیده گرفته شوند که این موضوع تأثیر فوقالعادهای روی افزایش سرعت پردازش و performance بازی داشته است.
البته چالشهایی مثل رندر کردن کف و سقف زمین وجود داشت که با روشهای خلاقانه و استفاده از پنلهای مرتبشده حل شد. نتیجه کار شگفتانگیز است؛ این سیستم میتواند بازی را روی یک لپتاپ مجهز به پردازنده Ryzen 7 با سرعت ۶۰ فریم بر ثانیه اجرا کند!
مزایای پنهان اجرای بازی در دیتابیس
جالب اینجاست که اجرای Doom روی دیتابیس مزایای خاص خودش را هم دارد. برای مثال، وضعیت بازی همیشه به صورت یک snapshot دقیق ذخیره میشود که برای سرورهای چندنفره (multiplayer) فوقالعاده است. با این روش دیگر هیچ باگ فیزیکی یا دعوایی سر اینکه «آیا موشک واقعاً به دشمن برخورد کرد یا نه» وجود نخواهد داشت چون همهچیز بر اساس دادههای دقیق دیتابیس پیش میرود.
اگر دوست دارید این پروژه عجیب را روی سیستم خودتان تست کنید، کافی است به مخزن پروژه در GitHub سر بزنید، یک نسخه از CedarDB را تهیه کنید و با داشتن فایل WAD بازی، دیتابیس Doom خود را راه بیندازید!

