ชุมชนเกมเมอร์กำลังพูดถึงโครงการที่น่าสนใจที่มีเป้าหมายในการถอดรหัสเกม 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