นักพัฒนาสร้างเกมยิงมุมมองบุคคลที่หนึงแบบ DOOM ที่ทำงานบนฐานข้อมูล SQL ทั้งหมด

ทีมชุมชน BigGo
นักพัฒนาสร้างเกมยิงมุมมองบุคคลที่หนึงแบบ DOOM ที่ทำงานบนฐานข้อมูล SQL ทั้งหมด

นักพัฒนาคนหนึ่งได้ผลักดันขีดจำกัดของเทคโนโลยีฐานข้อมูลไปสู่จุดสูงสุดด้วยการสร้าง DOOMQL เกมยิงมุมมองบุคคลที่หนึ่งแบบผู้เล่นหลายคนที่ทำงานได้เต็มรูปแบบภายในฐานข้อมูล SQL โปรเจกต์นี้ใช้ CedarDB ในการจัดการทุกอย่างตั้งแต่ตรรกะเกมและการเคลื่อนไหวของผู้เล่นไปจนถึงการเรนเดอร์ 3D ผ่านคำสั่ง SQL ที่ซับซ้อน

สถาปัตยกรรมทางเทคนิค:

  • ฐานข้อมูล: CedarDB (เข้ากันได้กับ PostgreSQL HTAP)
  • การเรนเดอร์: SQL views และ recursive queries
  • Game loop: Python script (50-100 บรรทัด)
  • Client: อินเทอร์เฟซแบบ Terminal
  • Multiplayer: SQL transactions สำหรับการซิงโครไนซ์สถานะ
ตัวละครแปลกตาที่เป็นตัวแทนของจิตวิญญาณนวัตกรรมเบื้องหลังการสร้าง DOOMQL เกมยิงแบบผู้เล่นหลายคนในฐานข้อมูล SQL
ตัวละครแปลกตาที่เป็นตัวแทนของจิตวิญญาณนวัตกรรมเบื้องหลังการสร้าง DOOMQL เกมยิงแบบผู้เล่นหลายคนในฐานข้อมูล SQL

ชุมชนถกเถียงเรื่องการจำแนกประเภทเกมและความสำเร็จทางเทคนิค

ชุมชนเกมเมอร์ได้จุดประกายการถกเถียงที่น่าสนใจเกี่ยวกับว่า DOOMQL ควรเรียกว่าเกมเลียนแบบ DOOM หรือควรจะติดป้ายว่าเป็นเกมสไตล์ Wolfenstein 3D จะเหมาะสมกว่า การอภิปรายนี้มีจุดศูนย์กลางอยู่ที่ความแตกต่างทางเทคนิคระหว่างเกมยิงคลาสสิกเหล่านี้ โดยหลายคนชี้ให้เห็นว่าการเล่นเกมแบบตารางกริดที่ไม่มีเทกซ์เจอร์นั้นคล้ายกับ Wolfenstein 3D รุ่นก่อนหน้ามากกว่าเอนจิน DOOM ที่ทันสมัยกว่า

การถกเถียงเรื่องการจำแนกประเภทนี้เน้นย้ำให้เห็นว่าเราได้ก้าวไปไกลแค่ไหนจากช่วงต้นทศวรรษ 1990 เมื่อความแตกต่างเหล่านี้มีความสำคัญมากสำหรับเกมเมอร์ การสนทนานี้ยังเผยให้เห็นถึงลักษณะที่น่าประทับใจของความสำเร็จนี้ - ไม่ว่าจะคล้ายกับเกมย้อนยุคเกมไหนมากที่สุด การใช้งานเกมยิง 3D ใด ๆ ใน SQL ทั้งหมดถือเป็นความสำเร็จทางเทคนิคที่น่าทึ่ง

คุณสมบัติของเกม:

  • การเรนเดอร์แบบ 3D raycasting ผ่าน SQL
  • รองรับผู้เล่นหลายคนแบบเรียลไทม์
  • การเคลื่อนไหวของผู้เล่นและการตรวจจับการชน
  • ระบบฟิสิกส์กระสุนและความเสียหาย
  • การแสดงผล HUD และแผนที่ย่อ
  • ระบบโกงผ่านคำสั่ง SQL โดยตรง

การใช้งานผู้เล่นหลายคนทำให้นักพัฒนาประหลาดใจ

สิ่งที่ทำให้ DOOMQL แตกต่างจากการทดลองเกมฐานข้อมูลก่อนหน้านี้คือความสามารถในการเล่นแบบผู้เล่นหลายคน ผู้สร้าง DuckDB-DOOM เวอร์ชันต้นฉบับยังได้เข้ามาชื่นชมความก้าวหน้านี้ โดยสังเกตว่าการเพิ่มเกมผู้เล่นหลายคนทำให้แนวคิดนี้ไปสู่ระดับความซับซ้อนที่สูงขึ้นอย่างสิ้นเชิง

ระบบผู้เล่นหลายคนทำงานผ่านธุรกรรม SQL อย่างง่าย โดยการกระทำของผู้เล่นแต่ละคนจะถูกประมวลผลเป็นการอัปเดตฐานข้อมูล วิธีการนี้จัดการกับด้านที่ท้าทายของเกมผู้เล่นหลายคนได้อย่างเป็นธรรมชาติ เช่น การรักษาสถานะเกมที่สอดคล้องกันระหว่างไคลเอนต์หลายตัวและการป้องกันความขัดแย้งระหว่างการกระทำของผู้เล่นพร้อมกัน

