جمله معروف «آیا دوم روی آن اجرا میشود؟» سالهاست به چالش محبوب برنامهنویسان تبدیل شده، اما این بار ماجرا فراتر از ماشینحساب، تست بارداری یا مسواک برقی رفته است. لوکاس فوگل، توسعهدهنده خلاق، موفق شده بازی افسانهای Doom را مستقیماً از دل یک پایگاه داده رابطهای SQL رندر کند و به نمایش بگذارد؛ ایدهای که شاید در نگاه اول کاملاً غیرمنطقی به نظر برسد، اما خروجی آن شگفتانگیز است.
پروژه SQLDoom چطور کار میکند؟
شاید بپرسید یک دیتابیس که ذاتاً برای مدیریت و جستوجوی دادهها طراحی شده، چطور فریمهای بازی اکشن و سهبعدی را رندر میکند؟ پروژه موسوم به SQLDoom از سه بخش اصلی تشکیل شده است:
- کلاینت پایتون سبک: این اسکریپت تنها ورودی کیبورد، زمانبندی بازی و نمایش تصویر نهایی را روی نمایشگر بر عهده دارد.
- جداول پایگاه داده CedarDB: وضعیت بازی، مختصات فضایی و دادههای هندسی نقشهها در این دیتابیس ذخیره میشوند.
- منطق پردازش SQL: حدود ۱۳۰۰ خط کد کوئری SQL شامل ۸۹ عبارت CTE (عبارات جدولی عمومی)، منطق بازی را محاسبه کرده و در هر ثانیه ۳۵ فریم پیکسلی با رزولوشن ۶۴۰×۴۸۰ تولید میکنند.
از تصویر اسکی تاریک تا رنگهای چشمنواز نسخه اصلی
این نخستین تلاش فوگل برای اجرای دووم در SQL نبوده است. او سال گذشته پروژه دیگری به نام DoomQL ساخت که خروجی آن بسیار ابتدایی، سیاه و سفید، بر پایه حروف اسکی (ASCII) و شبیه نسخه اولیه Wolfenstein 3D بود. اما نسخه فعلی به طرز باورنکردنی تصاویر تمامرنگی، روان و شفافی خلق میکند که تشخیص آن با نسخه اصلی DOS تقریباً غیرممکن است.
وقتی دنیای شیاطین به ردیفهای جدول تبدیل میشود!
به گفته این توسعهدهنده، تبدیل فایلهای کلاسیک WAD دووم به یک دیتابیس رابطهای اصلاً کار دشواری نبوده؛ زیرا موتور اصلی بازی از همان ابتدا ساختار منظمی از بردارها، خطوط و بخشها داشت. بخش جالب ماجرا جایی است که درختهای BSP مشهور دووم به فیلدهای ساده پایگاه داده تبدیل شدهاند. پایگاه داده با یک دستور مرتبسازی ساده (ORDER BY)، در چند میلیثانیه تشخیص میدهد کدام دیوارها روبهروی بازیکن هستند و باید رندر شوند و کدام بخشها باید نادیده گرفته شوند.
عطش بیپایان برای پورت کردن دووم
علاقهمندان رتروگیمینگ و هکرهای سختافزار هر هفته راههای تازهای برای زنده نگهداشتن شاهکار سال ۱۹۹۳ پیدا میکنند؛ از بهکارگیری چیپهای میکروکنترلری رزبریپای پیکو ۲ به عنوان پردازنده کمکی گرفته تا بازطراحی روی کنسولهای قدیمی نئوژئو. با این حال، استفاده مستقیم از کدهای SQL برای ساخت موتور رندرینگ قطعاً یکی از مهندسیترین و دیوانهوارترین دستاوردهای سالهای اخیر محسوب میشود.
نظر، سوال یا تجربه خود را درباره این مطلب با سایر کاربران اوکالا به اشتراک بگذارید.