1 điểm bởi GN⁺ 2024-08-24 | 1 bình luận | Chia sẻ qua WhatsApp

Surreal Engine

Mục tiêu của dự án này là tái hiện bản gốc của UnrealEngine để có thể chơi các bản đồ của Unreal Tournament (UT99).

Trạng thái hiện tại

  • Engine có thể tải và kết xuất bản đồ
  • Máy ảo Unrealscript gần như đã hoàn thiện, nhưng mảng và thực thi điều kiện mạng vẫn chưa được triển khai
  • Cố gắng tải mọi actor trong level và khởi tạo bản đồ
  • Menu và HUD có hiển thị, nhưng nhiều hàm native vẫn chưa được triển khai
  • Một số sự kiện có thể không hoạt động đúng, và có thể phát sinh ngoại lệ khi tương tác

Hiện tại SurrealEngine có thể nhận diện các game UE1 sau:

  • 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 và v3.5.0 - chạy trên engine UT436 và UT469)
  • Wheel of Time (v333)

Trong danh sách trên, chỉ Unreal Tournament v436 và Unreal Gold v226 là ở trạng thái tương đối có thể chơi được. Chạy các game khác có thể gây crash.

Unreal Tournament v436

  • Game khởi chạy được, các tùy chọn menu hoạt động và có thể chơi bot match
  • AI của bot gần như không có, và một số tính năng của bản đồ bị thiếu (ví dụ: màn hình "X đang dẫn trước trận đấu" trong DM-Morpheus không hoạt động)

Unreal Gold v226

  • Game khởi chạy được và phần lớn tùy chọn menu hoạt động
  • Có thể chơi các bản đồ chơi đơn và bot match
  • AI hoạt động tương tự như UT
  • Mô hình đối tượng trong Return to Na Pali hiển thị bị lỗi

Deus Ex v1112fm

  • Chỉ intro flyby hoạt động
  • Không nhận đầu vào từ bàn phím hay chuột (Deus Ex xử lý đầu vào khác với Unreal/UT)

Tham số dòng lệnh

SurrealEngine [--url=<mapname>] [--engineversion=X] [đường dẫn thư mục game]

  • Có thể chạy bằng cách sao chép file thực thi SurrealEngine vào thư mục System của game UE1
  • Nếu không chỉ định thư mục game, engine sẽ tìm các khóa registry do Epic thiết lập trong registry (chỉ trên Windows)
  • Nếu không chỉ định URL, sẽ dùng URL mặc định trong file ini (mặc định là bản đồ intro)
  • Đối số --engineversion sẽ ghi đè phiên bản nội bộ mà engine phát hiện, và chỉ nên dùng cho mục đích debug

Hướng dẫn build trên Windows

  • Build dự án bằng CMake
  • Cần phiên bản mới nhất của Visual Studio và trình biên dịch MSVC hỗ trợ C++17
  • SDL2 là phụ thuộc tùy chọn, phải tự cung cấp cục bộ (tải bản SDL2 cho Visual C++ và chỉ định thư mục đó trong cấu hình CMake)
  • Không có phụ thuộc bên thứ ba bên ngoài nào khác

Hướng dẫn build trên Linux

  • Build dự án bằng CMake
  • Nhập các lệnh sau theo thứ tự để build:
git clone https://github.com/dpjudas/SurrealEngine.git
cd SurrealEngine
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 16
  • Nếu biên dịch thành công, các file thực thi SurrealEngine, SurrealEditor, SurrealDebugger sẽ được tạo trong thư mục build

  • Cần các gói phát triển sau:

    • cmake
    • g++
    • pthreads
    • dl
    • alsa (libasound2)
    • SDL2
    • waylandpp (tùy chọn, binding C++ cho Wayland, được dùng trong backend Wayland của ZWidget)
  • Trên Linux, SDL2 là bắt buộc, và SurrealEngine dùng nó cho các tính năng cửa sổ cùng hỗ trợ Wayland native (SDL_VIDEODRIVER=wayland)

Tóm tắt của GN⁺

  • Surreal Engine là dự án tái hiện bản gốc của UnrealEngine để có thể chơi các bản đồ Unreal Tournament (UT99)
  • Hiện chỉ Unreal Tournament v436 và Unreal Gold v226 là tương đối có thể chơi được, còn các game khác có thể bị crash
  • Có thể build trên Windows và Linux bằng CMake, với một số phụ thuộc như SDL2
  • Dự án này giúp có thể chơi lại các game cũ trên hệ thống hiện đại, và có thể hấp dẫn với nhà phát triển game và kỹ sư
  • Một dự án có chức năng tương tự là các game engine mã nguồn mở như OpenRA

1 bình luận

 
GN⁺ 2024-08-24
Ý kiến trên Hacker News
  • Đã port Quake III lên web và bổ sung hỗ trợ multiplayer cùng thiết bị di động

    • Cũng muốn port Unreal Tournament nhưng hiện vẫn ở trạng thái khó chơi
    • Mong Epic sẽ công bố các bản phát hành cũ theo GPL như id Software đã làm
    • Đang cân nhắc Serious Sam thay cho UT làm dự án tiếp theo
    • Serious Engine là mã nguồn mở và đã có bản port lên web (không có multiplayer)
  • Đã nghĩ dự án này giống với dự án chạy game UE1 trên UE5

    • Thực tế là cùng một dự án, đã đổi thương hiệu thành Surreal tại DXU24
    • Cũng đã thêm frontend mã nguồn mở
    • Nhà phát triển đã đăng nhiều video WIP lên YouTube
  • Dự án này khiến tôi rất vui và gợi lại nhiều kỷ niệm

    • Cảm ơn vì công việc lưu trữ trò chơi điện tử
  • Unreal Tournament 99 và Deus Ex là một trong những ký ức chơi game hạnh phúc nhất

    • Dự án này rất tham vọng và thật tuyệt khi thấy các game cũ vẫn được yêu mến
    • Tôi vẫn hy vọng có bản remake Deus Ex
  • Epic có thể mã nguồn mở engine gốc như id Software đã làm

  • Một nhà phát triển khác đang làm Surreal 98 để có thể chơi các game UE1 trên UE5 với VR, mod và các tính năng hiện đại

  • Khuyên xem "Epic Unreal Megaspecial" của Civvie 11

  • Đã docker hóa Unreal Tournament 2004 và nó chạy tốt trên 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
    
  • Tò mò không biết sẽ tốn bao nhiêu thời gian phát triển để viết lại Quake/Unreal từ đầu

    • Đây là một bản viết lại hoàn chỉnh bằng engine tùy chỉnh chứ không phải bản port
  • Rất nhớ UT99 và không thích game FPS hiện đại nhiều đến vậy