- Game TPS chỉ dành cho Windows từ năm 2003 GunZ: The Duel
→ được port để chạy trên trình duyệt dựa trên WebAssembly + WebGL
- Không cần cài đặt, chỉ cần mở URL trên Chrome là có thể chơi ngay https://gunz.sigr.io/
- Hoạt động trên Linux, macOS, di động và gần như mọi môi trường
- Giữ nguyên mã C++ hiện có gần như không cần sửa đổi
- Khoảng 99% mã mới được viết là do AI tạo ra
Vì sao điều này có ý nghĩa
- Game PC truyền thống:
- Cần tải xuống/cài đặt
- Phụ thuộc vào Windows
- Kết quả lần này:
- Chạy đúng game đó trên trình duyệt
- Không phải “bản dựng tương tự” mà là bản port nguyên gốc
- Trước đây đây là lĩnh vực “về lý thuyết có thể nhưng thực tế thì bất khả thi”
Những lần thử trước và thất bại
- Cách tiếp cận trước đây:
- Viết lại engine bằng JavaScript + Three.js
- Kết quả:
- Chỉ thành công đến mức render bản đồ
- Độ khó của việc tái triển khai toàn bộ engine quá cao nên phải dừng
- Kết luận:
- Cách “tái triển khai” trên thực tế gần như bất khả thi
Vấn đề cốt lõi: phụ thuộc vào Windows
- GunZ được xây dựng bằng C++ và phụ thuộc vào Direct3D
- Vấn đề:
- Direct3D là API chỉ dành cho Windows
- Không thể dùng trực tiếp trong trình duyệt (WebGL)
- Chỉ biên dịch sang wasm là không giải quyết được
- Nói cách khác:
- Chỉ phần mã độc lập nền tảng mới có thể đưa sang wasm
- Phần phụ thuộc vào API đồ họa mới là rào cản lớn nhất
Giới hạn của các cách tiếp cận hiện có
- Sửa trực tiếp mã game
- Cần chỉnh sửa hàng chục nghìn dòng
- Không thể bảo trì
- Tự động chuyển đổi (D3D → WebGL)
- Do khác biệt về ngữ nghĩa API nên không thể chuyển đổi máy móc
- Kết luận:
- Mọi cách cũ đều phi thực tế
Ý tưởng cốt lõi: “lớp dịch”
- Cách tiếp cận:
- Giữ nguyên mã game
- Chặn các lệnh gọi Direct3D
- Chuyển đổi sang WebGL theo thời gian thực
- Triển khai:
- Wrapper WebGL có cùng giao diện với API D3D9
- Được chèn vào giữa game ↔ API đồ họa
- Hiệu quả:
- Gần như không cần sửa mã game
- Loại bỏ sự phụ thuộc vào Windows
- Giới hạn chi phí port vào việc “triển khai wrapper”
Vai trò của AI
- Công cụ sử dụng:
- Google Antigravity
- Claude Code (gói Max)
- Kết quả:
- Tự động hóa việc phân tích và chỉnh sửa mã ở quy mô lớn
- Giải quyết các vấn đề vốn mất nhiều tuần chỉ trong vài giờ
- Thực tế là làm thay những việc con người khó có thể xử lý
- Đặc biệt:
- AI đảm nhận phần lớn việc triển khai wrapper D3D → WebGL
Tóm tắt cốt lõi
- Không phải “làm lại game” mà là
→ giải quyết theo hướng giữ sống mã hiện có
- Công nghệ cốt lõi:
- WebAssembly
- Lớp dịch Direct3D → WebGL
- Thay đổi quan trọng:
- Nhờ AI, port các hệ thống legacy quy mô lớn đã trở thành công việc thực tế
- Hàm ý:
- Trong tương lai, độ khó khi đưa game/phần mềm cũ lên web có thể giảm mạnh
10 bình luận
AI thì đúng là rất ấn tượng, nhưng tôi nghĩ yếu tố lớn hơn là nhờ D3D9 được tách bạch tốt ở mức giao diện; nếu nó bị rối vào nhau bằng các tham chiếu trực tiếp thì có lẽ sẽ khó hơn nhiều.
Hôm trước tôi có đọc một bài trên Inven, hóa ra là họ xử lý bằng cách dựng một lớp dịch Direct3D.
Lúc thử nghiệm, chưa đến 1 phút thì tôi đã thấy khá rõ cảm giác chất lượng hình ảnh không được tốt lắm, nhưng nếu nghĩ rằng đây không phải là làm mới lại từ đầu mà là giữ nguyên thông qua một lớp dịch, thì tôi cũng thấy như vậy là có thể hiểu được...
Tuy vậy, có vẻ blog gốc đang được vận hành theo cách khá rủi ro. Lẽ ra phải ghi rõ là bài dịch hoặc ghi rõ là bản gốc... nhưng cảm giác như đang giả làm tác giả thật khá mạnh... Trong phần bình luận cũng có người chỉ ra điểm đó, nhưng không thấy phản hồi.
(Ngay từ đầu, các bài tham chiếu trên blog gốc đều là tiếng Nhật.)
Có một điểm vô lý là theo mức giá ở Hàn Quốc thì Anti Gravity của Hanwha không có gói 3.000 won/tháng. Các hình ảnh v.v. đều hiện bằng tiếng Nhật. Thậm chí có ảnh còn có cả tiếng Anh.
Nếu vậy thì có lẽ ngay từ đầu họ đã chuyển sang tiếng Hàn rồi đăng còn hơn.
Nghe nói bạn đã thanh toán gói 5x, nhưng ảnh chụp lại là 20x, cơ mà cũng có thể là người đang sống ở Nhật nên thôi vậy...
Càng xem càng có cảm giác như chính chủ vậy.
Câu hiện lên khi truy cập sigr.io cũng là lời bài hát của aespa,
tên dự án Gunz cũng là Whiplash Gunz, trùng với tên một bài hát của aespa,
đến cả handle trên velog cũng thống nhất là aespa nên tạo cảm giác là rất thích aespa, thành ra cũng nghĩ liệu có phải chính chủ đã tự chạy bản dịch rồi đăng lên velog không nhỉ.
Không phải chính anh ấy làm.
Nhưng bản Guns phát hành trên Steam rồi mà... không biết có vấn đề gì về mặt pháp lý không.
Wow, thật sự rất ấn tượng.
Đây là một trò chơi tôi đã cực kỳ yêu thích, cảm ơn vì đã hồi sinh nó.
Nhưng mà không có người vào nhỉ
Có lẽ là vì máy chủ cũng chạy bên trong trình duyệt. Nếu muốn nhiều người cùng chơi thì có vẻ những người chơi cần trao đổi thông tin với nhau và kết nối với nhau qua WebSocket.
Thật tuyệt vời, đúng là một cách tận dụng AI đích thực.