SurrealEngine: Tái hiện mã nguồn mở của Unreal Engine có thể chơi UT99
(github.com/dpjudas)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ố
--engineversionsẽ 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,SurrealDebuggersẽ được tạo trong thư mụcbuild -
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
Ý 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
Đã nghĩ dự án này giống với dự án chạy game UE1 trên UE5
Dự án này khiến tôi rất vui và gợi lại nhiều kỷ niệm
Unreal Tournament 99 và Deus Ex là một trong những ký ức chơi game hạnh phúc nhất
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
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
Rất nhớ UT99 và không thích game FPS hiện đại nhiều đến vậy