Mới đây, một lập trình viên đã khiến cộng đồng công nghệ bất ngờ khi giới thiệu DOOMQL – một trò chơi bắn súng góc nhìn thứ nhất (FPS) nhiều người chơi, được xây dựng hoàn toàn bằng SQL thuần túy. Điều ấn tượng là toàn bộ phần client chỉ vỏn vẹn khoảng 150 dòng code Python, nhưng game vẫn có thể chạy ổn định với tốc độ khung hình lên tới 30 FPS.
Khác biệt ở DOOMQL là mọi thứ – từ rendering cho tới xử lý nhập liệu – đều được thực hiện trong SQL. Chính vì vậy, DOOMQL được coi là phiên bản “thuần SQL” đúng nghĩa.
Độ phân giải hình ảnh trong game đạt mức 128×64 pixel, kèm theo khả năng hỗ trợ multiplayer. Theo nhà phát triển, hiệu năng của DOOMQL vượt xa DuckDB-DOOM (8 FPS), khi duy trì được 30 FPS ổn định.
Người đứng sau DOOMQL là Lukas Vogel, đồng sáng lập công ty chuyên về hiệu năng cơ sở dữ liệu CedarDB. Anh đã hoàn thiện dự án thú vị này chỉ trong vòng một tháng nghỉ chăm con.
Vogel chia sẻ rằng trong DuckDB-DOOM, phần dùng JavaScript “giống như một kiểu gian lận”, và điều đó đã thúc đẩy anh xây dựng một phiên bản thuần SQL hoàn chỉnh hơn.
Hiện tại, mã nguồn DOOMQL đã được công khai trên GitHub, cho phép bất kỳ ai cũng có thể tải về và trải nghiệm. Người dùng chỉ cần chuẩn bị môi trường Docker và Python để khởi chạy trò chơi.
Vogel cho biết anh sẽ tiếp tục cải tiến DOOMQL trong thời gian tới, với những tính năng đáng chờ đợi:
Có thể nói, DOOMQL không chỉ là một minh chứng thú vị về khả năng sáng tạo của SQL, mà còn cho thấy sức mạnh tiềm ẩn của ngôn ngữ này ngoài lĩnh vực dữ liệu. Với việc chỉ cần vài trăm dòng code, một tựa game huyền thoại như Doom đã có thể “hồi sinh” trong môi trường hoàn toàn khác biệt.
Bạn có thể tham khảo thêm dự án tại đây
github.com
Cảm hứng từ DuckDB-DOOM
DOOMQL được lấy cảm hứng từ dự án DuckDB-DOOM của Patrick Trainer. Trong dự án trước đó, tác giả đã thử tái hiện game Doom bằng SQL, nhưng phần xử lý render và input vẫn phải dựa vào JavaScript.Khác biệt ở DOOMQL là mọi thứ – từ rendering cho tới xử lý nhập liệu – đều được thực hiện trong SQL. Chính vì vậy, DOOMQL được coi là phiên bản “thuần SQL” đúng nghĩa.
Độ phân giải hình ảnh trong game đạt mức 128×64 pixel, kèm theo khả năng hỗ trợ multiplayer. Theo nhà phát triển, hiệu năng của DOOMQL vượt xa DuckDB-DOOM (8 FPS), khi duy trì được 30 FPS ổn định.
Người đứng sau DOOMQL là Lukas Vogel, đồng sáng lập công ty chuyên về hiệu năng cơ sở dữ liệu CedarDB. Anh đã hoàn thiện dự án thú vị này chỉ trong vòng một tháng nghỉ chăm con.
Vogel chia sẻ rằng trong DuckDB-DOOM, phần dùng JavaScript “giống như một kiểu gian lận”, và điều đó đã thúc đẩy anh xây dựng một phiên bản thuần SQL hoàn chỉnh hơn.
Cách thức hoạt động
Cấu trúc của DOOMQL được đánh giá là đơn giản nhưng sáng tạo:- Trạng thái trò chơi được lưu trong các bảng cơ sở dữ liệu.
- Quá trình render dựa trên SQL View để thực hiện ray casting (dò tia) và sprite projection (chiếu hình sprite).
- Vòng lặp game chạy nhờ một shell script nhỏ, mỗi giây thực thi file SQL khoảng 30 lần.
- Client chỉ cần khoảng 150 dòng Python code, chịu trách nhiệm polling input (lấy tín hiệu điều khiển) và query dữ liệu từ database để dựng hình 3D.
Mã nguồn mở, dễ thử nghiệm
Hiện tại, mã nguồn DOOMQL đã được công khai trên GitHub, cho phép bất kỳ ai cũng có thể tải về và trải nghiệm. Người dùng chỉ cần chuẩn bị môi trường Docker và Python để khởi chạy trò chơi.
Kế hoạch tương lai
Vogel cho biết anh sẽ tiếp tục cải tiến DOOMQL trong thời gian tới, với những tính năng đáng chờ đợi:
- Thêm power-up (vật phẩm tăng sức mạnh).
- Nhiều loại vũ khí hơn.
- Hệ thống LOD (Level of Detail) cho sprite nhằm tối ưu chi tiết.
- Cải tiến client để nâng trải nghiệm.
- Bổ sung đối thủ AI cho chế độ chơi đơn.
Có thể nói, DOOMQL không chỉ là một minh chứng thú vị về khả năng sáng tạo của SQL, mà còn cho thấy sức mạnh tiềm ẩn của ngôn ngữ này ngoài lĩnh vực dữ liệu. Với việc chỉ cần vài trăm dòng code, một tựa game huyền thoại như Doom đã có thể “hồi sinh” trong môi trường hoàn toàn khác biệt.
Bạn có thể tham khảo thêm dự án tại đây
GitHub - cedardb/DOOMQL: A multiplayer DOOM-like in pure SQL
A multiplayer DOOM-like in pure SQL. Contribute to cedardb/DOOMQL development by creating an account on GitHub.
BÀI MỚI ĐANG THẢO LUẬN