12 puan yazan GN⁺ 2025-10-30 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2025-10-30
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

    • 2004’te bir MMO oyununu korsan sunucuda oynamıştım; sunucu yöneticisi bir hex editor ile binary’yi doğrudan değiştirip özellik ekliyordu
      Matrix filmindeki hackerlar gibi, hex’e bakıp karakter karakter değiştirmesi çok etkileyiciydi
    • Bu, kaynak kod olmadan da yazılım değiştirilebildiğinin bir başka kanıtı
      Ama Java zaten decompile edilmesi kolay bir dil; asıl engel kod obfuscation’ından çok nesne yönelimli yapının karmaşıklığı
    • Aslında Mojang 2019’dan beri resmi mapping dosyaları sağlamaya başlamıştı
      Artık topluluğun eskisi gibi bunları kendisinin üretmesine gerek yok
    • Java’nın decompile edilmesi kolay; JVM kodunu anlayınca hızlıca müdahale edilebiliyor
      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
    • Ben de Minecraft’a çok hakim olmadığım için resmi bir eklenti sistemi olduğunu sanıyordum
      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

    • Flight Simulator serisi de devasa bir add-on ekosistemi oluşturdu
      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
    • Roblox’un ilk dönem motor olgunluğu gerçekten çok yüksekti
      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ı
    • Bence Minecraft bir istisna
      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
    • Metaverse’ün başarısız olmasının bir diğer nedeni de kimsenin bunu istememesi
      Pahalı bir VR headset takmak isteyen insan sayısı çok az
    • VR motorlarının kötü olduğu iddiasına katılmıyorum
      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

    • Çünkü birçok mod aracı zaten topluluğun adlandırma sistemine göre kurulmuştu
    • Muhtemelen hukuk ekibi “deobfuscation” kelimesini duyunca kısa bir panik yaşamıştır
    • Bu sadece hukuki nedenlerden ya da süreç kolaylığından kaynaklanmış da olabilir
    • Belki de mapping’ler yalnızca bazı class ve method’ları kapsayan resmi bir API biçimindeydi, merak ediyorum
  • 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

    • Zaten açık kaynak launcher’lar, hesap doğrulamasına dikkat edildiği sürece düzgün çalışıyor
      Oyun dosyaları da Microsoft sunucularından ücretsiz alınabildiği için, açık kaynak yapılmasının ciddi bir zararı olmayabilir
    • 2010’da Notch, “satışlar düşerse kaynak kodunu yayımlarım” diye söz vermişti
      Dönemin web sayfası arşivi
    • Doom’daki gibi yalnızca motoru açık kaynak yapmak da iyi bir yöntem olabilir
      Sanatsal varlıklar yine telif koruması altında kalır
    • Benzer alternatifler olarak Minetest ve Luanti var
    • Bugün kaynak açılıp sadece hesap doğrulama sunucularına erişim hakkı ücretli kalsa bile bunun gelire büyük etkisi olmayabilir
  • 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

    • Luanti’de de AllTheMods 10 veya Meatballcraft gibi büyük mod paketleri olup olmadığını merak ediyorum
    • Zoonami sanki Tuxemon’un başaramadığı hedefe ulaşacak gibi görünüyor
  • 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

    • Ancak “ticari kullanım yasaktır” şartı varsa, bu gerçek açık kaynak değil Source Available sayılır
  • 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

    • Ama artık mapping’in kendisi ortadan kalktığına göre, bu tuzağın ne olduğu da çok net değil
    • Değişken adlarının da telif hakkına tabi olup olmadığını merak ediyorum
  • Gerçekten daha kolay hale getirmek isteniyorsa, en iyisi kaynak kodunu modlamaya izin veren bir lisansla yayımlamak olurdu