Dự án phục hồi Emperor: Battle for Dune
Emperor: Battle for Dune là gì?
- Tựa game chiến thuật thời gian thực do Westwood Studios phát hành năm 2001
- Phần tiếp theo của Dune 2000, nổi bật với đồ họa 3D, UX được cải thiện và nhạc nền xuất sắc
- Hiện nay không còn được nhiều người biết đến
Vấn đề
- Không hỗ trợ độ phân giải cao trên các hệ thống hiện đại
- Tốc độ game trong chế độ nhiều người chơi quá nhanh nên không thể chơi được
- Westwood Online (WOL) không hoạt động nên không thể chơi mạng ngoài LAN
- Không thể chơi chế độ chiến dịch ở dạng co-op
- Trình cài đặt bị hỏng
- Hiệu ứng hình ảnh bị lỗi do tốc độ khung hình cao
Cách giải quyết vấn đề
- Viết một chương trình thay thế
Emperor.exe để điều khiển Game.exe
- Tiêm DLL để áp dụng các bản vá
Tiêm bản vá
- Dùng thủ thuật
CreateRemoteThread và LoadLibrary để tiêm mã vào Game.exe
- Dùng thư viện detours để sửa các hàm hiện có
Bản vá đồ họa
Cửa sổ độ phân giải cao
- Dùng bản vá LegacyD3DResolutionHack của UCyborg để giải quyết vấn đề độ phân giải
- Thêm letterbox để giữ tỷ lệ 4:3
Giới hạn tốc độ khung hình
- Vá phương thức
IDirect3DDevice7::EndScene để giới hạn FPS ở mức 60
Bản vá mạng
- Khôi phục tính năng nhiều người chơi bằng chế độ WOL
- Chặn winsock để đường hầm hóa toàn bộ giao tiếp qua một kết nối client-server duy nhất
Viết máy chủ IRC
- Triển khai một máy chủ IRC cơ bản để thay thế máy chủ master của WOL
Đóng gói
Thay thế trình cài đặt
- Trình cài đặt gốc bị hỏng nên đã viết công cụ cài đặt mới
- Áp dụng bản vá v1.09
Thành phần internet dùng chung của Westwood Online
- Đăng ký
WOLAPI.DLL như một thư viện lớp COM để khôi phục chức năng WOL
Giao diện launcher
- Viết giao diện launcher cơ bản để có thể điều chỉnh các thiết lập đơn giản
Kết luận
- Đã đạt được mục tiêu, giúp Emperor: Battle for Dune chạy mượt trên các hệ thống hiện đại
- Khôi phục tính năng nhiều người chơi, bao gồm cả chế độ chiến dịch co-op
Tóm tắt của GN⁺
- Dự án này là một nỗ lực bảo tồn văn hóa quan trọng, giúp có thể thưởng thức lại một trò chơi cũ trên các hệ thống hiện đại
- Đây là một thử thách kỹ thuật rất thú vị; đặc biệt ấn tượng là quá trình xử lý các vấn đề về đồ họa và mạng
- Những dự án cung cấp chức năng tương tự gồm có các dự án wrapper DirectX như dxwrapper
1 bình luận
Ý kiến trên Hacker News
Có thể tải Emperor: Battle for Dune từ archive.org
Trò chơi này có ý nghĩa lớn với thể loại RTS
Westwood Online (WOL) không còn hoạt động nữa
Chia sẻ trải nghiệm vá mã mạng của Tiberian Sun cách đây 10 năm
Có cảm giác tác giả là một người vừa thú vị vừa thông minh
Đề xuất khả năng tích hợp với CnCNet
Phản ứng với cụm từ "modem 28.8 BPS"
Phản ứng với câu "tôi không phải là một kỹ sư đảo ngược lão luyện" thường thấy trong các bài blog
Cảm ơn vì bài viết rất hấp dẫn và có chiều sâu
Bày tỏ niềm đam mê với thiết kế UI