- Mojang, Minecraft: Java Edition'da obfuscation'ı tamamen kaldıracağını duyurdu
- Obfuscation oyun sektöründe yaygın bir güvenlik uygulamasıydı, ancak kod erişilebilirliğini ve mod geliştirmeyi kısıtlayan bir unsurdu
- Daha önce sınıf, fonksiyon ve değişken adlarının tamamı obfuscate edildiği için mod geliştirme ve debug süreci karmaşıktı; artık ise orijinal kod adlarını içeren build'ler sunulacak
- Obfuscation, Mounts of Mayhem güncellemesinden sonraki ilk snapshot ile ortadan kalkacak; mevcut araçlarla uyumluluğu korumak için bir süre obfuscate ve deobfuscate sürümler birlikte dağıtılacak
- Bu değişikliğin mod geliştirme, kod analizi, crash log yorumlama ve bug düzeltmeyi belirgin biçimde kolaylaştırması bekleniyor
Minecraft kod obfuscation'ının tarihi
- Java Edition, ilk çıkışından bu yana kaynak kodunu korumak için obfuscation kullanıyordu
- Kod içindeki sınıf, fonksiyon ve değişken adları kasıtlı olarak anlamsız dizelere dönüştürülüyor ve açık edilmeden dağıtılıyordu
- Bu nedenle mod geliştiricileri her bir kod parçasının rolünü elle analiz etmek zorunda kalıyordu
- Mojang, 2019'dan itibaren bunu hafifletmek için obfuscation mapping dosyalarını yayımlamaya başladı
- Obfuscate edilmiş adları asıl anlamlı adlarla eşleştiren mapping listeleri sağlandı
- Bu sayede mod geliştiricilerinin kod yapısını anlaması kolaylaştı, ancak hâlâ bir ara adım bulunuyordu
Obfuscation'ı kaldırma kararı
- Mojang, obfuscation'ı doğrudan kaldırarak bu ara adımı tamamen ortadan kaldırmaya karar verdi
- Uygulama, “Mounts of Mayhem” tam sürüm olarak çıktıktan sonraki ilk snapshot ile başlayacak
- Bundan sonra tüm sürümlerde değişken adları, alan adları ve sınıf adları gibi orijinal isimleri içeren kod varsayılan olarak sağlanacak
- Geliştiriciler ve mod yapımcıları koda doğrudan erişip değişiklik yapabilecek
- Bu adım, Java Edition'ın açıklığını artırarak mod ekosistemine giriş bariyerini düşüren bir hamle olarak yorumlanıyor
Mod geliştiricileri için geçiş aşaması
- Mojang, mevcut araçlarla uyumluluk sorunlarını dikkate alarak bir geçiş dönemi hazırladı
- Bir sonraki snapshot'tan itibaren deobfuscate deneysel sürüm (experimental release) de birlikte dağıtılacak
- Mod geliştiricileri yeni kod yapısına uygun araçlarını ve iş akışlarını önceden test edebilecek
- Tam geçişten sonra mevcut obfuscate sürümler sonlandırılacak
- İlk tamamen deobfuscate sürüm, Mounts of Mayhem yayımlandıktan sonraki ilk snapshot olacak
Değişikliğin amacı
- Mojang, “modlama Java Edition'ın çekirdeğidir” diyerek obfuscation'ın bu büyümeyi engellediğini belirtti
- Karmaşık kod çözümleme süreçleri olmadan mod üretme, güncelleme ve debug etme daha hızlı yapılabilecek
- Crash log'ların okunabilirliğinin artmasıyla sorun çözme hızı da iyileşecek
- Mod geliştiricileri arasındaki iş birliği ve öğrenme sürecinin de sadeleşmesi bekleniyor
Lisans ve hukuki yönergeler
- Bu değişiklik EULA veya Usage Guidelines üzerinde bir etki yaratmıyor
- Minecraft ve mod geliştiricileri ilgili kurallara uymaya devam etmek zorunda
- Her
jar dosyası, doğrudan EULA'ya bağlanan bir LICENSE dosyası içerecek
- Gelecekteki değişiklikler:
- Sürüm
.json dosyalarından obfuscation mapping bilgisi kaldırılacak
- İstemci ve sunucu
jar dosyalarının tamamı deobfuscate durumda sağlanacak
- Her
jar içine yeni bir LICENSE dosyası eklenecek
Gelecek yönelim
- Mojang bunu “daha şeffaf bir geleceğe geçiş” olarak tanımlıyor ve topluluk geri bildirimlerini aktif biçimde toplamayı planlıyor
- Obfuscation'ın kaldırılması, Minecraft Java Edition tarihinde en açık geliştirme ortamı değişimlerinden biri olarak görülüyor ve
mod ekosisteminin büyümesini hızlandırmasıyla birlikte eğitimsel değerini de artırması bekleniyor
1 yorum
Hacker News görüşleri
Minecraft gibi güçlü bir mod topluluğuna sahip bir oyunda bile geliştiricilerin obfuscation uygulanmış Java binary’lerini decompile ederek çalışmış olması şaşırtıcı
10 yılı aşkın süre boyunca deobfuscation ve yeniden obfuscation yaparak araçlarını geliştirmeleri gerçekten büyük bir adanmışlık örneği
Matrix filmindeki hackerlar gibi, hex’e bakıp karakter karakter değiştirmesi çok etkileyiciydi
Ama Java zaten decompile edilmesi kolay bir dil; asıl engel kod obfuscation’ından çok nesne yönelimli yapının karmaşıklığı
Artık topluluğun eskisi gibi bunları kendisinin üretmesine gerek yok
VM yapısını ve object dispatch kavramını bilmek yeterliydi
İlk dönem Minecraft modlama topluluğu gerçekten çok keyifliydi ve yaşadığım en unutulmaz kodlama anılarından biriydi
Ama ekosistemin büyük kısmının aslında reverse engineering ile kurulmuş olduğunu öğrenmek şaşırtıcı
Minecraft, Roblox, Geometry Dash ve Trackmania gibi oyunlar topluluğun gücüyle başarıya ulaşmış örnekler
Motor kapalıysa ya da geliştirme zorsa, Vision Pro veya metaverse örneklerinde olduğu gibi büyümek zorlaşıyor
Topluluğun oluşması için hobi geliştiricilerin ve küçük kullanıcı gruplarının kolayca katılabilmesi gerekiyor
Ama sonuçta en önemli şey oyunun kendi başına ‘iyi bir oyun’ olması
Topluluk büyüyünce içinden bir kısmı doğal olarak modlamaya başlıyor
Örneğin Richard Burns Rally modlama düşünülerek yapılmamıştı ama hayranlar araçlar, pistler ve hatta çevrimiçi özellikler ekledi
voxel motoru Luanti tarafında da benzer bir durum görülüyor
2006’da ücretsiz olarak binlerce 3D çok oyunculu oyunu anında çalıştırabiliyor, bina yıkımı ve arazi deformasyonu da yapabiliyordunuz
O dönem için çok yenilikçiydi; bu yalın erişilebilirlik sonunda çocuk pazarını ele geçirmesini sağladı
Alfa sürümden itibaren tek oyunculu deneyimi çok iyiydi; hayatta kalma ile yaratıcılık arasındaki denge kusursuzdu
O dönemde bile zaten milyonlarca dolar gelir elde ediyordu
Pahalı bir VR headset takmak isteyen insan sayısı çok az
Unity, Unreal ve Godot’nun hepsinde VR desteği iyi
Sorun, geliştirme maliyetine kıyasla kullanıcı sayısının düşük olması
Erişilebilirlik, UX ve motion sickness önleme gibi pek çok konu düşünülmeli, bu yüzden geliştirme çok daha pahalı
Örneğin 6DoF ortamında altyazı göstermek bile zor
Mojang’ın 2019’da yayımladığı obfuscation mappings, obfuscation uygulanmış adları çözmeye yarayan bir listeydi
Bu sayede mod geliştiriciler artık tüm kodu tahmin etmek zorunda kalmadı, ama neden bunun yalnızca yarısının yayımlandığı belirsiz
Bir gün Minecraft Java Edition’ın GitHub’da açık kaynak olarak yayımlanıp yayımlanmayacağını merak ediyorum
Skyrim gibi, her platformda satılmaya devam edecekmiş gibi görünüyor
Oyun dosyaları da Microsoft sunucularından ücretsiz alınabildiği için, açık kaynak yapılmasının ciddi bir zararı olmayabilir
Dönemin web sayfası arşivi
Sanatsal varlıklar yine telif koruması altında kalır
Ben bugünlerde Luanti üzerinde çalışmayı daha çok tercih ediyorum
Minecraft’a neredeyse aynı deneyimi modlarla kurmak mümkün ve VoxeLibre gibi oyun modları da var
Lua ile yazılmış modların kaynak kodunun çoğu da açık
Özellikle Zoonami, Pokémon benzeri bir oyun deneyimi sunduğu için ilginç geliyor
Minecraft zaten kolayca korsanlanabilen bir oyun; bu yüzden kaynak kodun açılmasının getireceği zarar çok az olabilir
Çoğu kişi Mojang’ın kimlik doğrulama sunucularını kullanmak için orijinal hesabını koruyor
Hatta ölçeği o kadar büyük ki, ticari olmayan kullanım şartıyla bir açık kaynaklaştırma bile mümkün olabilir
Proguard’ın agresif obfuscation yaklaşımı, class adlarını karmaşıklaştırıp inline etme gibi yöntemlerle kodu anlamayı zorlaştırıyordu
Bu gelişme o açıdan önemli bir ilerleme
Harika haber! Minecraft modlama topluluğu için yeni olanaklar açılıyor
Topluluğun ürettiği mapping’ler özgür lisanslıydı ama Microsoft’un mapping’leri öyle değildi
Bu bir tür tuzak olabilir
Gerçekten daha kolay hale getirmek isteniyorsa, en iyisi kaynak kodunu modlamaya izin veren bir lisansla yayımlamak olurdu