1 Punkte von GN⁺ 2024-08-24 | 1 Kommentare | Auf WhatsApp teilen

Surreal Engine

Ziel dieses Projekts ist es, den Originalcode der Unreal Engine neu zu implementieren, damit sich Maps von Unreal Tournament (UT99) spielen lassen.

Aktueller Status

  • Die Engine kann Maps laden und rendern
  • Die Unrealscript-VM ist fast fertig, aber Arrays und netzwerkbedingte Ausführung sind noch nicht implementiert
  • Es wird versucht, alle Level-Actors zu laden und die Map zu initialisieren
  • Menüs und HUD werden angezeigt, aber viele native Funktionen sind noch nicht implementiert
  • Einige Ereignisse funktionieren möglicherweise nicht korrekt, und bei Interaktionen können Ausnahmen auftreten

Derzeit kann SurrealEngine die folgenden UE1-Spiele erkennen:

  • 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 und v3.5.0 – läuft auf UT436- und UT469-Engines)
  • Wheel of Time (v333)

Von der obigen Liste sind nur Unreal Tournament v436 und Unreal Gold v226 in einem relativ spielbaren Zustand. Beim Start anderer Spiele kann es zu Abstürzen kommen.

Unreal Tournament v436

  • Das Spiel startet, Menüoptionen funktionieren, und Bot-Matches sind spielbar
  • Die KI der Bots ist kaum vorhanden, und in einigen Maps fehlen Funktionen (z. B. funktioniert in DM-Morpheus der Bildschirm „X führt das Match“ nicht)

Unreal Gold v226

  • Das Spiel startet, und die meisten Menüoptionen funktionieren
  • Singleplayer-Maps und Bot-Matches sind spielbar
  • Die KI verhält sich ähnlich wie in UT
  • Objektmodelle in Return to Na Pali werden fehlerhaft dargestellt

Deus Ex v1112fm

  • Nur der Intro-Flyby funktioniert
  • Tastatur- oder Mauseingaben werden nicht erkannt (Deus Ex verarbeitet Eingaben anders als Unreal/UT)

Kommandozeilenparameter

SurrealEngine [--url=<mapname>] [--engineversion=X] [Pfad zum Spielordner]

  • Die SurrealEngine-Programmdatei kann in den System-Ordner eines UE1-Spiels kopiert und dort ausgeführt werden
  • Wenn kein Spielordner angegeben ist, sucht die Engine in der Registry (nur Windows) nach den von Epic gesetzten Registry-Schlüsseln
  • Wenn keine URL angegeben ist, wird die Standard-URL aus der ini-Datei verwendet (standardmäßig die Intro-Map)
  • Das Argument --engineversion überschreibt die von der Engine erkannte interne Version und sollte nur zu Debugging-Zwecken verwendet werden

Build-Anleitung für Windows

  • Das Projekt wird mit CMake gebaut
  • Erforderlich sind die neueste Version von Visual Studio und ein MSVC-Compiler mit Unterstützung für C++17
  • SDL2 ist eine optionale Abhängigkeit und muss lokal bereitgestellt werden (die Visual-C++-Version von SDL2 herunterladen und in der CMake-Konfiguration auf diesen Ordner verweisen)
  • Darüber hinaus gibt es keine externen Third-Party-Abhängigkeiten

Build-Anleitung für Linux

  • Das Projekt wird mit CMake gebaut
  • Zum Build die folgenden Befehle der Reihe nach eingeben:
git clone https://github.com/dpjudas/SurrealEngine.git
cd SurrealEngine
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 16
  • Wenn die Kompilierung erfolgreich abgeschlossen ist, werden im Ordner build die ausführbaren Dateien SurrealEngine, SurrealEditor und SurrealDebugger erzeugt

  • Folgende Entwicklungspakete werden benötigt:

    • cmake
    • g++
    • pthreads
    • dl
    • alsa (libasound2)
    • SDL2
    • waylandpp (optional, die C++-Bindings für Wayland, verwendet im Wayland-Backend von ZWidget)
  • Unter Linux ist SDL2 erforderlich; SurrealEngine nutzt es für Fensterfunktionen und native Wayland-Unterstützung (SDL_VIDEODRIVER=wayland)

Zusammenfassung von GN⁺

  • Surreal Engine ist ein Projekt, das den Originalcode der Unreal Engine neu implementiert, damit sich Maps von Unreal Tournament (UT99) spielen lassen
  • Derzeit sind nur Unreal Tournament v436 und Unreal Gold v226 in einem relativ spielbaren Zustand; bei anderen Spielen kann es zu Abstürzen kommen
  • Der Build ist unter Windows und Linux mit CMake möglich und erfordert einige Abhängigkeiten wie SDL2
  • Das Projekt ermöglicht es, alte Spiele auf modernen Systemen erneut zu spielen, und könnte für Spieleentwickler und Engineers interessant sein
  • Ein Projekt mit ähnlicher Funktionalität ist etwa die Open-Source-Game-Engine OpenRA

1 Kommentare

 
GN⁺ 2024-08-24
Hacker-News-Kommentare
  • Quake III wurde ins Web portiert und um Multiplayer- sowie Mobile-Unterstützung erweitert

    • Unreal Tournament wollte man ebenfalls portieren, aber es ist noch schwer spielbar
    • Es wäre schön, wenn Epic ältere Releases wie id Software unter GPL veröffentlichen würde
    • Als nächstes Projekt wird statt UT Serious Sam in Betracht gezogen
    • Die Serious Engine ist Open Source und es gibt bereits einen Web-Port davon (ohne Multiplayer)
  • Ich dachte, dieses Projekt sei ähnlich zu dem Projekt, das UE1-Spiele in UE5 hostet

    • Tatsächlich ist es dasselbe Projekt und wurde auf der DXU24 zu Surreal umbenannt
    • Ein Open-Source-Frontend wurde ebenfalls hinzugefügt
    • Der Entwickler hat mehrere WIP-Videos auf YouTube hochgeladen
  • Dieses Projekt freut mich sehr und weckt viele Erinnerungen

    • Danke für die Arbeit an der Archivierung von Videospielen
  • Unreal Tournament 99 und Deus Ex gehören zu meinen schönsten Spielerinnerungen

    • Dieses Projekt ist sehr ambitioniert, und es ist schön zu sehen, dass alte Spiele geliebt werden
    • Ich hoffe immer noch auf ein Deus-Ex-Remake
  • Epic könnte wie id Software die ursprüngliche Engine Open Source machen

  • Ein anderer Entwickler arbeitet an Surreal 98, das UE1-Spiele mit VR, Mods und modernen Funktionen in UE5 spielbar machen soll

  • Ich empfehle Civvie 11s "Epic Unreal Megaspecial"

  • Ich habe Unreal Tournament 2004 dockerisiert, und es läuft gut auf 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
    
  • Ich frage mich, wie viel Entwicklungszeit es kosten würde, Quake/Unreal von Grund auf neu zu schreiben

    • Es ist keine Portierung, sondern eine vollständige Neuentwicklung mit einer maßgeschneiderten Engine
  • Ich vermisse UT99 sehr und mag moderne FPS-Spiele nicht annähernd so sehr