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

โปรเจกต์ฟื้นฟู Emperor: Battle for Dune

Emperor: Battle for Dune คืออะไร?

  • เกมวางแผนเรียลไทม์ที่สร้างโดย Westwood Studios ในปี 2001
  • เป็นภาคต่อของ Dune 2000 โดยมีจุดเด่นคือกราฟิก 3D, UX ที่ปรับปรุงดีขึ้น และซาวด์แทร็กที่ยอดเยี่ยม
  • ปัจจุบันไม่ค่อยเป็นที่รู้จักแล้ว

ปัญหา

  • ไม่รองรับความละเอียดสูงบนระบบสมัยใหม่
  • ความเร็วเกมในโหมดผู้เล่นหลายคนเร็วเกินไปจนเล่นไม่ได้
  • Westwood Online (WOL) ใช้งานไม่ได้ ทำให้เล่นหลายคนได้นอกเหนือจาก LAN ไม่ได้
  • ไม่สามารถเล่นโหมดแคมเปญแบบร่วมมือกันได้
  • โปรแกรมติดตั้งเสียหาย
  • เอฟเฟกต์ภาพเพี้ยนจากอัตราเฟรมที่สูง

วิธีแก้ปัญหา

  • เขียนโปรแกรมมาแทน Emperor.exe เพื่อควบคุม Game.exe
  • inject DLL เพื่อใส่แพตช์

การ inject แพตช์

  • inject โค้ดเข้าไปใน Game.exe โดยใช้เทคนิค CreateRemoteThread และ LoadLibrary
  • ใช้ไลบรารี detours เพื่อแก้ไขฟังก์ชันเดิม

แพตช์กราฟิก

หน้าต่างความละเอียดสูง

  • ใช้แพตช์ LegacyD3DResolutionHack ของ UCyborg เพื่อแก้ปัญหาเรื่องความละเอียด
  • เพิ่ม letterbox เพื่อรักษาอัตราส่วน 4:3

การจำกัดอัตราเฟรม

  • แพตช์เมธอด IDirect3DDevice7::EndScene เพื่อจำกัด FPS ไว้ที่ 60

แพตช์เครือข่าย

  • ใช้โหมด WOL เพื่อกู้คืนความสามารถเล่นหลายคน
  • ดัก winsock และทำ tunnel การสื่อสารทั้งหมดผ่านการเชื่อมต่อไคลเอนต์-เซิร์ฟเวอร์เพียงเส้นเดียว

การเขียนเซิร์ฟเวอร์ IRC

  • สร้าง IRC server พื้นฐานขึ้นมาเพื่อแทนที่ WOL master server

การแพ็กเกจ

การแทนที่โปรแกรมติดตั้ง

  • โปรแกรมติดตั้งต้นฉบับเสียหาย จึงเขียนเครื่องมือติดตั้งใหม่
  • ใช้แพตช์ v1.09

องค์ประกอบอินเทอร์เน็ตที่ใช้ร่วมกันของ Westwood Online

  • ลงทะเบียน WOLAPI.DLL เป็น COM class library เพื่อกู้คืนความสามารถของ WOL

UI ของ launcher

  • สร้าง UI ของ launcher แบบพื้นฐานสำหรับปรับการตั้งค่าง่าย ๆ

บทสรุป

  • บรรลุเป้าหมาย ทำให้ Emperor: Battle for Dune รันได้อย่างราบรื่นบนระบบสมัยใหม่
  • กู้คืนความสามารถเล่นหลายคน รวมถึงโหมดแคมเปญแบบร่วมมือกัน

สรุปโดย GN⁺

  • โปรเจกต์นี้เป็นงานอนุรักษ์วัฒนธรรมที่สำคัญ ซึ่งทำให้สามารถกลับมาเล่นเกมเก่าบนระบบสมัยใหม่ได้อีกครั้ง
  • มีการแก้โจทย์ท้าทายทางเทคนิคที่น่าสนใจหลายอย่าง โดยเฉพาะกระบวนการแก้ปัญหาด้านกราฟิกและเครือข่ายที่น่าประทับใจ
  • โปรเจกต์ที่ให้ความสามารถคล้ายกันมีเช่นโปรเจกต์ DirectX wrapper อย่าง dxwrapper

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

 
GN⁺ 2024-07-15
ความคิดเห็นจาก Hacker News
  • สามารถดาวน์โหลด Emperor: Battle for Dune ได้จาก archive.org

    • ลิงก์
    • แชร์ข้อมูลสำหรับคนที่อยากลองเล่นเกมนี้พร้อมแพตช์ของ wheybags
    • ขุดพบรายชื่อรีลีสเถื่อนในอดีตด้วย
    • แปลกใจที่พบว่ามีเพลงประกอบ OST ด้วย
  • เกมนี้มีความสำคัญมากต่อแนว RTS

    • เป็นหนึ่งในเกมบุกเบิกของ RTS แบบดั้งเดิมที่มีชาวนาเก็บทรัพยากร
    • รูปแบบนี้เกิดขึ้นได้เพราะนิยายต้นฉบับ และถ้าไม่เป็นเช่นนั้น แนว RTS อาจพัฒนาไปอีกทางก็ได้
  • Westwood Online (WOL) ใช้งานไม่ได้แล้ว

    • เล่นหลายคนได้ผ่าน LAN เท่านั้น
    • XWIS.net เคยช่วยรองรับไว้มากหลังจากที่ WOL ปิดตัวลง
    • โปรเจกต์ FreeRA ก็อาจช่วยให้ WOL กลับมาทำงานได้
    • การแทนที่ไลบรารีของ WOL อาจทำได้ค่อนข้างง่าย
  • แชร์ประสบการณ์การแพตช์โค้ดเครือข่ายของ Tiberian Sun เมื่อ 10 ปีก่อน

    • การกระโดดเข้าไปอ่านโค้ดของคนอื่นก็เหมือนการมีการเชื่อมต่อร่วมกันบางอย่าง
    • แปลกใจที่พบว่ามีสแตกแยกต่างหากสำหรับการเล่นผ่านโมเด็ม
  • รู้สึกว่าผู้เขียนเป็นคนสนุกและมีความคิดลึกซึ้ง

    • คำอธิบายที่ต่อยอดได้มีประโยชน์และอ่านสนุกมาก
    • สงสัยว่า CS:GO ถูกยุติในปี 2023 หรือแค่รีแบรนด์เป็น CS2
  • เสนอความเป็นไปได้ในการรวมเข้ากับ CnCNet

    • ชวนมาเล่นด้วยกันบน CnCNet
  • ปฏิกิริยาต่อวลี "โมเด็ม 28.8 BPS"

    • "แอ็กทีฟแมทริกซ์ สีสันหลอนประสาทนับล้านสี"
  • ปฏิกิริยาต่อวลี "ฉันไม่ใช่วิศวกรย้อนรอยที่เชี่ยวชาญ" ที่มักเห็นในโพสต์บล็อก

    • คุณมีประสบการณ์มากพอแล้ว ควรมั่นใจในตัวเองได้
  • ขอบคุณสำหรับบทความที่น่าสนใจและลงลึกมาก

    • เคยเห็นเกมนี้ในร้านของมือสองแถวบ้าน แต่ไม่ได้ซื้อเพราะเคยเล่นแค่ Dune II
    • ตอนนี้ตัดสินใจแล้วว่าต้องซื้อให้ได้
  • แสดงความหลงใหลต่อการออกแบบ UI

    • ทำให้นึกถึงโพสต์บล็อกของ Steve Yegge