1 คะแนน โดย GN⁺ 2024-08-24 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

Surreal Engine

เป้าหมายของโปรเจ็กต์นี้คือการนำต้นฉบับของ UnrealEngine กลับมาสร้างใหม่ เพื่อให้สามารถเล่นแผนที่ของ Unreal Tournament (UT99) ได้

สถานะปัจจุบัน

  • เอนจินสามารถโหลดและเรนเดอร์แผนที่ได้
  • Unrealscript VM เกือบเสร็จสมบูรณ์แล้ว แต่การทำงานของอาร์เรย์และการรันแบบมีเงื่อนไขบนเครือข่ายยังไม่ได้ถูกนำมาใช้
  • พยายามโหลดเลเวลแอ็กเตอร์ทั้งหมดและเริ่มต้นแผนที่
  • เมนูและ HUD แสดงผลได้ แต่ฟังก์ชันเนทีฟจำนวนมากยังไม่ได้ถูกนำมาใช้
  • อีเวนต์บางอย่างอาจทำงานไม่ถูกต้อง และอาจเกิด exception ระหว่างการโต้ตอบ

ขณะนี้ 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 ของบอทแทบไม่มี และฟีเจอร์ของบางแผนที่ยังขาดหายไป (เช่น หน้าจอ "X is leading the match" ใน DM-Morpheus ไม่ทำงาน)

Unreal Gold v226

  • เกมรันได้ และตัวเลือกในเมนูส่วนใหญ่ทำงาน
  • สามารถเล่นแผนที่แบบซิงเกิลเพลเยอร์และแมตช์กับบอทได้
  • AI ทำงานคล้ายกับใน UT
  • โมเดลวัตถุใน Return to Na Pali แสดงผลผิดเพี้ยน

Deus Ex v1112fm

  • ใช้งานได้เฉพาะอินโทร flyby
  • ไม่ตรวจจับอินพุตจากคีย์บอร์ดหรือเมาส์ (Deus Ex จัดการอินพุตต่างจาก Unreal/UT)

พารามิเตอร์บรรทัดคำสั่ง

SurrealEngine [--url=<mapname>] [--engineversion=X] [เส้นทางโฟลเดอร์เกม]

  • สามารถคัดลอกไฟล์รันของ SurrealEngine ไปไว้ในโฟลเดอร์ System ของเกม UE1 แล้วรันได้
  • หากไม่ได้ระบุโฟลเดอร์เกม เอนจินจะค้นหาคีย์รีจิสทรีที่ Epic ตั้งไว้จากรีจิสทรี (เฉพาะ Windows)
  • หากไม่ได้ระบุ URL จะใช้ URL เริ่มต้นจากไฟล์ ini (ค่าเริ่มต้นคือแผนที่อินโทร)
  • อาร์กิวเมนต์ --engineversion จะเขียนทับเวอร์ชันภายในที่เอนจินตรวจจับได้ และควรใช้เพื่อการดีบักเท่านั้น

คำแนะนำการบิลด์บน Windows

  • บิลด์โปรเจ็กต์ด้วย CMake
  • ต้องใช้ Visual Studio เวอร์ชันล่าสุดและคอมไพเลอร์ MSVC ที่รองรับ C++17
  • SDL2 เป็น dependency แบบเลือกใช้ ซึ่งต้องเตรียมไว้ในเครื่องเอง (ดาวน์โหลด SDL2 เวอร์ชัน Visual C++ แล้วระบุโฟลเดอร์นั้นในการตั้งค่า CMake)
  • ไม่มี dependency ภายนอก third-party อื่นนอกจากนั้น

คำแนะนำการบิลด์บน Linux

  • บิลด์โปรเจ็กต์ด้วย CMake
  • พิมพ์คำสั่งต่อไปนี้ตามลำดับเพื่อบิลด์:
git clone https://github.com/dpjudas/SurrealEngine.git
cd SurrealEngine
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 16
  • หากคอมไพล์สำเร็จ จะได้ไฟล์รัน SurrealEngine, SurrealEditor, SurrealDebugger ในโฟลเดอร์ build

  • ต้องใช้แพ็กเกจสำหรับพัฒนาต่อไปนี้:

    • cmake
    • g++
    • pthreads
    • dl
    • alsa (libasound2)
    • SDL2
    • waylandpp (ทางเลือก, C++ binding ของ Wayland, ใช้ใน ZWidget Wayland backend)
  • บน Linux นั้น SDL2 เป็นสิ่งจำเป็น และ SurrealEngine ใช้มันสำหรับฟังก์ชันหน้าต่างและการรองรับ Wayland แบบเนทีฟ (SDL_VIDEODRIVER=wayland)

