Kỳ tích kỳ quặc: Chạy được Doom trên cơ sở dữ liệu SQL

Công nghệ02 tháng 10, 2026·3 phút đọc

Một lập trình viên đã khiến cộng đồng công nghệ sửng sốt khi render thành công tựa game huyền thoại Doom ngay bên trong một cơ sở dữ liệu SQL. Dự án SQLDoom sử dụng khoảng 1.300 dòng truy vấn SQL để tạo ra khung hình bitmap màu đầy đủ ở tốc độ 35 khung hình mỗi giây.

Kỳ tích kỳ quặc: Chạy được Doom trên cơ sở dữ liệu SQL

Dự án SQLDoom của lập trình viên Lukas Vogel đã chứng minh rằng tựa game huyền thoại Doom có thể chạy được ngay bên trong một cơ sở dữ liệu SQL. Thay vì dùng engine đồ họa truyền thống, toàn bộ logic trò chơi được xử lý bằng khoảng 1.300 dòng truy vấn SQL, tạo ra khung hình màu 640x480 ở tốc độ 35 khung hình mỗi giây.

Ý tưởng điên rồ nhưng đầy tham vọng

Chính Vogel cũng thừa nhận sự phi lý của dự án này. Trong bài blog dài giải thích chi tiết cách mình làm, ông viết thẳng thắn:

"Render Doom trong một cơ sở dữ liệu rõ ràng là một ý tưởng tồi."

Tuy nhiên, chính vì tính "phản trực giác" đó mà dự án trở nên hấp dẫn. Đây không phải là lần đầu Vogel thử sức với ý tưởng kỳ quặc này. Trước đó, dự án DoomQL ra đời với mục tiêu xây dựng "một game bắn súng nhiều người chơi giống Doom hoàn toàn bằng SQL". Kết quả khi đó khá khiêm tốn: đồ họa ASCII thang độ xám dựa trên kỹ thuật raycasting, trông chẳng khác gì những bản đồ góc 90 độ đơn giản của Wolfenstein 3D.

SQLDoom là một bước tiến vượt bậc so với người tiền nhiệm.

SQLDoom hoạt động như thế nào?

Kiến trúc của SQLDoom khá thú vị vì nó phân chia rõ ràng giữa phần "vỏ" và phần "lõi":

  • Một client Python nhỏ đảm nhận việc xử lý nhập liệu, điều khiển thời gian của game và hiển thị từng khung hình lên màn hình.
  • Các bảng CedarDB đằng sau lưu trữ hình học và trạng thái của trò chơi.
  • Khoảng 1.300 dòng truy vấn SQL trải dài trên 89 biểu thức bảng chung (common table expressions) thực hiện toàn bộ logic game.
  • Kết quả đầu ra là 35 bộ đệm khung hình bitmap mỗi giây — đủ mượt để chơi được.

Điểm đáng kinh ngạc là SQLDoom tạo ra những khung hình màu đầy đủ kích thước 640x480, trông chẳng khác gì những gì mà file thực thi Doom gốc tạo ra. Không còn ASCII đơn sắc, không còn raycasting thô sơ — đây là Doom thực thụ, chỉ có điều mọi phép tính đều diễn ra trong các câu lệnh SELECT, JOIN và WHERE.

Vì sao cộng đồng công nghệ lại thích thú?

Những dự án kiểu "chạy được X trên Y" từ lâu đã là một thể loại giải trí riêng trong giới lập trình. Chúng thách thức các định kiến về việc công nghệ nào phù hợp với nhiệm vụ nào. Việc dùng SQL — vốn được thiết kế để truy vấn dữ liệu có cấu trúc — để render đồ họa game không chỉ vô nghĩa về mặt thực tiễn mà còn cực kỳ kém hiệu quả.

Nhưng chính sự vô nghĩa đó lại mang giá trị giáo dục. Dự án cho thấy SQL mạnh mẽ đến mức nào khi bị đẩy tới giới hạn, đồng thời phơi bày những điểm mạnh và điểm yếu của mô hình tính toán dựa trên tập hợp. Đối với lập trình viên Việt Nam đang làm việc với cơ sở dữ liệu, đây là một ví dụ thú vị để hiểu sâu hơn về cách tối ưu hóa truy vấn và tư duy tập hợp.

Góc nhìn cho người làm công nghệ Việt Nam

Với cộng đồng lập trình viên trong nước, những dự án như SQLDoom nhắc nhở chúng ta rằng ranh giới giữa các công nghệ đôi khi chỉ là quy ước. Một công cụ được thiết kế cho mục đích này hoàn toàn có thể được uốn nắn để giải quyết vấn đề khác, miễn là bạn hiểu rõ bản chất của nó.

Dĩ nhiên, đừng ai nghĩ đến việc chạy game production trên SQL nhé. Đây thuần túy là một thí nghiệm đầy cảm hứng, chứ không phải một kiến trúc để áp dụng vào dự án thật.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