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ラッパープロジェクトがある
1件のコメント
Hacker Newsの意見
Emperor: Battle for Dune は archive.org からダウンロード可能
このゲームは RTS ジャンルにおいて大きな意味を持つ
Westwood Online (WOL) はもう動作しない
10年前に Tiberian Sun のネットワーキングコードをパッチした経験の共有
筆者が面白く知的な人だという印象を受ける
CnCNet との統合可能性を提案
「28.8 BPS モデム」という表現への反応
ブログ記事でよく見かける「私は熟練したリバースエンジニアではない」という文句への反応
とても興味深く掘り下げられた記事に感謝
UI デザインへの情熱を表明