ตัวละครที่มีจินตนาการสะท้อนการสำรวจเกมผู้เล่นหลายคนที่ซับซ้อนใน DOOMQL ในฐานะความสำเร็จทางเทคนิคที่สำคัญ
ตัวละครที่มีจินตนาการสะท้อนการสำรวจเกมผู้เล่นหลายคนที่ซับซ้อนใน DOOMQL ในฐานะความสำเร็จทางเทคนิคที่สำคัญ

ผลลัพธ์ด้านประสิทธิภาพเกินความคาดหมาย

เมื่อทำงานที่ความละเอียด 64x64 พิกเซล DOOMQL สามารถทำได้ประมาณ 60 เฟรมต่อวินาทีบนฮาร์ดแวร์มาตรฐาน การเรนเดอร์แต่ละเฟรมใช้เวลาประมาณ 1.55 มิลลิวินาที ซึ่งมีความสามารถในการแข่งขันอย่างน่าประหลาดใจสำหรับระบบที่ทำงานผ่านคำสั่งฐานข้อมูลทั้งหมด อัลกอริทึม raycasting ที่ใช้งานผ่านคำสั่ง SQL แบบเรียกซ้ำจัดการกับไปป์ไลน์การเรนเดอร์ 3D ที่ปกติจะต้องใช้การเขียนโปรแกรมกราฟิกเฉพาะทาง

มันเป็นความสำเร็จที่เจ๋งมาก ในฐานะคนบ้าเกมยิงยุคแรก ๆ ผมสงสัยว่าการเรียกมันว่าคล้าย Doom นั้นยุติธรรมหรือไม่

ความสำเร็จด้านประสิทธิภาพทำให้นักพัฒนาบางคนพิจารณาว่าฐานข้อมูลอาจเป็นแพลตฟอร์มที่เป็นไปได้สำหรับเกมผู้เล่นหลายคนบางประเภท โดยเฉพาะเกมที่มีความต้องการกราฟิกง่าย ๆ หรือกลไกแบบผลัดกันเล่น

ข้อมูลจำเพาะด้านประสิทธิภาพ:

  • ความละเอียด: 64x64 พิกเซล
  • อัตราเฟรม: ~60 FPS
  • เวลาการเรนเดอร์ต่อเฟรม: 1.55 มิลลิวินาที
  • ความถี่ของลูปเกม: 50-100 ครั้งต่อวินาที
  • เวลาการประมวลผลลูปเกม: ~1 มิลลิวินาที
ตัวละครที่สนุกสนานซึ่งเป็นตัวอย่างของความสนุกและความสำเร็จที่เป็นนวัตกรรมของ DOOMQL ในการบรรลุผลการดำเนินงานที่น่าประทับใจ
ตัวละครที่สนุกสนานซึ่งเป็นตัวอย่างของความสนุกและความสำเร็จที่เป็นนวัตกรรมของ DOOMQL ในการบรรลุผลการดำเนินงานที่น่าประทับใจ

การโกงกลายเป็นส่วนหนึ่งของการออกแบบเกม

ผลที่ตามมาอย่างหนึ่งที่ไม่คาดคิดจากการสร้างเกมใน SQL คือผู้เล่นที่มีความรู้ทางเทคนิคสามารถโกงได้โดยการออกคำสั่งฐานข้อมูลโดยตรง แทนที่จะมองว่านี่เป็นข้อบกพร่อง นักพัฒนากลับยอมรับมันเป็นเมตาเกมที่เกิดขึ้นเองซึ่งการโกงอย่างสร้างสรรค์กลายเป็นส่วนหนึ่งของประสบการณ์

ผู้เล่นสามารถปรับเปลี่ยนพลังชีวิต ตำแหน่ง หรือคุณสมบัติอื่น ๆ ของเกมได้โดยการรันคำสั่ง SQL โดยตรงกับฐานข้อมูล สิ่งนี้สร้างพลวัตที่น่าสนใจซึ่งความรู้ด้านการเขียนโปรแกรมกลายเป็นองค์ประกอบของการเล่นเกม แม้ว่าจะทำให้เกิดคำถามเกี่ยวกับความยุติธรรมในการแข่งขันในสถานการณ์ผู้เล่นหลายคนก็ตาม

โปรเจกต์ DOOMQL แสดงให้เห็นว่านักพัฒนาที่มีความคิดสร้างสรรค์ยังคงหาวิธีใหม่ ๆ ในการผลักดันขอบเขตของเทคโนโลยีอย่างต่อเนื่อง แม้ว่าการรันเกมยิงในฐานข้อมูลอาจไม่ใช่สิ่งที่ใช้งานได้จริงสำหรับการพัฒนาเกมเชิงพาณิชย์ แต่มันแสดงให้เห็นถึงความยืดหยุ่นของระบบฐานข้อมูลสมัยใหม่และให้ข้อมูลเชิงลึกที่มีค่าเกี่ยวกับแนวทางทางเลือกในสถาปัตยกรรมเกมผู้เล่นหลายคน

อ้างอิง: Building a DOOM-like multiplayer shooter in pure SQL