חזרה
Doom SQL שוחרר למסד נתונים
SiTech AI Team2 דק׳ קריאה

Doom SQL שוחרר למסד נתונים

המפתח לוקאס פוגל שיחרר את Doom SQL לתוך מסד נתונים. הפרויקט SQLDoom מבצע את הלוגיקה של המשחק עם 1300 שורות של שאילתות SQL ומייצר 35 פריים בשנייה, בעוד לקוח Python קטן מנהל קלט, פלט, זמן והצגת פריימים על המסך.

המפתח לוקאס פוגל שיחרר את המשחק מ-1993 Doom SQL לתוך מסד נתונים. בפוסט בלוג ארוך הוא מתאר כיצד המשחק SQLDoom שלו מוצג כמעט לחלוטין באמצעות שאילתות SQL, והוא עצמו מודה: „הצגת Doom במסד נתונים היא ברורה רעיון גרוע“.

איך זה עובד

SQLDoom אינו אמולטור: קלט, פלט, זמן והצגת פריימים על המסך מנוהלים על ידי לקוח Python קטן, והמשחק עצמו רץ מאחוריו בטבלאות של CedarDB. כ-1300 שורות של שאילתות SQL, מחולקות על 89 CTE, מבצעות את הלוגיקה של המשחק ומייצרות 35 פריים בשנייה כביטמפ.

העברת קבצי WAD הקלאסיים של Doom למסד יחסי התגלתה יחסית פשוטה, כי המנוע המקורי מפרק שלבים לקודקודים, קווים וסקטורים. ב-SQL נכנסים גם עצי חלוקת המרחב הבינארי (BSP): מפתח sort_key שחושב מראש עבור האובייקטים מאפשר לשאילתת ORDER BY להחליט בכל פריים איזה חלק מהקיר יצויר ואיזה לא. בדיוק הטריק הזה הופך את המשחק למהיר.

SQLDoom-ის დახარისხების ალგორითმის ვიზუალიზაცია

ביצועים וריבוי שחקנים

למרות שהכל נקרא ונכתב בטבלאות SQL, לפי פוגל, SQLDoom רץ על לפטופ עם Ryzen 7 בקצב של כ-60 פריימים לשנייה, ובסצנות עמוסות לעיתים יורד לכ-35 פריימים.

לפי אותו פוגל, מסד הנתונים מעניק יתרון לשרתי ריבוי שחקנים: הוא שומר עותק יציב של מצב המשחק ומסדר בעצמו גישה בו-זמנית, ולכן „לא קיימים עדכונים חלקיים, שגיאות פיזיקה או חוסר הסכמה לגבי האם טיל באמת פגע“.

כדי להריץ את המשחק נדרשים הקוד מ-GitHub, CedarDB וקובץ WAD של Doom. קיים גם דמו מקוון חינמי, אך במהלך הבדיקה של Ars Technica גרסה זו עבדה בצורה גרועה.

SSiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.