โครงการถอดรหัสเกม Minecraft Legacy Console Edition เผยประวัติการเขียนโค้ด C++ ใหม่โดย 4J Studios

BigGo Editorial Team
โครงการถอดรหัสเกม Minecraft Legacy Console Edition เผยประวัติการเขียนโค้ด C++ ใหม่โดย 4J Studios

ชุมชนเกมเมอร์กำลังพูดถึงโครงการที่น่าสนใจที่มีเป้าหมายในการถอดรหัสเกม Minecraft: Nintendo Switch Edition ซึ่งเผยให้เห็นประวัติทางเทคนิคของเวอร์ชันคอนโซลของ Minecraft โครงการนี้มุ่งเน้นไปที่เวอร์ชัน 1.0.17 ของ Nintendo Switch Edition ซึ่งเป็นส่วนหนึ่งของสิ่งที่เรียกว่า Legacy Console Edition (LCE) ที่พัฒนาโดย 4J Studios

รายละเอียดทางเทคนิคของโครงการดีคอมไพล์

  • เป้าหมาย: Minecraft: Nintendo Switch Edition v1.0.17
  • อ้างอิง: Minecraft: Wii U Edition Patch 35 (v560)
  • ความแตกต่างของคอมไพเลอร์:
    • Wii U Edition: คอมไพเลอร์ GHS (ยากต่อการจับคู่)
    • Switch Edition: คอมไพเลอร์ Clang (ง่ายต่อการจับคู่เมื่อใช้เวอร์ชันที่ถูกต้อง)
  • ข้อดีของ Switch Edition สำหรับการดีคอมไพล์:
    • มี typeinfo (ช่วยในการระบุ vtables)
    • สามารถพอร์ตสัญลักษณ์จาก Wii U Edition ได้
  • เครื่องมือที่จำเป็น:
    • Python 3.6+
    • Ninja
    • CMake 3.13+
    • Rust toolchain
    • ความต้องการอื่นๆ อีกหลายอย่าง

การเดินทางจาก Java สู่ C++ ของ Minecraft

หนึ่งในการเปิดเผยที่น่าสนใจที่สุดจากการสนทนาในชุมชนคือวิธีที่ Minecraft พัฒนาข้ามแพลตฟอร์มต่างๆ ในขณะที่เกมเมอร์หลายคนรู้ว่า Minecraft เริ่มต้นเป็นแอปพลิเคชัน Java แต่มีน้อยคนที่เข้าใจประวัติการพัฒนาที่ซับซ้อนที่ตามมา เมื่อเวอร์ชันคอนโซลกลายเป็นสิ่งจำเป็น Mojang ได้จ้าง 4J Studios เพื่อสร้างเวอร์ชันสำหรับแพลตฟอร์มต่างๆ เช่น Xbox 360, PS3 และในที่สุดก็ Nintendo Switch

ตามที่ผู้แสดงความคิดเห็นคนหนึ่งอธิบาย Java บนคอนโซลเป็นการรวมกันที่ไม่ดี ดังนั้นพวกเขาจึงเริ่มเขียนเวอร์ชันใหม่ด้วย C++ แต่อ้างอิงอย่างมากจากต้นฉบับ Java เป็นจุดอ้างอิง นี่อธิบายว่าทำไมโครงการถอดรหัสจึงเผยให้เห็นโค้ด C++ ที่มีชื่อคลาสคล้ายกับไลบรารีมาตรฐานของ Java เช่น BufferedOutputStream - 4J Studios สร้างส่วนประกอบ C++ ที่เทียบเท่ากับ Java เพื่อรักษาฟังก์ชันการทำงานที่คล้ายกันในขณะที่ได้รับประโยชน์ด้านประสิทธิภาพของ C++

สามสาขาของ Minecraft

โครงการถอดรหัสนี้เน้นย้ำว่า Minecraft ในที่สุดได้แยกออกเป็นสามโค้ดเบสที่แตกต่างกัน: Java Edition ดั้งเดิม, เวอร์ชันคอนโซล C++ ของ 4J Studios (Legacy Console Edition) และการเขียน C++ ใหม่ภายในบริษัทของ Mojang สำหรับอุปกรณ์มือถือ (Pocket Edition ซึ่งต่อมากลายเป็น Bedrock)

การแยกส่วนนี้สร้างพลวัตการแข่งขันที่น่าสนใจ ในขณะที่เวอร์ชันคอนโซลของ 4J ได้รับการปรับให้เหมาะสมโดยเฉพาะสำหรับเครื่องเล่นเกมคอนโซล Pocket Edition ของ Mojang ค่อยๆ ขยายจากโทรศัพท์ไปยัง Windows 10 และในที่สุดก็แทนที่เวอร์ชันของ 4J บนคอนโซลประมาณช่วงเวลาที่มีการปล่อย Update Aquatic ชุมชนดูเหมือนจะแบ่งแยกเกี่ยวกับการใช้งานแบบใดที่ให้ประสบการณ์คอนโซลที่ดีกว่า โดยผู้แสดงความคิดเห็นบางคนระบุว่า 4J ทำงานได้ดีกว่าบนคอนโซลเมื่อเทียบกับเกมมือถือที่ได้รับการยกย่องของ Microsoft

