1P by neo 2달전 | favorite | 댓글 1개

Emperor: Battle for Dune 복원 프로젝트

Emperor: Battle for Dune란?

  • 2001년에 Westwood Studios에서 제작한 실시간 전략 게임
  • Dune 2000의 후속작으로, 3D 그래픽과 개선된 UX, 뛰어난 사운드트랙을 특징으로 함
  • 현재는 잘 알려지지 않았음

문제점

  • 현대 시스템에서 높은 해상도를 지원하지 않음
  • 멀티플레이어에서 게임 속도가 너무 빨라져 플레이 불가
  • Westwood Online(WOL)이 작동하지 않아 LAN을 제외한 멀티플레이어 불가
  • 캠페인 모드를 협동 모드로 플레이할 수 없음
  • 설치 프로그램이 손상됨
  • 높은 프레임 속도로 인해 시각적 효과가 깨짐

문제 해결 방법

  • Emperor.exe를 대체하는 프로그램을 작성하여 Game.exe를 제어
  • DLL을 주입하여 패치를 적용

패치 주입

  • CreateRemoteThread와 LoadLibrary 트릭을 사용하여 Game.exe에 코드 주입
  • detours 라이브러리를 사용하여 기존 함수 수정

그래픽 패치

높은 해상도 창

  • UCyborg의 LegacyD3DResolutionHack 패치를 사용하여 해상도 문제 해결
  • 4:3 비율을 유지하기 위해 레터박스 추가

프레임 속도 제한

  • IDirect3DDevice7::EndScene 메서드를 패치하여 FPS를 60으로 제한

네트워킹 패치

  • WOL 모드를 사용하여 멀티플레이어 기능 복원
  • winsock을 가로채어 단일 클라이언트-서버 연결을 통해 모든 통신을 터널링

IRC 서버 작성

  • WOL 마스터 서버를 대체하기 위해 기본 IRC 서버 구현

패키징

설치 프로그램 대체

  • 원본 설치 프로그램이 손상되어 새로운 설치 도구 작성
  • v1.09 패치 적용

Westwood Online 공유 인터넷 구성 요소

  • WOLAPI.DLL을 COM 클래스 라이브러리로 등록하여 WOL 기능 복원

런처 UI

  • 간단한 설정을 조정할 수 있는 기본 런처 UI 작성

결론

  • 목표를 달성하여 현대 시스템에서 Emperor: Battle for Dune를 원활하게 실행할 수 있게 됨
  • 협동 캠페인 모드를 포함한 멀티플레이어 기능 복원

GN⁺의 정리

  • 이 프로젝트는 오래된 게임을 현대 시스템에서 다시 즐길 수 있게 해주는 중요한 문화적 보존 작업임
  • 기술적으로 흥미로운 도전 과제들을 해결하며, 특히 그래픽과 네트워킹 문제를 해결하는 과정이 인상적임
  • 비슷한 기능을 제공하는 프로젝트로는 dxwrapper와 같은 DirectX 래퍼 프로젝트가 있음
Hacker News 의견
  • Emperor: Battle for Dune를 archive.org에서 다운로드할 수 있음

    • 링크
    • wheybags 패치와 함께 게임을 시도해보고 싶어하는 사람들을 위한 정보 공유
    • 과거 해적판 릴리즈 목록도 발굴했음
    • OST 사운드트랙도 있다는 사실에 놀람
  • 이 게임은 RTS 장르에 큰 의미를 가짐

    • 자원을 수확하는 농민이 있는 전형적인 RTS 게임의 시초 중 하나였음
    • 원작 소설 덕분에 이런 형태가 되었으며, 그렇지 않았다면 RTS 장르가 다른 길을 갔을 가능성도 있음
  • Westwood Online (WOL)이 더 이상 작동하지 않음

    • 멀티플레이는 LAN을 통해서만 가능함
    • XWIS.net이 WOL이 오프라인 된 후 많은 지원을 했음
    • FreeRA 프로젝트도 WOL을 작동시키는 데 도움을 줄 수 있음
    • WOL 라이브러리를 대체하는 것이 비교적 쉬울 수 있음
  • 10년 전 Tiberian Sun의 네트워킹 코드를 패치한 경험 공유

    • 다른 사람의 코드에 뛰어드는 것은 공유된 연결을 갖는 것과 같음
    • 모뎀 플레이를 위한 별도의 스택이 있었음을 발견하고 놀람
  • 작성자가 재미있고 지적인 사람이라는 느낌을 받음

    • 확장 가능한 설명이 매우 유용하고 재미있었음
    • CS:GO가 2023년에 은퇴했는지, CS2로 리브랜딩 되었는지 궁금해함
  • CnCNet과의 통합 가능성을 제안함

    • CnCNet에서 함께 놀자는 초대
  • "28.8 BPS 모뎀"이라는 표현에 대한 반응

    • "액티브 매트릭스, 수백만 가지의 환각적인 색상"이라는 표현
  • 블로그 글에서 자주 보이는 "나는 숙련된 리버스 엔지니어가 아니다"라는 문구에 대한 반응

    • 이미 충분한 경험을 쌓았으니 자신감을 가져도 됨
  • 매우 흥미롭고 깊이 있는 기사에 감사함

    • 게임을 지역 중고 상점에서 봤지만 Dune II만 플레이해서 사지 않았음
    • 이제는 꼭 사야겠다고 결심함
  • UI 디자인에 대한 열정을 표현함

    • Steve Yegge 블로그 글을 떠올리게 함