นักพัฒนาคนหนึ่งได้ผลักดันขีดจำกัดของเทคโนโลยีฐานข้อมูลไปสู่จุดสูงสุดด้วยการสร้าง 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 ควรเรียกว่าเกมเลียนแบบ DOOM หรือควรจะติดป้ายว่าเป็นเกมสไตล์ Wolfenstein 3D จะเหมาะสมกว่า การอภิปรายนี้มีจุดศูนย์กลางอยู่ที่ความแตกต่างทางเทคนิคระหว่างเกมยิงคลาสสิกเหล่านี้ โดยหลายคนชี้ให้เห็นว่าการเล่นเกมแบบตารางกริดที่ไม่มีเทกซ์เจอร์นั้นคล้ายกับ Wolfenstein 3D รุ่นก่อนหน้ามากกว่าเอนจิน DOOM ที่ทันสมัยกว่า
การถกเถียงเรื่องการจำแนกประเภทนี้เน้นย้ำให้เห็นว่าเราได้ก้าวไปไกลแค่ไหนจากช่วงต้นทศวรรษ 1990 เมื่อความแตกต่างเหล่านี้มีความสำคัญมากสำหรับเกมเมอร์ การสนทนานี้ยังเผยให้เห็นถึงลักษณะที่น่าประทับใจของความสำเร็จนี้ - ไม่ว่าจะคล้ายกับเกมย้อนยุคเกมไหนมากที่สุด การใช้งานเกมยิง 3D ใด ๆ ใน SQL ทั้งหมดถือเป็นความสำเร็จทางเทคนิคที่น่าทึ่ง
คุณสมบัติของเกม:
- การเรนเดอร์แบบ 3D raycasting ผ่าน SQL
- รองรับผู้เล่นหลายคนแบบเรียลไทม์
- การเคลื่อนไหวของผู้เล่นและการตรวจจับการชน
- ระบบฟิสิกส์กระสุนและความเสียหาย
- การแสดงผล HUD และแผนที่ย่อ
- ระบบโกงผ่านคำสั่ง SQL โดยตรง
การใช้งานผู้เล่นหลายคนทำให้นักพัฒนาประหลาดใจ
สิ่งที่ทำให้ DOOMQL แตกต่างจากการทดลองเกมฐานข้อมูลก่อนหน้านี้คือความสามารถในการเล่นแบบผู้เล่นหลายคน ผู้สร้าง DuckDB-DOOM เวอร์ชันต้นฉบับยังได้เข้ามาชื่นชมความก้าวหน้านี้ โดยสังเกตว่าการเพิ่มเกมผู้เล่นหลายคนทำให้แนวคิดนี้ไปสู่ระดับความซับซ้อนที่สูงขึ้นอย่างสิ้นเชิง
ระบบผู้เล่นหลายคนทำงานผ่านธุรกรรม SQL อย่างง่าย โดยการกระทำของผู้เล่นแต่ละคนจะถูกประมวลผลเป็นการอัปเดตฐานข้อมูล วิธีการนี้จัดการกับด้านที่ท้าทายของเกมผู้เล่นหลายคนได้อย่างเป็นธรรมชาติ เช่น การรักษาสถานะเกมที่สอดคล้องกันระหว่างไคลเอนต์หลายตัวและการป้องกันความขัดแย้งระหว่างการกระทำของผู้เล่นพร้อมกัน
![]() |
---|
ตัวละครที่มีจินตนาการสะท้อนการสำรวจเกมผู้เล่นหลายคนที่ซับซ้อนใน DOOMQL ในฐานะความสำเร็จทางเทคนิคที่สำคัญ |
ผลลัพธ์ด้านประสิทธิภาพเกินความคาดหมาย
เมื่อทำงานที่ความละเอียด 64x64 พิกเซล DOOMQL สามารถทำได้ประมาณ 60 เฟรมต่อวินาทีบนฮาร์ดแวร์มาตรฐาน การเรนเดอร์แต่ละเฟรมใช้เวลาประมาณ 1.55 มิลลิวินาที ซึ่งมีความสามารถในการแข่งขันอย่างน่าประหลาดใจสำหรับระบบที่ทำงานผ่านคำสั่งฐานข้อมูลทั้งหมด อัลกอริทึม raycasting ที่ใช้งานผ่านคำสั่ง SQL แบบเรียกซ้ำจัดการกับไปป์ไลน์การเรนเดอร์ 3D ที่ปกติจะต้องใช้การเขียนโปรแกรมกราฟิกเฉพาะทาง
มันเป็นความสำเร็จที่เจ๋งมาก ในฐานะคนบ้าเกมยิงยุคแรก ๆ ผมสงสัยว่าการเรียกมันว่าคล้าย Doom นั้นยุติธรรมหรือไม่
ความสำเร็จด้านประสิทธิภาพทำให้นักพัฒนาบางคนพิจารณาว่าฐานข้อมูลอาจเป็นแพลตฟอร์มที่เป็นไปได้สำหรับเกมผู้เล่นหลายคนบางประเภท โดยเฉพาะเกมที่มีความต้องการกราฟิกง่าย ๆ หรือกลไกแบบผลัดกันเล่น
ข้อมูลจำเพาะด้านประสิทธิภาพ:
- ความละเอียด: 64x64 พิกเซล
- อัตราเฟรม: ~60 FPS
- เวลาการเรนเดอร์ต่อเฟรม: 1.55 มิลลิวินาที
- ความถี่ของลูปเกม: 50-100 ครั้งต่อวินาที
- เวลาการประมวลผลลูปเกม: ~1 มิลลิวินาที
![]() |
---|
ตัวละครที่สนุกสนานซึ่งเป็นตัวอย่างของความสนุกและความสำเร็จที่เป็นนวัตกรรมของ DOOMQL ในการบรรลุผลการดำเนินงานที่น่าประทับใจ |
การโกงกลายเป็นส่วนหนึ่งของการออกแบบเกม
ผลที่ตามมาอย่างหนึ่งที่ไม่คาดคิดจากการสร้างเกมใน SQL คือผู้เล่นที่มีความรู้ทางเทคนิคสามารถโกงได้โดยการออกคำสั่งฐานข้อมูลโดยตรง แทนที่จะมองว่านี่เป็นข้อบกพร่อง นักพัฒนากลับยอมรับมันเป็นเมตาเกมที่เกิดขึ้นเองซึ่งการโกงอย่างสร้างสรรค์กลายเป็นส่วนหนึ่งของประสบการณ์
ผู้เล่นสามารถปรับเปลี่ยนพลังชีวิต ตำแหน่ง หรือคุณสมบัติอื่น ๆ ของเกมได้โดยการรันคำสั่ง SQL โดยตรงกับฐานข้อมูล สิ่งนี้สร้างพลวัตที่น่าสนใจซึ่งความรู้ด้านการเขียนโปรแกรมกลายเป็นองค์ประกอบของการเล่นเกม แม้ว่าจะทำให้เกิดคำถามเกี่ยวกับความยุติธรรมในการแข่งขันในสถานการณ์ผู้เล่นหลายคนก็ตาม
โปรเจกต์ DOOMQL แสดงให้เห็นว่านักพัฒนาที่มีความคิดสร้างสรรค์ยังคงหาวิธีใหม่ ๆ ในการผลักดันขอบเขตของเทคโนโลยีอย่างต่อเนื่อง แม้ว่าการรันเกมยิงในฐานข้อมูลอาจไม่ใช่สิ่งที่ใช้งานได้จริงสำหรับการพัฒนาเกมเชิงพาณิชย์ แต่มันแสดงให้เห็นถึงความยืดหยุ่นของระบบฐานข้อมูลสมัยใหม่และให้ข้อมูลเชิงลึกที่มีค่าเกี่ยวกับแนวทางทางเลือกในสถาปัตยกรรมเกมผู้เล่นหลายคน
อ้างอิง: Building a DOOM-like multiplayer shooter in pure SQL