Minecraft Java Edition ยุติการปกปิดโค้ด เปิดศักราชใหม่วงการม็อด

ทีมชุมชน BigGo
Minecraft Java Edition ยุติการปกปิดโค้ด เปิดศักราชใหม่วงการม็อด

เป็นเวลากว่าทศวรรษที่ Minecraft: Java Edition ทำงานด้วยโค้ดที่ถูกทำให้สับสนผ่านกระบวนการปกปิด บังคับให้นักสร้างม็อดต้องทำงานกับคลาสและเมธอดที่มีชื่อสับสนและถูกตั้งชื่อแบบสุ่ม ตอนนี้ การตัดสินใจของ Mojang ที่จะลบการปกปิดนี้ออกไปทั้งหมด ถือเป็นการเปลี่ยนแปลงครั้งสำคัญที่สุดสำหรับชุมชนนักสร้างม็อดขนาดใหญ่ของเกม การเปลี่ยนแปลงนี้สัญญาว่าจะเปลี่ยนวิธีการที่นักสร้างม็อดมีปฏิสัมพันธ์กับฐานโค้ดของ Minecraft ซึ่งอาจเร่งการพัฒนาและทำให้เกมเข้าถึงได้ง่ายขึ้นสำหรับผู้สร้าง

จบยุคแห่งการปกปิด

ประวัติศาสตร์การปกปิดโค้ดของ Minecraft ย้อนกลับไปถึงยุคแรกสุดของเกม สร้างสิ่งที่สมาชิกในชุมชนคนหนึ่งอธิบายว่าเป็นเครื่องมือที่ซับซ้อนเพื่อถอดรหัสการปกปิดและจากนั้นก็ปกปิดใหม่โดยใช้ชื่อที่บิดเบือนเหมือนเดิม แม้ว่า Mojang จะเริ่มให้การแมปการปกปิดอย่างเป็นทางการในปี 2019 เพื่อลดภาระนี้ แต่อุปสรรคพื้นฐานยังคงอยู่ นักสร้างม็อดต้องเดินทางผ่านคลาสและเมธอดที่มีชื่อเช่น a, b, หรือ c แทนที่จะเป็นตัวระบุที่สื่อความหมายซึ่งจะเปิดเผยจุดประสงค์ของพวกมัน การเปลี่ยนแปลงที่กำลังจะมาถึงหมายความว่าเวอร์ชัน Minecraft ในอนาคตจะมาพร้อมกับชื่อตัวแปรดั้งเดิมทั้งหมด ชื่อฟิลด์ ชื่อเมธอด และชื่อคลาสที่ยังคงอยู่ครบถ้วน ซึ่งขจัดความจำเป็นสำหรับระบบการแมปที่ซับซ้อนซึ่งกำหนดนิยามการสร้างม็อด Minecraft มาเป็นเวลาหลายปี

มันน่าทึ่งมากสำหรับฉันที่ Minecraft เป็นทั้งเกมที่มีชุมชนม็อดที่แข็งแกร่งที่สุดและที่นักสร้างม็อดทำงานจากไฟล์ Java binary ที่ถูกปกปิดและ decompile

ไทม์ไลน์การพัฒนา Mod ของ Minecraft Java Edition:

  • 2011-2019: การ reverse engineering โดยชุมชนพร้อมกับการสร้าง obfuscation mappings โดยชุมชน
  • 2019: Mojang เริ่มให้บริการ obfuscation mappings อย่างเป็นทางการ
  • 2024: ประกาศการ deobfuscation แบบสมบูรณ์เริ่มต้นจาก snapshots หลัง Mounts of Mayhem
  • อนาคต: เวอร์ชันใหม่ทั้งหมดจะมาพร้อมกับชื่อโค้ดต้นฉบับที่ยังคงอยู่ครบถ้วน

วิวัฒนาการของเครื่องมือชุมชนและขั้นตอนการทำงาน

ชุมชนนักสร้างม็อดได้พัฒนาวิธีแก้ปัญหาที่ซับซ้อนเพื่อทำงานรอบๆ การปกปิดโค้ด โดยเฉพาะอย่างยิ่งผ่านเฟรมเวิร์กการเขียนใหม่คลาสไฟล์ขณะทำงาน ที่ใช้คำอธิบายประกาศ (declarative annotations) เพื่อปรับเปลี่ยนเมธอดของ Minecraft ทันทีในขณะทำงาน ระบบเหล่านี้ ซึ่งรวมถึงโปรเซสเซอร์ Mixin ได้ปฏิวัติการพัฒนาม็อดโดยก้าวข้ามการแพตช์ที่คอมไพล์ด้วยมือซึ่งก่อนหน้านี้ต้องการโค้ดหลายหมื่นบรรทัด ดังที่นักสร้างม็อดที่มีประสบการณ์ท่านหนึ่งอธิบาย ม็อดของ Minecraft ถูกสร้างบนเฟรมเวิร์กการเขียนใหม่คลาสไฟล์ขณะทำงานที่เจ๋งและยืดหยุ่นอย่างไม่น่าเชื่อ ซึ่งหมายความว่าแต่ละ JAR สามารถใช้คำอธิบายประกาศง่ายๆ เช่น @Inject เพื่อเขียนใหม่เมธอดของ Minecraft ทันทีเมื่อม็อดของพวกเขาถูกโหลดหรือยกเลิกการโหลด โครงสร้างพื้นฐานนี้ทำให้ม็อดยังคงเข้ากันได้ข้ามการอัปเดต แม้จะมีชื่อที่ถูกปกปิดซึ่งเปลี่ยนแปลงอยู่ตลอดเวลาภายใต้พวกมัน

