โปรเจกต์ฟื้นฟู 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 ความคิดเห็น
ความคิดเห็นจาก Hacker News
สามารถดาวน์โหลด Emperor: Battle for Dune ได้จาก archive.org
เกมนี้มีความสำคัญมากต่อแนว RTS
Westwood Online (WOL) ใช้งานไม่ได้แล้ว
แชร์ประสบการณ์การแพตช์โค้ดเครือข่ายของ Tiberian Sun เมื่อ 10 ปีก่อน
รู้สึกว่าผู้เขียนเป็นคนสนุกและมีความคิดลึกซึ้ง
เสนอความเป็นไปได้ในการรวมเข้ากับ CnCNet
ปฏิกิริยาต่อวลี "โมเด็ม 28.8 BPS"
ปฏิกิริยาต่อวลี "ฉันไม่ใช่วิศวกรย้อนรอยที่เชี่ยวชาญ" ที่มักเห็นในโพสต์บล็อก
ขอบคุณสำหรับบทความที่น่าสนใจและลงลึกมาก
แสดงความหลงใหลต่อการออกแบบ UI