1 poin oleh GN⁺ 2024-08-24 | 1 komentar | Bagikan ke WhatsApp

Surreal Engine

Tujuan proyek ini adalah mereimplementasikan sumber asli UnrealEngine agar dapat memainkan map Unreal Tournament (UT99).

Status saat ini

  • Engine dapat memuat dan merender map
  • Unrealscript VM hampir selesai, tetapi array dan eksekusi kondisional jaringan masih belum diimplementasikan
  • Mencoba memuat semua level actor dan menginisialisasi map
  • Menu dan HUD muncul, tetapi banyak fungsi native masih belum diimplementasikan
  • Beberapa event mungkin tidak berfungsi dengan benar, dan exception dapat terjadi saat berinteraksi

Saat ini SurrealEngine dapat mendeteksi game UE1 berikut:

  • 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 dan v3.5.0 - berjalan di engine UT436 dan UT469)
  • Wheel of Time (v333)

Dari daftar di atas, hanya Unreal Tournament v436 dan Unreal Gold v226 yang relatif dapat dimainkan. Menjalankan game lain dapat menyebabkan crash.

Unreal Tournament v436

  • Game dapat dijalankan, opsi menu berfungsi, dan bot match bisa dimainkan
  • AI bot hampir tidak ada, dan beberapa fitur map hilang (misalnya layar "X memimpin pertandingan" di DM-Morpheus tidak berfungsi)

Unreal Gold v226

  • Game berjalan dan sebagian besar opsi menu berfungsi
  • Dapat memainkan map single-player dan bot match
  • AI berperilaku mirip seperti di UT
  • Model objek di Return to Na Pali terlihat rusak

Deus Ex v1112fm

  • Hanya intro flyby yang berfungsi
  • Input keyboard atau mouse tidak terdeteksi (Deus Ex menangani input secara berbeda dari Unreal/UT)

Parameter command line

SurrealEngine [--url=<mapname>] [--engineversion=X] [path folder game]

  • Dapat dijalankan dengan menyalin file executable SurrealEngine ke folder System game UE1
  • Jika folder game tidak ditentukan, engine akan mencari registry key yang diatur Epic di registry (khusus Windows)
  • Jika URL tidak ditentukan, URL default dari file ini akan digunakan (default-nya adalah map intro)
  • Argumen --engineversion menimpa versi internal yang dideteksi engine, dan sebaiknya hanya digunakan untuk tujuan debugging

Panduan build Windows

  • Build proyek menggunakan CMake
  • Memerlukan Visual Studio versi terbaru dan compiler MSVC yang mendukung C++17
  • SDL2 adalah dependensi opsional dan harus disediakan secara lokal (unduh SDL2 versi Visual C++ lalu tentukan folder tersebut di pengaturan CMake)
  • Tidak ada dependensi third-party eksternal lainnya

Panduan build Linux

  • Build proyek menggunakan CMake
  • Masukkan perintah berikut secara berurutan untuk build:
git clone https://github.com/dpjudas/SurrealEngine.git
cd SurrealEngine
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 16
  • Jika kompilasi berhasil selesai, file executable SurrealEngine, SurrealEditor, SurrealDebugger akan dibuat di folder build

  • Paket pengembangan berikut diperlukan:

    • cmake
    • g++
    • pthreads
    • dl
    • alsa (libasound2)
    • SDL2
    • waylandpp (opsional, binding C++ untuk Wayland, digunakan di backend ZWidget Wayland)
  • Di Linux, SDL2 wajib ada, dan SurrealEngine memanfaatkannya untuk fitur window dan dukungan Wayland native (SDL_VIDEODRIVER=wayland)

Ringkasan GN⁺

  • Surreal Engine adalah proyek yang mereimplementasikan sumber asli UnrealEngine agar dapat memainkan map Unreal Tournament (UT99)
  • Saat ini hanya Unreal Tournament v436 dan Unreal Gold v226 yang relatif dapat dimainkan, sementara game lain dapat mengalami crash
  • Dapat di-build di Windows dan Linux menggunakan CMake, serta memerlukan beberapa dependensi seperti SDL2
  • Proyek ini memungkinkan game lama dimainkan kembali di sistem modern dan bisa menarik bagi pengembang game serta engineer
  • Proyek dengan fungsi serupa antara lain engine game open-source seperti OpenRA

1 komentar

 
GN⁺ 2024-08-24
Opini Hacker News
  • Telah mem-porting Quake III ke web dan menambahkan dukungan multipemain serta mobile

    • Ingin juga mem-porting Unreal Tournament, tetapi saat ini masih dalam kondisi sulit dimainkan
    • Akan bagus jika Epic merilis rilis lama di bawah GPL seperti id Software
    • Sedang mempertimbangkan Serious Sam sebagai proyek berikutnya alih-alih UT
    • Serious Engine bersifat open source dan port web-nya sudah ada (belum ada multipemain)
  • Awalnya mengira proyek ini mirip dengan proyek yang meng-host game UE1 di UE5

    • Memang proyek yang sama, dan di DXU24 di-rebranding menjadi Surreal
    • Frontend open source juga telah ditambahkan
    • Pengembang telah mengunggah beberapa video WIP ke YouTube
  • Proyek ini sangat menyenangkan dan membangkitkan banyak kenangan

    • Terima kasih atas upaya pengarsipan video game
  • Unreal Tournament 99 dan Deus Ex adalah beberapa kenangan bermain game paling membahagiakan

    • Proyek ini sangat ambisius dan menyenangkan melihat game lama tetap dicintai
    • Masih berharap ada remake Deus Ex
  • Epic bisa saja membuat engine aslinya menjadi open source seperti id Software

  • Pengembang lain sedang mengerjakan Surreal 98, yang memungkinkan game UE1 dimainkan di UE5 dengan VR, mod, dan fitur modern

  • Merekomendasikan "Epic Unreal Megaspecial" dari Civvie 11

  • Telah mendockerisasi Unreal Tournament 2004, dan berjalan baik di 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
    
  • Penasaran berapa banyak waktu pengembangan yang dibutuhkan untuk menulis ulang Quake/Unreal dari nol

    • Ini adalah penulisan ulang penuh dengan engine kustom, bukan sekadar port
  • Sangat merindukan UT99 dan tidak terlalu menyukai game FPS modern sebesar itu