1P by neo 27일전 | favorite | 댓글 1개

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 폴더에 SurrealEngine, SurrealEditor, SurrealDebugger 실행 파일이 생성됨

  • 다음 개발 패키지가 필요:

    • 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와 같은 오픈 소스 게임 엔진이 있음
Hacker News 의견
  • Quake III를 웹으로 포팅하고 멀티플레이어와 모바일 지원을 추가했음

    • Unreal Tournament도 포팅하고 싶었지만 아직 플레이하기 어려운 상태임
    • Epic이 id Software처럼 옛날 릴리스를 GPL로 공개했으면 좋겠음
    • UT 대신 Serious Sam을 다음 프로젝트로 고려 중임
    • Serious Engine은 오픈 소스이며 이미 웹 포트가 존재함 (멀티플레이어는 없음)
  • 이 프로젝트가 UE1 게임을 UE5에서 호스팅하는 프로젝트와 비슷하다고 생각했음

    • 실제로 같은 프로젝트이며, DXU24에서 Surreal로 리브랜딩했음
    • 오픈 소스 프론트엔드도 추가됨
    • 개발자는 YouTube에 여러 WIP 비디오를 올렸음
  • 이 프로젝트가 매우 기쁘고 많은 추억을 떠올리게 함

    • 비디오 게임 아카이브 작업에 감사함
  • Unreal Tournament 99와 Deus Ex는 가장 행복한 게임 기억 중 하나임

    • 이 프로젝트가 매우 야심차고 옛날 게임들이 사랑받는 것을 보는 것이 좋음
    • Deus Ex 리메이크를 여전히 희망함
  • Epic이 id Software처럼 원래 엔진을 오픈 소스화할 수 있음

  • 다른 개발자가 UE1 게임을 UE5에서 VR과 모드 및 현대적 기능으로 플레이할 수 있게 하는 Surreal 98을 개발 중임

  • Civvie 11의 "Epic Unreal Megaspecial"을 추천함

  • Unreal Tournament 2004를 도커화했으며, 리눅스 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 게임을 그만큼 좋아하지 않음