SurrealEngine: UT99 をプレイ可能にする Unreal Engine のオープンソース再実装
(github.com/dpjudas)Surreal Engine
このプロジェクトの目標は、UnrealEngine のオリジナルを再実装し、Unreal Tournament (UT99) のマップをプレイできるようにすることです。
現在の状況
- エンジンはマップをロードしてレンダリング可能
- Unrealscript VM はほぼ完成しているが、配列とネットワーク条件実行はまだ未実装
- すべてのレベルアクターをロードし、マップを初期化しようと試みる
- メニューと HUD は表示されるが、多くのネイティブ関数はまだ実装されていない
- 一部のイベントは正しく動作しない可能性があり、相互作用時に例外が発生することがある
現在、SurrealEngine は次の UE1 ゲームを検出できます:
- Unreal Tournament (v436, v451b, v469(a, b, c, d))
- Unreal (v200, v209, v220, v224v, v225f, v226f)
- Unreal Gold (v226b, v227(i, j, k_11))
- Deus Ex (v1002f, v1112fm)
- Klingon Honor Guard (219)
- NERF Arena Blast (v300)
- TNN Outdoors Pro Hunter (v200)
- Rune Classic (v1.10)
- Clive Barker's Undying (v420)
- Tactical-Ops: Assault on Terror (v3.4.0 and v3.5.0 - UT436 および UT469 エンジンで実行)
- Wheel of Time (v333)
上記の一覧のうち、Unreal Tournament v436 と Unreal Gold v226 だけが比較的プレイ可能な状態です。ほかのゲームを実行するとクラッシュする可能性があります。
Unreal Tournament v436
- ゲームは起動し、メニューオプションが動作し、ボットマッチをプレイ可能
- ボットの AI はほとんどなく、一部マップの機能が欠けている(例: DM-Morpheus の "X が試合をリード中" 画面は動作しない)
Unreal Gold v226
- ゲームは起動し、メニューオプションの大半が動作
- シングルプレイヤーマップとボットマッチをプレイ可能
- AI は UT と似たように動作
- Return to Na Pali のオブジェクトモデルが壊れて見える
Deus Ex v1112fm
- イントロのフライバイのみ動作
- キーボードやマウス入力が検出されない(Deus Ex は Unreal/UT とは異なる方法で入力を処理する)
コマンドライン引数
SurrealEngine [--url=<mapname>] [--engineversion=X] [ゲームフォルダのパス]
- SurrealEngine 実行ファイルは UE1 ゲームの System フォルダにコピーして実行可能
- ゲームフォルダが指定されない場合、エンジンはレジストリ(Windows 専用)から Epic が設定したレジストリキーを検索する
- URL が指定されない場合、ini ファイルのデフォルト URL を使用する(デフォルトはイントロマップ)
--engineversion引数はエンジンが検出した内部バージョンを上書きし、デバッグ目的でのみ使うべき
Windows ビルド手順
- CMake を使用してプロジェクトをビルド
- 最新版の Visual Studio と C++17 をサポートする MSVC コンパイラが必要
- SDL2 はオプションの依存関係で、ローカルで用意する必要がある(Visual C++ 版の SDL2 をダウンロードし、CMake 設定でそのフォルダを指定)
- そのほかの外部サードパーティ依存関係はなし
Linux ビルド手順
- CMake を使用してプロジェクトをビルド
- 次のコマンドを順番に入力してビルド:
git clone https://github.com/dpjudas/SurrealEngine.git
cd SurrealEngine
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 16
-
コンパイルが正常に完了すると、
buildフォルダにSurrealEngine、SurrealEditor、SurrealDebugger実行ファイルが生成される -
次の開発パッケージが必要:
- cmake
- g++
- pthreads
- dl
- alsa (libasound2)
- SDL2
- waylandpp(任意、Wayland の C++ バインディングで、ZWidget Wayland バックエンドで使用)
-
Linux では SDL2 が必須で、SurrealEngine はこれをウィンドウ機能とネイティブ Wayland サポートに利用する(
SDL_VIDEODRIVER=wayland)
GN⁺のまとめ
- Surreal Engine は UnrealEngine のオリジナルを再実装し、Unreal Tournament (UT99) のマップをプレイ可能にするプロジェクト
- 現在は Unreal Tournament v436 と Unreal Gold v226 のみが比較的プレイ可能で、ほかのゲームはクラッシュする可能性がある
- Windows と Linux で CMake を使ってビルドでき、SDL2 などいくつかの依存関係が必要
- このプロジェクトは古いゲームを現代のシステムで再びプレイできるようにし、ゲーム開発者やエンジニアにとって興味深い可能性がある
- 類似機能を持つプロジェクトとして、OpenRA のようなオープンソースゲームエンジンがある
1件のコメント
Hacker Newsの意見
Quake IIIをWebに移植し、マルチプレイとモバイル対応を追加した
このプロジェクトは、UE1ゲームをUE5でホスティングするプロジェクトに似ていると思った
このプロジェクトはとても嬉しく、多くの思い出をよみがえらせてくれる
Unreal Tournament 99とDeus Exは、ゲームに関する最も幸せな記憶のひとつだ
Epicはid Softwareのように、元のエンジンをオープンソース化できるはず
別の開発者が、UE1ゲームをUE5上でVRやMOD、現代的な機能付きでプレイできるようにするSurreal 98を開発中
Civvie 11の"Epic Unreal Megaspecial"をおすすめする
Unreal Tournament 2004をDocker化しており、Linux x86_64でうまく動作する
Quake/Unrealをゼロから書き直すのに、どれほどの開発時間がかかるのか気になる
UT99がとても恋しいし、現代のFPSゲームはそれほど好きではない