- Mojang mengumumkan akan menghapus obfuscation sepenuhnya dari Minecraft: Java Edition
- Obfuscation merupakan praktik keamanan yang umum di industri game, tetapi membatasi aksesibilitas kode dan pengembangan mod
- Sebelumnya, nama kelas, fungsi, dan variabel semuanya di-obfuscate sehingga pengembangan mod dan debugging menjadi rumit, tetapi kini akan disediakan build yang menyertakan nama kode asli
- Obfuscation akan hilang mulai dari snapshot pertama setelah update Mounts of Mayhem, dan demi kompatibilitas dengan tool yang ada, selama beberapa waktu versi obfuscated dan de-obfuscated akan didistribusikan bersamaan
- Perubahan ini diharapkan akan semakin mempermudah pengembangan mod, analisis kode, pembacaan crash log, dan perbaikan bug
Sejarah obfuscation kode Minecraft
- Java Edition telah menggunakan obfuscation untuk melindungi source code sejak awal perilisannya
- Nama kelas, fungsi, dan variabel di dalam kode sengaja diubah menjadi string yang tidak bermakna dan tidak dipublikasikan
- Akibatnya, para modder harus menganalisis peran tiap bagian kode secara manual
- Sejak 2019, Mojang meredakan hal ini dengan merilis file obfuscation mappings
- Menyediakan daftar mapping yang menghubungkan nama yang di-obfuscate dengan nama aslinya yang bermakna
- Berkat itu, modder lebih mudah memahami struktur kode, tetapi proses perantara tetap ada
Keputusan untuk menghapus obfuscation
- Mojang memutuskan untuk menghapus obfuscation itu sendiri agar proses perantara benar-benar hilang
- Berlaku mulai snapshot pertama setelah rilis penuh “Mounts of Mayhem”
- Ke depannya, semua versi akan secara default menyediakan kode yang memuat nama asli variabel, field, kelas, dan lainnya
- Developer dan modder akan dapat mengakses dan memodifikasi kode secara langsung
- Ini dipandang sebagai langkah yang meningkatkan keterbukaan Java Edition dan menurunkan hambatan dalam ekosistem mod
Tahap transisi untuk modder
- Mojang menyiapkan masa transisi dengan mempertimbangkan masalah kompatibilitas tool yang ada
- Mulai snapshot berikutnya, rilis eksperimental de-obfuscated juga akan didistribusikan
- Modder dapat menguji tool dan workflow lebih awal agar sesuai dengan struktur kode baru
- Setelah transisi penuh, versi obfuscated lama akan dihentikan
- Versi pertama yang sepenuhnya de-obfuscated adalah snapshot pertama setelah perilisan Mounts of Mayhem
Tujuan perubahan
- Mojang menyatakan bahwa “modding adalah inti dari Java Edition”, dan menjelaskan bahwa obfuscation telah menghambat pertumbuhannya
- Tanpa harus melakukan decoding kode yang rumit, pembuatan, pembaruan, dan debugging mod dapat dilakukan lebih cepat
- Keterbacaan crash log meningkat sehingga penyelesaian masalah juga menjadi lebih cepat
- Kolaborasi antar-modder dan proses belajar juga diharapkan menjadi lebih sederhana
Lisensi dan panduan hukum
- Perubahan ini tidak memengaruhi EULA maupun Usage Guidelines
- Pembuat Minecraft dan mod tetap harus mematuhi ketentuan tersebut
- Setiap file jar akan menyertakan file LICENSE yang terhubung langsung ke EULA
- Perubahan selanjutnya:
- Informasi obfuscation mappings dihapus dari versi
.json - Baik file jar client maupun server akan disediakan dalam keadaan de-obfuscated
- Setiap jar menyertakan file LICENSE baru
- Informasi obfuscation mappings dihapus dari versi
Arah ke depan
- Mojang menyebut ini sebagai “transisi menuju masa depan yang lebih transparan” dan berencana aktif mengumpulkan masukan dari komunitas
- Penghapusan obfuscation ini merupakan perubahan lingkungan pengembangan paling terbuka dalam sejarah Minecraft Java Edition,
dan diharapkan akan mempercepat pertumbuhan ekosistem mod serta memperluas nilai edukatifnya
1 komentar
Opini Hacker News
Mengejutkan bahwa Minecraft adalah game dengan komunitas mod yang sangat kuat, tetapi para pengembangnya bekerja dengan mendekompilasi biner Java yang diobfuskasi
Dedikasi mereka luar biasa, mengembangkan tooling sambil berulang kali melakukan deobfuscation dan re-obfuscation selama lebih dari 10 tahun
Pemandangan saat dia melihat heksadesimal dan mengubahnya satu karakter demi satu karakter benar-benar mengesankan, seperti peretas di film Matrix
Hanya saja Java memang sejak awal mudah didekompilasi, jadi hambatan sebenarnya bukan obfuscation kode melainkan kompleksitas struktur berorientasi objek
Jadi komunitas tidak perlu lagi membuat dan memakainya sendiri seperti dulu
Cukup memahami struktur VM dan konsep object dispatch
Komunitas modding Minecraft di masa awal benar-benar tempat yang menyenangkan, dan itu salah satu pengalaman coding paling berkesan yang pernah saya alami
Ternyata mengejutkan bahwa sebagian besar ekosistemnya dibangun lewat reverse engineering
Game seperti Minecraft, Roblox, Geometry Dash, dan Trackmania adalah contoh sukses berkat kekuatan komunitas
Jika engine-nya tertutup atau sulit dikembangkan, akan sulit tumbuh seperti Vision Pro atau metaverse
Agar komunitas terbentuk, pengembang hobi dan pengguna skala kecil harus bisa ikut serta dengan mudah
Namun pada akhirnya yang penting adalah game yang memang ‘bagus’
Saat komunitas membesar, sebagian darinya akan secara alami mulai membuat mod
Misalnya Richard Burns Rally awalnya tidak dirancang untuk modding, tetapi para penggemar tetap menambahkan mobil, trek, bahkan fitur online
Fenomena serupa juga terlihat pada engine voxel Luanti
Pada 2006, ribuan game multiplayer 3D gratis bisa langsung dijalankan, dan bahkan mendukung penghancuran bangunan serta deformasi terrain
Itu sangat inovatif untuk zamannya, dan aksesibilitasnya yang sederhana pada akhirnya membuatnya menguasai pasar anak-anak
Sejak versi alpha, pengalaman single-player-nya sudah sangat bagus, dan keseimbangan antara survival dan kreativitas terasa sempurna
Bahkan pada masa itu saja, game ini sudah menghasilkan jutaan dolar pendapatan
Hampir tidak ada orang yang ingin memakai headset VR yang mahal
Unity, Unreal, dan Godot semuanya punya dukungan VR yang bagus
Masalahnya adalah jumlah pengguna terlalu kecil dibanding biaya pengembangan
Ada banyak hal yang harus dipertimbangkan seperti aksesibilitas, UX, dan pencegahan mabuk gerak, sehingga pengembangannya jauh lebih mahal
Misalnya, bahkan menampilkan subtitle di lingkungan 6DoF pun sulit
Obfuscation mappings yang dirilis Mojang pada 2019 adalah daftar yang mengembalikan nama-nama yang diobfuskasi
Berkat itu para modder tidak perlu lagi menebak semua kode, tetapi tetap muncul pertanyaan kenapa hanya setengah yang dibuka
Saya penasaran apakah suatu hari Minecraft Java Edition akan dirilis sebagai open source di GitHub
Rasanya game ini akan terus laku di platform apa pun seperti Skyrim
File game juga bisa diunduh gratis dari server Microsoft, jadi rasanya tidak banyak kerugian jika dijadikan open source
Arsip halaman web saat itu
Aset artistik tetap dilindungi hak cipta
Akhir-akhir ini saya lebih suka mengerjakan sesuatu di Luanti
Pengalaman yang nyaris sama dengan Minecraft bisa diwujudkan lewat mod, dan ada juga game mod seperti VoxeLibre
Source code mod yang ditulis dalam Lua juga sebagian besar terbuka
Secara khusus, Zoonami menarik karena menghadirkan pengalaman bermain ala Pokémon
Minecraft sudah mudah dibajak, jadi rasanya hampir tidak ada kerugian tambahan kalau source-nya dibuka
Kebanyakan orang tetap mempertahankan akun asli untuk memakai server autentikasi Mojang
Skalanya bahkan cukup besar sampai rasanya open source dengan syarat nonkomersial pun mungkin saja dilakukan
Obfuscation agresif dari Proguard membuat nama class menjadi rumit dan bahkan melakukan inlining, sehingga kode lebih sulit dipahami
Dari sudut pandang itu, langkah kali ini adalah kemajuan besar
Kabar baik! Ini membuka kemungkinan baru bagi komunitas modding Minecraft
Mapping buatan komunitas memakai lisensi bebas, tetapi mapping milik Microsoft tidak demikian
Ini bisa jadi semacam jebakan
Kalau benar-benar ingin membuatnya lebih mudah, cara terbaik tampaknya adalah membuka source code dengan lisensi yang mengizinkan modding