ผลกระทบเชิงปฏิบัติต่อการพัฒนาม็อด

สำหรับนักพัฒนาม็อดในปัจจุบัน ประโยชน์ที่เห็นได้ชัดเจนที่สุดทันทีคือการดีบักที่ชัดเจนขึ้นและบันทึกข้อผิดพลาด (crash logs) ที่อ่านง่ายขึ้น นักสร้างม็อดท่านหนึ่งเน้นย้ำว่าความแตกต่างหลักสำหรับนักพัฒนา NeoForge จะเป็นชื่อพารามิเตอร์ของเมธอดใน IDE ซึ่งเป็นการจัดการกับช่องว่างที่มีมาอย่างยาวนานในระบบแมปที่มีอยู่ การเปลี่ยนแปลงนี้ยังสัญญาว่าจะลดเวลาระหว่างการอัปเดต Minecraft และการเผยแพร่ม็อดที่เข้ากันได้ เนื่องจากนักสร้างม็อดไม่จำเป็นต้องรอการแมปที่อัปเดตหรือย้อนรอยวิศวกรรมโค้ดที่ถูกปกปิดใหม่ อย่างไรก็ตาม สมาชิกในชุมชนบางส่วนระบุว่าเครื่องมือและขั้นตอนการสร้างม็อดที่จัดตั้งขึ้นซึ่งออกแบบมาสำหรับโค้ดที่ถูกปกปิดอาจต้องการการปรับเปลี่ยน และนักสร้างม็อดหลายคนอาจยังคงใช้ชื่อชุมชนที่คุ้นเคยซึ่งกลายเป็นมาตรฐานจากการพัฒนามาหลายปี

ประโยชน์หลักของการ Deobfuscation:

  • ชื่อพารามิเตอร์ของเมธอดที่อ่านได้ใน IDE
  • ข้อมูลการดีบักและล็อกข้อผิดพลาดที่ชัดเจนขึ้น
  • อัปเดตม็อดได้เร็วขึ้นหลังจาก Minecraft เปิดตัวเวอร์ชันใหม่
  • ลดการพึ่งพาไฟล์แมปปิ้งและเครื่องมือต่างๆ
  • เข้าถึงได้ง่ายขึ้นสำหรับนักพัฒนาม็อดมือใหม่

ผลกระทบในวงกว้างสำหรับชุมชนเกมเมอร์

การเดินทางของ Minecraft จากโค้ดที่ถูกปกปิดอย่างหนักไปสู่ความโปร่งใส สะท้อนให้เห็นรูปแบบที่กว้างขึ้นในแพลตฟอร์มเกมที่ประสบความสำเร็จ เกมเช่น Roblox, Geometry Dash และเกมคลาสสิกที่เป็นมิตรกับม็อดอย่าง Counter-Strike แสดงให้เห็นว่าสภาพแวดล้อมการพัฒนาที่เข้าถึงได้สามารถขับเคลื่อนระบบนิเวศการสร้างสรรค์ที่มีชีวิตชีวาได้อย่างไร ดังที่ผู้แสดงความคิดเห็นท่านหนึ่งสังเกต หากคุณต้องการสร้างชุมชน คุณต้องทำให้การพัฒนาง่ายสำหรับนักเล่นมือสมัครเล่นและผู้ใช้รายย่อย วิวัฒนาการของ Minecraft แสดงให้เห็นว่า Java Edition กำลังยอมรับชุมชนนักสร้างม็อดมากขึ้นเรื่อยๆ โดยมีการพัฒนาล่าสุดรวมถึงการทิ้งคุณสมบัติการดีบักไว้ในโค้ด การบำรุงรักษาโครงสร้างพื้นฐานการทดสอบ และการนำระบบการตั้งชื่อเนมสเปซ (namespacing) ที่รองรับการปรับเปลี่ยนได้ดีกว่าเข้ามาใช้

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

อ้างอิง: REMOVING OBFUSCATION IN JAVA EDITION