1 điểm bởi GN⁺ 2024-07-15 | 1 bình luận | Chia sẻ qua WhatsApp

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 CreateRemoteThreadLoadLibrary để 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

 
GN⁺ 2024-07-15
Ý kiến trên Hacker News
  • Có thể tải Emperor: Battle for Dune từ archive.org

    • Liên kết
    • Chia sẻ thông tin cho những ai muốn thử game cùng bản vá wheybags
    • Cũng đã đào lại được danh sách các bản phát hành lậu trước đây
    • Ngạc nhiên khi biết còn có cả soundtrack OST
  • Trò chơi này có ý nghĩa lớn với thể loại RTS

    • Đây là một trong những khởi nguồn của kiểu game RTS điển hình có nông dân thu hoạch tài nguyên
    • Nhờ tiểu thuyết gốc nên nó mới có hình thái như vậy; nếu không, thể loại RTS có thể đã đi theo hướng khác
  • Westwood Online (WOL) không còn hoạt động nữa

    • Chơi mạng chỉ còn khả thi qua LAN
    • XWIS.net đã hỗ trợ rất nhiều sau khi WOL ngừng hoạt động
    • Dự án FreeRA cũng có thể giúp khôi phục hoạt động của WOL
    • Việc thay thế thư viện WOL có thể tương đối dễ
  • Chia sẻ trải nghiệm vá mã mạng của Tiberian Sun cách đây 10 năm

    • Lao vào code của người khác cũng giống như có một kết nối chung để bám vào
    • Rất ngạc nhiên khi phát hiện có hẳn một stack riêng cho chơi bằng modem
  • Có cảm giác tác giả là một người vừa thú vị vừa thông minh

    • Phần giải thích có thể mở rộng rất hữu ích và thú vị
    • Thắc mắc liệu CS:GO đã “nghỉ hưu” vào năm 2023 hay chỉ được đổi thương hiệu thành CS2
  • Đề xuất khả năng tích hợp với CnCNet

    • Mời sang CnCNet chơi cùng
  • Phản ứng với cụm từ "modem 28.8 BPS"

    • "active matrix, hàng triệu màu sắc ảo giác"
  • 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

    • Bạn đã tích lũy đủ kinh nghiệm rồi, nên tự tin hơn đi
  • Cảm ơn vì bài viết rất hấp dẫn và có chiều sâu

    • Từng thấy game này ở một cửa hàng đồ cũ địa phương, nhưng vì chỉ chơi Dune II nên đã không mua
    • Giờ thì quyết định nhất định phải mua
  • Bày tỏ niềm đam mê với thiết kế UI

    • Gợi nhớ đến một bài viết trên blog của Steve Yegge