Lập trình viên tạo ra game bắn súng nhiều người chơi theo phong cách DOOM chạy hoàn toàn trên cơ sở dữ liệu SQL

Nhóm Cộng đồng BigGo
Lập trình viên tạo ra game bắn súng nhiều người chơi theo phong cách DOOM chạy hoàn toàn trên cơ sở dữ liệu SQL

Một lập trình viên đã đẩy công nghệ cơ sở dữ liệu đến giới hạn bằng cách tạo ra DOOMQL, một game bắn súng góc nhìn thứ nhất nhiều người chơi hoạt động hoàn toàn trong cơ sở dữ liệu SQL. Dự án sử dụng CedarDB để xử lý mọi thứ từ logic game và di chuyển người chơi đến kết xuất 3D thông qua các truy vấn SQL phức tạp.

Kiến trúc Kỹ thuật:

  • Cơ sở dữ liệu: CedarDB (tương thích PostgreSQL HTAP)
  • Kết xuất: Khung nhìn SQL và truy vấn đệ quy
  • Vòng lặp game: Script Python (50-100 dòng)
  • Client: Giao diện dựa trên terminal
  • Nhiều người chơi: Giao dịch SQL để đồng bộ hóa trạng thái
Một nhân vật kỳ quái đại diện cho tinh thần đổi mới đằng sau việc tạo ra DOOMQL, một trò chơi bắn súng nhiều người chơi trong cơ sở dữ liệu SQL
Một nhân vật kỳ quái đại diện cho tinh thần đổi mới đằng sau việc tạo ra DOOMQL, một trò chơi bắn súng nhiều người chơi trong cơ sở dữ liệu SQL

Cộng đồng tranh luận về phân loại game và thành tựu kỹ thuật

Cộng đồng game thủ đã khơi mào một cuộc tranh luận thú vị về việc liệu DOOMQL có nên được gọi là bản sao của DOOM hay chính xác hơn là được gắn nhãn như một game theo phong cách Wolfenstein 3D. Cuộc thảo luận tập trung vào sự khác biệt kỹ thuật giữa những game bắn súng kinh điển này, với nhiều người chỉ ra rằng lối chơi dựa trên lưới không có texture giống Wolfenstein 3D thời kỳ đầu hơn là engine DOOM tiên tiến hơn.

Cuộc tranh luận phân loại này làm nổi bật việc chúng ta đã tiến xa như thế nào kể từ đầu những năm 1990, khi những sự phân biệt này rất quan trọng đối với các game thủ. Cuộc trò chuyện cũng tiết lộ bản chất ấn tượng của thành tựu này - bất kể nó giống game retro nào nhất, việc triển khai bất kỳ game bắn súng 3D nào hoàn toàn bằng SQL đều thể hiện một kỳ công kỹ thuật đáng chú ý.

Tính năng trò chơi:

  • Kết xuất 3D raycasting thông qua SQL
  • Hỗ trợ nhiều người chơi thời gian thực
  • Di chuyển người chơi và phát hiện va chạm
  • Vật lý đạn và hệ thống sát thương
  • Hiển thị HUD và bản đồ thu nhỏ
  • Hệ thống cheat thông qua các lệnh SQL trực tiếp

Triển khai multiplayer khiến các lập trình viên ngạc nhiên

Điều khiến DOOMQL khác biệt với các thử nghiệm game cơ sở dữ liệu trước đây là khả năng multiplayer. Người tạo ra DuckDB-DOOM gốc thậm chí còn lên tiếng khen ngợi sự tiến bộ này, lưu ý rằng việc bổ sung multiplayer gaming đưa khái niệm này lên một cấp độ phức tạp hoàn toàn mới.

