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

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 フォルダに SurrealEngineSurrealEditorSurrealDebugger 実行ファイルが生成される

  • 次の開発パッケージが必要:

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

 
GN⁺ 2024-08-24
Hacker Newsの意見
  • Quake IIIをWebに移植し、マルチプレイとモバイル対応を追加した

    • Unreal Tournamentも移植したかったが、まだプレイするのは難しい状態
    • Epicがid Softwareのように古いリリースをGPLで公開してくれたらよいのにと思う
    • UTの代わりに、次のプロジェクトとしてSerious Samを検討中
    • Serious Engineはオープンソースで、すでにWebポートも存在する(マルチプレイはなし)
  • このプロジェクトは、UE1ゲームをUE5でホスティングするプロジェクトに似ていると思った

    • 実際には同じプロジェクトで、DXU24でSurrealへとリブランディングした
    • オープンソースのフロントエンドも追加された
    • 開発者はYouTubeに複数のWIP動画を投稿している
  • このプロジェクトはとても嬉しく、多くの思い出をよみがえらせてくれる

    • ビデオゲームのアーカイブ作業に感謝する
  • Unreal Tournament 99とDeus Exは、ゲームに関する最も幸せな記憶のひとつだ

    • このプロジェクトは非常に野心的で、昔のゲームが愛されているのを見るのはうれしい
    • 今でもDeus Exのリメイクを望んでいる
  • Epicはid Softwareのように、元のエンジンをオープンソース化できるはず

  • 別の開発者が、UE1ゲームをUE5上でVRやMOD、現代的な機能付きでプレイできるようにするSurreal 98を開発中

  • Civvie 11の"Epic Unreal Megaspecial"をおすすめする

  • Unreal Tournament 2004をDocker化しており、Linux x86_64でうまく動作する

    mkdir -p ~/.ut2004/; sudo docker run -it --rm -e DISPLAY=$DISPLAY -e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR -e HOME=/ --network=host -v /tmp/.X11-unix/X0:/tmp/.X11-unix/X0 -v /run/user/$UID:/run/user/$UID -v ~/.ut2004/:/.ut2004/ --user $UID:$UID --privileged --name ut2004 ikuinen.earth:5000/ut2004
    
  • Quake/Unrealをゼロから書き直すのに、どれほどの開発時間がかかるのか気になる

    • 移植ではなく、カスタムエンジンによる完全な再実装
  • UT99がとても恋しいし、現代のFPSゲームはそれほど好きではない