Doom Multiplayer viết bằng SQL thuần: 30 fps từ 150 dòng mã
Doom Multiplayer viết bằng SQL thuần: chỉ 150 dòng mã, chạy 30 fps!
Một lập trình viên đam mê retro gaming vừa thực hiện một thử thách cực kỳ ấn tượng: xây dựng chế độ đa người (multiplayer) của Doom chỉ bằng SQL thuần — không dùng ngôn ngữ lập trình truyền thống — và kết quả có thể chơi được ở tốc độ 30 khung hình/giây (fps). Dự án này được hoàn thành trong vòng chưa đến một tháng, với khoảng 150 dòng mã SQL.

Tại sao lại là SQL?
SQL (Structured Query Language) vốn được thiết kế để truy vấn và quản lý dữ liệu trong cơ sở dữ liệu, không phải để viết game hoặc xử lý đồ họa thời gian thực. Tuy nhiên, tác giả đã tận dụng các tính năng SQL để:
Lưu trữ trạng thái game (vị trí người chơi, đạn dược, trạng thái bản đồ…) trong bảng dữ liệu.
Dùng các truy vấn cập nhật, join, và xử lý logic để tính toán va chạm, di chuyển, cũ/ mới trạng thái vũ khí và bắn.
Sử dụng một GUI trình “draw” đơn giản kết hợp với các bảng dữ liệu để render hình ảnh hoặc trạng thái game dựa vào dữ liệu trong SQL.
Trong thực tế, tác giả tự nhận rằng chất lượng hình ảnh không phải là đẹp như phiên bản Doom gốc — nhưng ý tưởng và thực thi mới là điều đáng chú ý.
Kết quả & ấn tượng
Chỉ khoảng 150 dòng SQL là đủ để thiết lập logic multiplayer cơ bản — di chuyển người chơi, bắn đạn, quản lý bản đồ, đồng bộ trạng thái giữa người chơi.
Tốc độ chơi đạt 30 fps, tương đối mượt dù việc xử lý hoàn toàn dựa trên truy vấn SQL — một hiệu suất đáng kinh ngạc nếu bạn nghĩ về cách SQL thường bị coi là “chậm hơn ứng dụng native.”
Thời gian phát triển: dưới 1 tháng — cho thấy một cá nhân có thể làm nên điều “không tưởng” khi có đủ kiến thức + sự khéo léo.
Ý nghĩa & bài học rút ra
Dự án này mặc dù mang tính “thí nghiệm” nhiều hơn ứng dụng thực tế, nhưng cho thấy suy nghĩ sáng tạo và cách nghĩ “thoát khuôn” có thể dẫn đến kết quả cực kỳ thú vị.
Nó nhắc rằng các công cụ, ngôn ngữ “không dành cho game” vẫn có thể được tận dụng nếu hiểu rõ điểm mạnh và giới hạn của chúng.
Dự án cũng khơi mở câu hỏi về tốc độ xử lý, tối ưu truy vấn SQL, giới hạn khi scale nhiều người chơi, và cách xử lý đồng bộ hóa thời gian thực trong môi trường vốn không thiết kế cho nó.
Hạn chế & những gì chưa hoàn thiện
Hình ảnh, giao diện rất đơn giản, không thể so sánh với Doom gốc hay các bản port hiện đại.
Khi số người chơi hoặc bản đồ phức tạp tăng, truy vấn SQL có thể trở thành cổ chai (bottleneck) do join nhiều bảng, cập nhật hàng loạt, lock dữ liệu…
Không có hỗ trợ âm thanh, hiệu ứng phức tạp, AI kẻ địch thông minh — chỉ logic đa người cơ bản.
Khả năng mở rộng — nếu muốn thêm nhiều người chơi, vật thể động, va chạm phức tạp… sẽ cần tối ưu và có thể vượt giới hạn SQL.
Kết luận
Dự án “Doom Multiplayer bằng SQL thuần” là ví dụ thú vị về sự sáng tạo trong lập trình: nó không nhằm thay thế các engine game chuyên dụng, mà để chứng minh rằng ranh giới giữa ngôn ngữ / công cụ là do người dùng định nghĩa. Chỉ với ~150 dòng mã và trong ~1 tháng, một chế độ multiplayer có thể hoạt động ở 30 fps — điều đầy cảm hứng cho những ai thích lập trình “không bình thường”.