Hệ thống multiplayer hoạt động thông qua các giao dịch SQL đơn giản, nơi mỗi hành động của người chơi được xử lý như các cập nhật cơ sở dữ liệu. Cách tiếp cận này tự nhiên xử lý các khía cạnh thách thức của multiplayer gaming, chẳng hạn như duy trì trạng thái game nhất quán trên nhiều client và ngăn chặn xung đột giữa các hành động đồng thời của người chơi.

Một hình ảnh tượng trưng phản ánh việc khám phá game nhiều người chơi phức tạp trong DOOMQL như một thành tựu kỹ thuật đáng kể
Một hình ảnh tượng trưng phản ánh việc khám phá game nhiều người chơi phức tạp trong DOOMQL như một thành tựu kỹ thuật đáng kể

Kết quả hiệu suất vượt mong đợi

Chạy ở độ phân giải 64x64 pixel, DOOMQL đạt được khoảng 60 khung hình mỗi giây trên phần cứng tiêu chuẩn. Mỗi lần kết xuất khung hình mất khoảng 1.55 mili giây, điều này khá cạnh tranh đối với một hệ thống chạy hoàn toàn thông qua các truy vấn cơ sở dữ liệu. Thuật toán raycasting, được triển khai bằng các truy vấn SQL đệ quy, xử lý pipeline kết xuất 3D mà thông thường sẽ yêu cầu lập trình đồ họa chuyên biệt.

Đó là một thành tựu rất tuyệt vời. Với tư cách là một người đam mê các game bắn súng thời kỳ đầu, tôi tự hỏi liệu có công bằng khi gọi nó giống DOOM hay không.

Thành công về hiệu suất đã khiến một số lập trình viên cân nhắc liệu cơ sở dữ liệu có thể trở thành nền tảng khả thi cho một số loại game multiplayer nhất định, đặc biệt là những game có yêu cầu đồ họa đơn giản hơn hoặc cơ chế theo lượt.

Thông số hiệu năng:

  • Độ phân giải: 64x64 pixel
  • Tốc độ khung hình: ~60 FPS
  • Thời gian render mỗi khung hình: 1.55 mili giây
  • Tần số vòng lặp game: 50-100 lần mỗi giây
  • Thời gian thực thi vòng lặp game: ~1 mili giây
Một nhân vật vui nhộn thể hiện những thành tựu thú vị và đổi mới của DOOMQL trong việc đạt được các chỉ số hiệu suất ấn tượng
Một nhân vật vui nhộn thể hiện những thành tựu thú vị và đổi mới của DOOMQL trong việc đạt được các chỉ số hiệu suất ấn tượng

Gian lận trở thành một phần của thiết kế game

Một hệ quả bất ngờ của việc xây dựng game bằng SQL là những người chơi am hiểu kỹ thuật có thể gian lận bằng cách trực tiếp đưa ra các lệnh cơ sở dữ liệu. Thay vì coi đây là một lỗ hổng, lập trình viên đã chấp nhận nó như một metagame nổi lên nơi gian lận sáng tạo trở thành một phần của trải nghiệm.

Người chơi có thể sửa đổi máu, vị trí hoặc các thuộc tính game khác bằng cách chạy các lệnh SQL trực tiếp vào cơ sở dữ liệu. Điều này tạo ra một động lực thú vị nơi kiến thức lập trình trở thành một yếu tố gameplay, mặc dù nó cũng đặt ra câu hỏi về tính công bằng cạnh tranh trong các tình huống multiplayer.

Dự án DOOMQL chứng minh cách các lập trình viên sáng tạo tiếp tục tìm ra những cách mới để vượt qua ranh giới công nghệ. Mặc dù chạy game bắn súng trong cơ sở dữ liệu có thể không thực tế cho việc phát triển game thương mại, nó thể hiện tính linh hoạt của các hệ thống cơ sở dữ liệu hiện đại và cung cấp những hiểu biết có giá trị về các cách tiếp cận thay thế cho kiến trúc game multiplayer.

Tham khảo: Building a DOOM-like multiplayer shooter in pure SQL