1 ポイント 投稿者 GN⁺ 2024-07-15 | 1件のコメント | WhatsAppで共有

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件のコメント

 
GN⁺ 2024-07-15
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 のブログ記事を思い出させる