วิศวกรเจ๋ง! พัฒนา SQLDoom รันเกม Doom บนฐานข้อมูล SQL ดันเฟรมเรตทะลุ 60 FPS

Lukas Vogel พัฒนา SQLDoom รันเกม Doom บนฐานข้อมูล CedarDB ด้วยรหัส SQL 1,300 บรรทัด แสดงผลกราฟิกสีเต็มรูปแบบที่ความเร็วสูงสุด 60 FPS บนแล็ปท็อป Ryzen 7
วิศวกรเจ๋ง! พัฒนา SQLDoom รันเกม Doom บนฐานข้อมูล SQL ดันเฟรมเรตทะลุ 60 FPS
ภาพประกอบ: Brett Sayles บน Pexels

Lukas Vogel นักพัฒนาซอฟต์แวร์ ประสบความสำเร็จในการพอร์ตเกมยิงระดับตำนานอย่าง Doom ให้สามารถประมวลผลและเรนเดอร์กราฟิกผ่านระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (Relational Database) ภายใต้โปรเจกต์โอเพนซอร์สชื่อ "SQLDoom" โดยใช้ชุดคำสั่ง SQL ความยาวประมาณ 1,300 บรรทัด ร่วมกับฐานข้อมูล CedarDB ในการคำนวณตรรกะของเกมและสร้างเฟรมเรตได้สูงสุดถึง 60 เฟรมต่อวินาที (FPS) บนคอมพิวเตอร์พกพาที่ใช้งานชิปประมวลผล AMD Ryzen 7

สถาปัตยกรรมของ SQLDoom ทำงานโดยมีไคลเอนต์ภาษา Python ขนาดเล็กทำหน้าที่รับข้อมูลอินพุต ควบคุมจังหวะเวลา และแสดงผลภาพบนหน้าจอ ขณะที่เบื้องหลังใช้ตารางข้อมูลของ CedarDB ในการจัดเก็บโครงสร้างแผนที่ (Geometry) และสถานะของเกมทั้งหมด โดยคำสั่ง SQL ที่เขียนขึ้นประกอบด้วย Common Table Expressions (CTE) จำนวน 89 ชุด เพื่อประมวลผลตรรกะเกมและสร้างเฟรมบัฟเฟอร์แบบบิตแมปสีขนาด 640x480 พิกเซล ซึ่ง Vogel ระบุว่าโครงสร้างไฟล์ WAD ดั้งเดิมของ Doom ที่แบ่งแผนที่ออกเป็นจุดพิกัด (Vertices) เส้น (Lines) และเซกเตอร์ (Sectors) นั้น เอื้อต่อการแปลงเป็นฐานข้อมูลเชิงสัมพันธ์อย่างมาก นอกจากนี้ยังใช้การคำนวณโครงสร้างต้นไม้แบบ Binary Space Partitioning (BSP) ล่วงหน้าผ่าน sort_key ทำให้สามารถใช้คำสั่ง "ORDER BY" ในการจัดลำดับการแสดงผลกำแพงได้อย่างรวดเร็ว

แม้ว่าการเรนเดอร์พื้นและเพดานจะมีความซับซ้อนจนต้องใช้วิธีวนลูปบนแผงข้อมูลที่จัดเรียงไว้แทนระบบ Visplanes ดั้งเดิม แต่ Vogel ชี้ว่าการรันเกมบนฐานข้อมูลมีข้อดีอย่างยิ่งสำหรับระบบเซิร์ฟเวอร์ผู้เล่นหลายคน (Multiplayer) เนื่องจากคุณสมบัติการจัดการธุรกรรม (Transaction) และการเข้าถึงข้อมูลพร้อมกันของฐานข้อมูล ช่วยป้องกันปัญหาการอัปเดตสถานะเกมผิดพลาด บั๊กฟิสิกส์ หรือข้อพิพาทเรื่องการตรวจจับการชนของวัตถุ เช่น วิถีกระสุนหรือแรงระเบิดได้อย่างเด็ดขาด ปัจจุบันซอร์สโค้ดของ SQLDoom เปิดให้ดาวน์โหลดแล้วบน GitHub โดยผู้ใช้งานจำเป็นต้องมีฐานข้อมูล CedarDB และไฟล์ข้อมูลเกม (WAD) เพื่อเปิดใช้งานในเครื่องของตนเอง

แหล่งที่มาข้อมูล / ข่าวต้นทาง:arstechnica.com
เขียนโดยTong• Editor
ดูบทความทั้งหมด
คัดลอกลิงก์บทความเรียบร้อยแล้ว