ไทม์ไลน์เวอร์ชันของ Minecraft

  • Original Java Edition: เวอร์ชันแรก ยังคงได้รับการพัฒนาจนถึงปัจจุบัน
  • Legacy Console Edition (4J Studios):
    • แพลตฟอร์ม: Xbox 360, PS3, PS Vita, Wii U, Xbox One, PS4, Nintendo Switch
    • เขียนด้วยภาษา: C++ (โดยมีโครงสร้างแบบ Java)
    • Nintendo Switch Edition v1.0.17 สอดคล้องกับ Wii U Edition Patch 35 (v560)
    • ยุติการพัฒนาหลังจากอัปเดต Aquatic
  • Pocket Edition/Bedrock (Mojang):
    • เริ่มต้นเป็นเวอร์ชันสำหรับมือถือ
    • ขยายไปยัง Windows 10
    • ในที่สุดก็มาแทนที่ Legacy Console Edition บนคอนโซลรุ่นปัจจุบัน
    • เขียนด้วยภาษา: C++

ความโหยหาของชุมชนม็อดดิ้ง

การสนทนาเกี่ยวกับโครงการถอดรหัสนี้ได้จุดประกายความโหยหาอย่างมากสำหรับระบบนิเวศการม็อดที่แข็งแกร่งของเวอร์ชัน Java ผู้แสดงความคิดเห็นหลายคนจำได้อย่างชัดเจนถึงม็อดทางเทคนิคเช่น IndustrialCraft 2, ComputerCraft และ Buildcraft ที่เพิ่มฟีเจอร์เช่นไมโครคอนโทรลเลอร์ที่สามารถโปรแกรมได้ ไฟฟ้า และระบบอัตโนมัติ

ฉันคิดถึงการม็อดจากเวอร์ชัน Java ดั้งเดิม - โดยเฉพาะแพ็คเทคโนโลยี ไมโครคอนโทรลเลอร์ที่คุณสามารถโปรแกรมเพื่อสร้างหุ่นยนต์ทำฟาร์ม ไฟฟ้า เครื่องมือไฟฟ้า พลังงานแสงอาทิตย์ น้ำมัน นั่นคือช่วงเวลาที่ดี!

ในขณะที่ Bedrock Edition มีประสิทธิภาพและฟีเจอร์ที่เหนือกว่าเช่นการรองรับ VR ความสามารถในการม็อดยังคงมีข้อจำกัดมากกว่าเมื่อเทียบกับ Java Edition อย่างไรก็ตาม ตามที่ผู้แสดงความคิดเห็นหลายคนชี้ให้เห็น Java Edition และชุมชนการม็อดของมันยังคงใช้งานอยู่ในปัจจุบันผ่านแพลตฟอร์มเช่น Fabric และ Forge

ความท้าทายทางเทคนิคของการถอดรหัส

โครงการถอดรหัสเองเผชิญกับอุปสรรคทางเทคนิคที่สำคัญ นักพัฒนาเลือกที่จะทำงานกับ Nintendo Switch Edition เพราะแม้ว่าจะไม่มีสัญลักษณ์ฟังก์ชัน แต่มี typeinfo ที่ช่วยระบุ vtables พวกเขาใช้ Wii U Edition (ซึ่งมีสัญลักษณ์ฟังก์ชัน) เป็นข้อมูลอ้างอิงเพื่อพอร์ตสัญลักษณ์ไปยังเวอร์ชัน Switch

เอกสารโครงการเผยให้เห็นความแตกต่างของคอมไพเลอร์ที่น่าสนใจระหว่างเวอร์ชัน - Wii U Edition ใช้คอมไพเลอร์ GHS (Green Hills Software) ซึ่งจะเกือบเป็นไปไม่ได้ที่จะจับคู่ได้อย่างแม่นยำ ในขณะที่ Switch Edition ใช้ Clang ทำให้ง่ายขึ้นในการบรรลุการจับคู่แอสเซมบลี 1:1 ด้วยเวอร์ชันคอมไพเลอร์ที่ถูกต้อง

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

สำหรับผู้ที่สนใจประวัติศาสตร์การพัฒนาเกม โครงการนี้ให้ภาพที่น่าสนใจเกี่ยวกับวิธีที่ Minecraft วิวัฒนาการข้ามแพลตฟอร์มและการตัดสินใจทางเทคนิคที่กำหนดรูปแบบต่างๆ

อ้างอิง: Minecraft: LCE Decompilation Project