- Mojang ने घोषणा की है कि वह Minecraft: Java Edition से obfuscation पूरी तरह हटा रहा है
- obfuscation गेम इंडस्ट्री में एक सामान्य security practice रही है, लेकिन इससे code accessibility और mod विकास पर सीमाएँ लगती थीं
- पहले class, function और variable के नाम सभी obfuscated होते थे, जिससे mod development और debugging जटिल हो जाती थी, लेकिन अब original code names शामिल करने वाले builds उपलब्ध कराए जाएंगे
- Mounts of Mayhem update के बाद आने वाले पहले snapshot से obfuscation हट जाएगा, और मौजूदा tools की compatibility बनाए रखने के लिए कुछ समय तक obfuscated और deobfuscated versions साथ-साथ जारी किए जाएंगे
- इस बदलाव से mod development, code analysis, crash log interpretation, और bug fixing काफी आसान होने की उम्मीद है
Minecraft code obfuscation का इतिहास
- Java Edition ने शुरुआती रिलीज़ से ही source code की सुरक्षा के लिए obfuscation का उपयोग किया है
- code के अंदर class, function और variable names को जानबूझकर बेमानी strings में बदल दिया जाता था और उन्हें वैसे ही public नहीं किया जाता था
- इसके कारण modders को हर code के काम को manually analyze करना पड़ता था
- 2019 से Mojang ने इसे आसान बनाने के लिए obfuscation mappings files सार्वजनिक किए
- obfuscated names को उनके मूल अर्थ वाले names से जोड़ने वाली mapping list दी गई
- इससे modders के लिए code structure समझना आसान हुआ, लेकिन फिर भी बीच का एक process बना रहा
obfuscation हटाने का फैसला
- Mojang ने obfuscation को ही हटाने का फैसला किया है ताकि बीच का process पूरी तरह खत्म हो जाए
- “Mounts of Mayhem” की पूरी रिलीज़ के बाद आने वाले पहले snapshot से यह लागू होगा
- आगे आने वाले सभी versions में variable names, field names, class names जैसे original names वाला code default रूप से उपलब्ध होगा
- developers और modders को सीधे code access और modification की सुविधा मिलेगी
- इसे Java Edition की openness बढ़ाने और mod ecosystem की बाधाएँ कम करने वाला कदम माना जा रहा है
modders के लिए transition चरण
- Mojang ने मौजूदा tools की compatibility issues को ध्यान में रखते हुए transition period रखा है
- अगले snapshot से deobfuscated experimental release भी साथ में जारी की जाएगी
- modders नए code structure के अनुसार अपने tools और workflow को पहले से test कर सकेंगे
- पूरी तरह transition होने के बाद मौजूदा obfuscated version बंद कर दिया जाएगा
- पहला पूर्ण deobfuscated version Mounts of Mayhem रिलीज़ के बाद का पहला snapshot होगा
बदलाव का उद्देश्य
- Mojang ने कहा कि “modding Java Edition का core है”, और obfuscation उसके विकास में बाधा बन रही थी
- जटिल code deciphering के बिना तेज़ी से mod बनाना, update करना और debug करना संभव होगा
- crash logs की readability बेहतर होने से issues सुलझाने की रफ़्तार भी बढ़ेगी
- modders के बीच collaboration और learning process भी सरल होने की उम्मीद है
लाइसेंस और कानूनी दिशानिर्देश
- इस बदलाव का EULA या Usage Guidelines पर कोई असर नहीं पड़ेगा
- Minecraft और mod creators को अब भी इन नियमों का पालन करना होगा
- हर jar file में EULA से सीधे जुड़ने वाली LICENSE file शामिल होगी
- आगे होने वाले बदलाव:
- version
.json से obfuscation mapping information हटाई जाएगी
- client/server jar files दोनों deobfuscated रूप में उपलब्ध कराए जाएंगे
- हर jar में नई LICENSE file शामिल होगी
आगे की दिशा
- Mojang ने इसे “ज़्यादा transparent future की ओर transition” बताया है और community feedback सक्रिय रूप से लेने की बात कही है
- obfuscation हटना Minecraft Java Edition के इतिहास में सबसे अधिक open development environment changes में से एक है,
जिससे mod ecosystem की growth तेज़ होने और educational value बढ़ने की उम्मीद है
1 टिप्पणियां
Hacker News राय
यह हैरानी की बात है कि Minecraft जैसा मज़बूत mod community वाला गेम होने के बावजूद, डेवलपर्स ने decompile किए गए obfuscated Java binaries पर काम किया
10 साल से ज़्यादा समय तक deobfuscation और reobfuscation दोहराते हुए tooling को बेहतर बनाना उनकी समर्पण भावना दिखाता है
वह hexadecimal numbers को देखते हुए एक-एक अक्षर बदलता था, बिल्कुल फिल्म Matrix के हैकर जैसा, और यह दृश्य बहुत प्रभावशाली था
हालांकि Java में decompile करना मूल रूप से आसान है, इसलिए असली बाधा code obfuscation से ज़्यादा object-oriented structure की जटिलता है
अब पहले की तरह community को उन्हें खुद बनाकर इस्तेमाल नहीं करना पड़ता
VM structure और object dispatch की अवधारणा भर समझना काफ़ी था
शुरुआती Minecraft modding community वाकई बहुत मज़ेदार जगह थी, और यह मेरे coding अनुभवों के सबसे यादगार पलों में से एक था
लेकिन बाद में पता चला कि इसका ज़्यादातर ecosystem reverse engineering से बना था, यह काफ़ी चौंकाने वाला था
Minecraft, Roblox, Geometry Dash और Trackmania जैसे गेम community की ताकत से सफल हुए उदाहरण हैं
अगर engine बंद हो या development मुश्किल हो, तो Vision Pro या metaverse की तरह बढ़ना कठिन होता है
community बनने के लिए hobby developers और छोटे user groups का आसानी से शामिल होना ज़रूरी है
लेकिन आखिरकार सबसे ज़रूरी चीज़ खुद ‘अच्छा गेम’ होना है
जब community बड़ी होती है, तो उसका एक हिस्सा स्वाभाविक रूप से modding शुरू कर देता है
उदाहरण के लिए Richard Burns Rally मूल रूप से modding को ध्यान में रखकर नहीं बना था, लेकिन fans ने इसमें cars, tracks और online features तक जोड़ दिए
voxel engine Luanti में भी ऐसा ही देखने को मिलता है
2006 में मुफ़्त में हज़ारों 3D multiplayer games को तुरंत चलाया जा सकता था, और building destruction या terrain deformation भी संभव था
उस समय के हिसाब से यह क्रांतिकारी था, और उसकी वही सरल accessibility आखिरकार बच्चों के बाज़ार पर छा गई
alpha version से ही single-player experience बेहतरीन था, और survival व creativity का संतुलन लगभग परफेक्ट था
उसी दौर में यह पहले से ही लाखों डॉलर की कमाई कर रहा था
महँगा VR headset पहनना बहुत कम लोग चाहते हैं
Unity, Unreal और Godot सभी में VR support अच्छा है
असली समस्या यह है कि development cost के मुकाबले users कम हैं
accessibility, UX और motion sickness से बचाव जैसी बहुत-सी चीज़ों पर ध्यान देना पड़ता है, इसलिए development कहीं ज़्यादा महँगा हो जाता है
उदाहरण के लिए 6DoF environment में subtitles दिखाना भी आसान नहीं है
Mojang ने 2019 में जो obfuscation mappings जारी किए थे, वे obfuscated नामों को खोलने वाली सूची थीं
इससे modders को अब हर code का अनुमान नहीं लगाना पड़ता था, लेकिन यह सवाल बना रहा कि सिर्फ आधा ही क्यों जारी किया गया
यह जानना दिलचस्प होगा कि क्या कभी Minecraft Java Edition को GitHub पर open source किया जाएगा
Skyrim की तरह लगता है कि यह किसी भी platform पर बिकता रहेगा
game files भी Microsoft servers से मुफ़्त में डाउनलोड की जा सकती हैं, इसलिए open source करने से शायद कोई खास नुकसान नहीं होगा
उस समय के webpage का archive
art assets तब भी copyright protection के तहत रहेंगे
आजकल मैं Luanti पर काम करना ज़्यादा पसंद करता हूँ
इसमें mods के जरिए Minecraft जैसा लगभग वही अनुभव बनाया जा सकता है, और VoxeLibre जैसे game mods भी हैं
Lua में लिखे गए mods का source code भी ज़्यादातर खुला हुआ है
खासकर Zoonami दिलचस्प है, क्योंकि यह Pokémon जैसे game experience देता है
Minecraft में पहले से ही piracy आसान है, इसलिए source खोलने से होने वाला नुकसान शायद लगभग न के बराबर होगा
ज़्यादातर लोग Mojang के authentication servers इस्तेमाल करने के लिए official account बनाए रखते हैं
इसका पैमाना इतना बड़ा है कि non-commercial शर्त के साथ source release भी संभव लगती है
Proguard की aggressive obfuscation class names को जटिल बना देती है और inlining तक कर देती है, जिससे code समझना मुश्किल हो जाता है
इस लिहाज़ से यह कदम बड़ा आगे बढ़ना है
यह अच्छी खबर है! Minecraft modding community के लिए नई संभावनाएँ खुल रही हैं
community द्वारा बनाई गई mappings free license के तहत थीं, लेकिन Microsoft की mappings वैसी नहीं थीं
यह किसी तरह का trap भी हो सकता है
अगर इसे सचमुच और आसान बनाना है, तो modding-allowed license के तहत source code जारी करना सबसे अच्छा होगा