สรุปโดย GN⁺

  • Surreal Engine เป็นโปรเจ็กต์ที่นำ UnrealEngine กลับมาสร้างใหม่ เพื่อให้สามารถเล่นแผนที่ของ Unreal Tournament (UT99) ได้
  • ปัจจุบันมีเพียง Unreal Tournament v436 และ Unreal Gold v226 ที่อยู่ในสถานะเล่นได้ค่อนข้างดี ส่วนเกมอื่นอาจแครชได้
  • สามารถบิลด์ได้ทั้งบน Windows และ Linux ด้วย CMake และต้องใช้ dependency บางตัว เช่น SDL2
  • โปรเจ็กต์นี้ช่วยให้เกมเก่ากลับมาเล่นได้อีกครั้งบนระบบสมัยใหม่ และอาจน่าสนใจสำหรับนักพัฒนาเกมและวิศวกร
  • โปรเจ็กต์ที่มีแนวคิดคล้ายกัน ได้แก่เอนจินเกมโอเพนซอร์สอย่าง OpenRA

1 ความคิดเห็น

 
GN⁺ 2024-08-24
ความคิดเห็นจาก Hacker News
  • มีการพอร์ต Quake III ไปยังเว็บและเพิ่มการรองรับผู้เล่นหลายคนกับมือถือ

    • อยากพอร์ต Unreal Tournament ด้วย แต่ตอนนี้ยังอยู่ในสภาพที่เล่นได้ยาก
    • อยากให้ Epic เผยแพร่รีลีสเก่าแบบ GPL เหมือนที่ id Software ทำ
    • กำลังพิจารณา Serious Sam เป็นโปรเจ็กต์ถัดไปแทน UT
    • Serious Engine เป็นโอเพนซอร์สและมีเว็บพอร์ตอยู่แล้ว (แต่ไม่มีผู้เล่นหลายคน)
  • ตอนแรกคิดว่าโปรเจ็กต์นี้คล้ายกับโปรเจ็กต์ที่โฮสต์เกม UE1 บน UE5

    • ที่จริงแล้วเป็นโปรเจ็กต์เดียวกัน และได้รีแบรนด์เป็น Surreal ที่ DXU24
    • มีการเพิ่มฟรอนต์เอนด์แบบโอเพนซอร์สด้วย
    • ผู้พัฒนาได้อัปโหลดวิดีโอ WIP หลายรายการไว้บน YouTube
  • ดีใจกับโปรเจ็กต์นี้มากและทำให้นึกถึงความทรงจำมากมาย

    • ขอบคุณสำหรับงานด้านการเก็บถาวรวิดีโอเกม
  • Unreal Tournament 99 และ Deus Ex เป็นหนึ่งในความทรงจำเกี่ยวกับเกมที่มีความสุขที่สุด

    • โปรเจ็กต์นี้ทะเยอทะยานมาก และดีที่ได้เห็นเกมเก่า ๆ ยังได้รับความรัก
    • ยังคงหวังว่าจะมี Deus Ex ฉบับรีเมก
  • Epic สามารถโอเพนซอร์สเอนจินต้นฉบับได้เหมือนที่ id Software ทำ

  • มีนักพัฒนาอีกคนกำลังสร้าง Surreal 98 เพื่อให้เล่นเกม UE1 บน UE5 ได้พร้อม VR, ม็อด และฟีเจอร์สมัยใหม่

  • ขอแนะนำ "Epic Unreal Megaspecial" ของ Civvie 11

  • มีการทำ Unreal Tournament 2004 ให้รันใน Docker และมันทำงานได้ดีบน 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
    
  • สงสัยว่าถ้าจะเขียน Quake/Unreal ใหม่ทั้งหมดตั้งแต่ต้นจะต้องใช้เวลาในการพัฒนามากแค่ไหน

    • เป็นการเขียนใหม่ทั้งหมดด้วยเอนจินที่สร้างขึ้นเฉพาะ ไม่ใช่การพอร์ต
  • คิดถึง UT99 มาก และไม่ค่อยชอบเกม FPS สมัยใหม่เท่าไร