1 puan yazan GN⁺ 23 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • Minecraft 26.3 Snapshot 4, pencere yönetimi·girdi·platform entegrasyonu arka ucunu GLFW'den SDL3'e değiştiriyor ve klavye girdisine SDL scancode ile keycode ekliyor
  • Tuş atamaları, klavye düzenine göre değişen kodlar yerine fiziksel tuş konumunu kullanıyor; Linux'ta mümkün olduğunda Wayland'ı önceliklendiriyor ve macOS'ta yerel girdi aday penceresini destekliyor
  • Özel fırın·demleme yakıtları için veri bileşenleri eklendi; yanma süresi, kullanım sayısı, pişirme·demleme hızı number provider ile ayarlanabiliyor
  • Veri paketi 111.0 ve kaynak paketi 92.0'da tabela tıklama olayları, loot table referansları, advancement tetikleyicileri, mob spawn ortam özellikleri, arazi oluşturma ayarları ve shader'lar büyük ölçüde değişti
  • Windows çoklu monitör ve Wayland'da exclusive fullscreen çökmesi bilinen bir sorun; test sürümü dünyaları bozabileceği için yedek alınmalı veya ayrı bir klasörde çalıştırılmalı

SDL3 tabanlı pencere·girdi sistemi

  • Pencere yönetimi, girdi ve platform entegrasyonu kütüphanesi GLFW'den SDL3'e geçirildi
    • Klavye girdisi, fiziksel tuş konumu için SDL scancode kullanıyor
    • Klavye düzenine göre değişen metin düzenleme kısayollarında SDL keycode uygulanıyor
  • Tuş atamaları, klavye düzenine özgü tuş kodları yerine fiziksel tuşlara göre çalışıyor
  • Raw Input fare ayarı kaldırıldı ve oyun sırasında her zaman göreli fare modu kullanılıyor
  • Kenarlıksız tam ekran artık varsayılan tam ekran modu; kenarlıksız ve exclusive mod arasında yeniden başlatmadan geçiş yapılabiliyor
    • macOS'ta exclusive fullscreen artık desteklenmiyor
    • Minimum pencere boyutu 320×240 piksel
  • Linux'ta mevcut olduğunda Wayland yerel olarak öncelikli kullanılıyor
  • macOS'ta metin girerken bir tuşa uzun basıldığında yerel aksan·aday açılır penceresi gösteriliyor

Bilinen tam ekran sorunları

  • Windows'ta exclusive fullscreen belirli durumlarda, özellikle çoklu monitör ortamlarında, oyunun çökmesine neden olabilir
  • Wayland'da exclusive fullscreen'e girildiğinde oyun çöküyor

Oynanış ve arayüz değişiklikleri

  • Seyirci modundaki oyuncular portallarla etkileşime girip ışınlanabiliyor
  • Armadillo, sıvıya battığında yuvarlanmaya çalışmıyor
  • Debug overlay için ayrı bir GUI ölçeği uygulanabiliyor
    • F3 + F6 altındaki Debug Options'tan ayarlanıyor
    • Varsayılan Auto, normal GUI'den daha yüksek çözünürlüğü koruyor; Unchanged ise normal GUI ölçeğiyle eşleşiyor
    • Oyuncunun tik başına blok hareket hızını gösteren player_speed ve ekran yenileme hızı göstergesi de eklendi
  • Creative envanterindeki minerallerin sırası tiersiz malzemeler, işlenmemiş tier malzemeleri ve işlenmiş tier malzemeleri olacak şekilde yeniden düzenlendi
    • Yapı blokları tiersiz mineraller, işlenmiş tier mineralleri ve Copper serisi sırasıyla listeleniyor; çok sayıda öğe içeren Copper blokları daha arkaya yerleştirildi
    • Natural Blocks sekmesi Overworld → Nether → End sırasına göre düzenlendi

Özel yakıtlar ve öğe bileşenleri

  • minecraft:cooking_fuel, Furnace, Smoker ve Blast Furnace için yakıtı tanımlar
    • burn_time, yanma tik sayısını; speed_multiplier ise pişirme·eritme hızını minecraft:number_provider ile belirtir
  • minecraft:brewing_fuel, Brewing Stand yakıtının kullanım sayısını ve demleme hızını tanımlar
    • Mevcut #brewing_fuel öğe etiketi kaldırıldı; yeni demleme yakıtı kaydında artık kullanılamaz
  • Smoker ve Blast Furnace tarifleri Furnace ile aynı pişirme süresini kullanır; hız artışı ise yakıt bileşenindeki minecraft:cooking/speed_default tarafından sağlanır
  • Furnace·Smoker·Blast Furnace için pişirme ve yakıt süresi alanları short'tan integer'a çevrildi ve speed_multiplier eklendi
  • Brewing Stand'in BrewTime ve Fuel alanları da integer oldu; total_brew_time, total_fuel, speed_multiplier eklendi
  • Eklenen veri bileşenleri şunlar:
    • minecraft:sign_text_front, minecraft:sign_text_back: tabelanın ön·arka metnini depolar ve öğe ipucunda gösterir
    • minecraft:waxed: içeriğin balmumuyla kaplandığını gösteren, alanı olmayan bir işaretleyicidir
    • minecraft:cushion/color: yerleştirilmiş Cushion'a 16 boya rengini uygular
    • minecraft:villager_food: köylülerin yiyebileceği öğeleri ve besin değerlerini tanımlar
    • minecraft:mob_visibility: ekipmanın mob algılama mesafesine etkisini 0.0~10.0 aralığında belirtir; üst üste gelse bile maksimum görüş değeri 10.0'ı aşmaz

Tabelalar ve veri paketi uyumluluğu

  • Veri paketi sürümü 111.0'a yükseldi
  • Tabela özel metnindeki komutlar ve tıklama olayları varsayılan olarak blok tıklandığında çalışmaz; yeni tabelalardaki metin bileşenleri de otomatik olarak yorumlanmaz
    • Yeni allow_op_features alanının varsayılan değeri false; önceki davranışı geri getirmek için açıkça true olarak ayarlanması gerekir
    • Önceki sürümlerde kaydedilen tabelalara ve tabela verisi içeren minecraft:block_entity_data için allow_op_features=true uygulanır
  • Yerleştirme sonrası tabela düzenleme ekranı yalnızca balmumu uygulanmamışsa ve ön yüz metni düzenlenebiliyorsa, yani normal tıklamayla düzenleme ekranı açılabiliyorsa gösterilir
  • Tabelalar minecraft:sign_text_front, minecraft:sign_text_back, minecraft:waxed bileşenlerini alıp verir
  • /spreadplayers komutunun oyuncuları yerleştirebileceği güvenli bloklar #entities_can_teleport_to blok etiketiyle kontrol edilir

Registry referansları ve loot·advancement değişiklikleri

  • Ayrı bir registry'si olan loot table türleri artık registry öğesi ve etiket referanslarını destekliyor
    • Tek öğeli alanlar namespaced ID veya satır içi değer alabilir
    • Liste alanları satır içi değer, tekil·çoğul namespaced ID, satır içi değer listesi veya # etiket ID'si alabilir
    • Kapsam: advancement, item modifier, loot table, number provider, predicate, recipe, slot source
  • Predicate, item modifier ve slot source için mevcut reference türü gereksiz hale geldiği için kaldırıldı
  • Advancement tetikleyicilerindeki çeşitli alanlar artık satır içi predicate'in yanı sıra namespaced predicate ID de alabiliyor
    • Mevcut koşul listesinin örtük minecraft:all_of davranışı kaldırıldı; artık type zorunlu
    • Birden fazla block, recipe_id, loot_table alanı çoğul hale getirildi ve tekil ID, liste veya etiketi destekliyor
  • Loot Pool Entry içindeki conditions alanı condition, functions alanı ise modifier olarak yeniden adlandırıldı
  • Loot Function'daki conditions alanı condition, işlev türünü belirten function alanı ise type olarak değiştirildi
    • Satır içi koşul listeleri artık kabul edilmiyor; aynı davranış için minecraft:all_of açıkça belirtilmeli
  • Predicate'in tür alanı condition, type olarak değiştirildi; minecraft:reference ve minecraft:block_state_property kaldırıldı
    • Yeni minecraft:match_block, blok ID·etiketi, durum, NBT, bileşenler ve bileşen predicate'lerini birlikte denetler
  • Satır içi number provider artık type alanını her zaman açıkça belirtmeli; varsayılan minecraft:uniform artık kullanılmıyor
  • Pişirme yakıtlarına göre yanma süresi ile varsayılan pişirme·demleme hızları ve demleme kullanım sayılarını sağlayan çeşitli Vanilla number provider'lar eklendi

Mob spawn ve dünya oluşturma

  • Yeni ortam özelliği minecraft:gameplay/natural_mob_spawns, kategori bazlı ağırlıklı mob spawn'ını ve varlık bazlı spawn cost'u tanımlar
    • Dünya oluşturma yerleştirmesi sırasında bu özellik yalnızca Dimension ve Biome tarafından uygulanır
    • overlay değiştiricisi, üst katmandaki kategori ayarlarını ve aynı varlık için spawn cost'u öncelikli uygular
  • minecraft:gameplay/creature_world_gen_spawn_probability, dünya oluşturma sırasında creature kategorisi mob spawn tekrar olasılığını 0 ile 1'den küçük olacak şekilde tanımlar; varsayılan değer 0.1'dir
  • Biome içindeki spawners, spawn_costs, creature_spawn_probability kaldırıldı ve yeni ortam özelliğine taşındı
  • Ortam parçacık özelliği, zaman çizelgesi keyframe'leri arasındaki olasılığı enterpole eder ve alt katman parçacık listesine öğe ekleyen append değiştiricisini destekler
  • Noise Settings içinde aquifer ve ore vein ayarları sırasıyla isteğe bağlı aquifers nesnesi ve ore_veins listesi olarak yeniden yapılandırıldı
    • Ayar yoksa ilgili aquifer veya ore vein oluşturulmaz
    • İlgili density function alanları noise_router içinden yeni yapıya taşındı
  • Density Function'a sub, div, negate, lerp, floor, round, ceil, truncate, beardifier eklendi
    • Çeşitli mevcut bağımsız değişken adları value, left, right, input, noise olarak değiştirildi
    • invert, reciprocal olarak yeniden adlandırıldı
    • final_density içine artık örtük olarak beardifier eklenmiyor

Grafikler ve önemli hata düzeltmeleri

  • Kaynak paketi sürümü 92.0'a yükseldi
  • Order-independent transparency desteği olan shader'lar ve OIT_ALWAYS_WRITE_DEPTH tanımı eklendi
  • core/integrate_depth.fsh, 3D HUD ile her zaman üstte gösterilen gizmo'nun depth buffer'ını ana depth buffer'a entegre eder
  • Düzeltilen başlıca sorunlar şunlar:
    • QWERTY dışı klavyeler ile macOS·CJK girdisine ilişkin tuş atama ve girdi sorunları
    • Improved Transparency'de harita render çökmesi ile cam·yarı saydam nesneler·parçacıklar·dünya sınırı gösterim sorunları
    • Dünya yüksekliği dışındaki mermiler ve en düşük yükseklikte yerleştirilen arı kovanlarının neden olduğu çökmeler
    • Dünya oluşturma heightmap kaydetme·yükleme sorunları ve tick sprint sonrası mob konumu eşzamanlama bozulması
    • Cushion yerleştirme, renk, özel ad, yakıt süresi ve çarpışma algılama sorunları
    • Ender Dragon hasarı·uçuşu, seyircinin portal kullanımı ve /spreadplayers güvenli blok tespiti sorunları

Kurulum ve test uyarıları

  • Snapshot, Minecraft: Java Edition içindir; Minecraft Launcher içindeki Installations sekmesinden Snapshot etkinleştirilerek kurulur
  • Test sürümü dünyaları bozabileceği için yedek alınmalı veya varsayılan dünyalardan farklı bir klasörde çalıştırılmalıdır
  • Platformlar arası Minecraft server jar da sunuluyor
  • Hatalar Minecraft issue tracker, geri bildirimler ise Feedback sitesi üzerinden gönderilebilir

1 yorum

 
Hacker News yorumları
  • Bu binding’in LWJGL implementasyonu, GTNH mod paketi ekibinden bir üye tarafından yazıldı; böylece vanilla→modded→vanilla döngüsü yeniden tamamlanmış oldu https://github.com/LWJGL/lwjgl3/pull/1033

    • Biraz abartıyla, GTNH’nin Minecraft’a Microsoft’tan daha fazla katkı yaptığını söyleyebiliriz. Bunu sadece ben de biraz katkıda bulunduğum için söylemiyorum; harcanan özen ve emek miktarı şaşırtıcı düzeyde
    • Şu anki Minecraft geliştiricilerinden kaçının geçmişte modder olduğunu ve kaçının hâlâ modder olarak aktif olduğunu merak ediyorum
  • Yakın zamanda Tribal Trouble oyununu (https://github.com/bondolo/tribaltrouble) GLFW’den SDL3’e geçirdim; genel olarak sorunsuz bir refactoring oldu. Exclusive fullscreen ve desktop fullscreen modlarında birkaç sorun vardı ama sonunda çözdüm
    Zorlu ekran modu işlemlerini test edip belgelendirmek için bir demo da yazdım. Oyun Minecraft gibi Java, ama demoyu olabildiğince basit tutmak için C kullandım

    • Tribal Trouble adını gerçekten çok uzun zamandır duymamıştım. Geliştiricilerin oyun geliştirmede garip ya da pek yaygın olmayan bir dil kullanmak istedikleri için Java’yı seçtiklerini söylediklerini hatırlıyorum
    • GLFW’de bir sorun mu vardı, SDL3’e geçişi hangi nedenle seçtiniz merak ediyorum
  • Windows’ta exclusive fullscreen, özellikle çoklu monitörlerde oyunu bozabiliyor; Wayland’de ise sadece bu moda girmek bile oyunu bozuyor diye bilinen bir sorun var. İkisi de genelde snapshot’ı ertelemeye yetecek blocker bug gibi görünüyor; umarım resmi sürümden önce düzeltilir

    • Snapshot, blocker bug’lar dâhil mevcut main branch’in durumunu olduğu gibi dağıtmak demektir
      Kararlılık beklentisi sırasını uzun süreli destek sürümü, resmi sürüm, release candidate, beta, alfa, snapshot, az önce merge edilmiş commit, merge edilmemiş PR, taslak PR gibi görüyorum. Büyük bir bug varsa release candidate ya da beta ertelenmeli; kritik bir bug varsa merge’in kendisi engellenmeli. Ama CI’dan geçip merge edilmiş bir bug yüzünden snapshot’ı ertelemek için sebep yok
      Snapshot daha çok, kullanıcıların main’i kendileri build etmeden çalıştırıp geri bildirim verebilmesi için mevcut durumun düzenli aralıklarla kesilip dağıtılmasıdır
    • Resmi sürümse ertelenebilir ama snapshot’ı ertelemek için bir neden yok. Mevcut hâliyle dağıtılmalı ki bilinen sorunların ne kadar sık yaşandığı telemetriyle anlaşılabilsin ve henüz bilinmeyen sorunlar da resmi sürümden önce bulunabilsin
      Snapshot’ın hatasız olacağı hiçbir zaman vaat edilmedi; hatta varsayım bunun tam tersi
    • Minecraft, ayrıca ayarlanmadığı sürece uzun zamandır kenarlıksız tam ekran kullanıyor olmalı. Son 10 yılı aşkın sürede birçok platform, servis ve uygulama exclusive fullscreen’i terk etti
    • Günümüzde exclusive fullscreen yerine tam ekran pencereyle render etmek daha yaygın. Pencere yöneticisi genellikle en öndeki tam ekran pencereye de geçmişte yalnızca exclusive mode için uygulanan optimizasyonların aynısını uygular
    • Snapshot olduğu için böyle sorunlar yaşanabilir ve bir sonraki snapshot’ta düzeltilme ihtimali yüksek
  • Minecraft’ı hiç bilmeyen teknik bir baba, 2026’da aile için bir sunucuyu nasıl kurmalı merak ediyorum. Çocuklar şu anda iPad’de ve ara sıra eski bir MacBook ile Windows PC’de oynuyor

    • Minecraft’ın Java ve Bedrock olmak üzere iki sürümü var. Mobil, konsol ve Windows Store sürümleri Bedrock tabanlı; web sitesinden doğrudan indirilen ise Java sürümü
      Standart bir Java sunucusu çalıştırıp Geyser ile Bedrock protokolünü gerçek zamanlı dönüştürebilirsiniz. Kısıtları fazla olan Bedrock istemcileri için geçici çözümler gerekebilir, ama daha fazla seçeneğe sahip Java sunucusunu merkeze alarak yönetebilirsiniz
    • İnternetteki Minecraft JVM tuning yönergeleri çoğu zaman eski ya da yanlış olduğundan bunları görmezden gelmek daha iyi
      Güncel bir JVM kullanıp maksimum belleği kabul edilebilir ölçüde yükselttikten sonra ZGC kullanmak yeterli. Birçok flag’i dayanak olmadan ayarlayan ya da Eden alanı boyutu ile hedef duraklama süresi gibi çelişen ayarları birlikte öneren yönergeler de var
      ZGC’nin gecikmesi çok düşüktür ve heap büyüdükçe performans düşüşü azalır; ancak object header compression’ı korumak için 32 GB’nin altında tutmak daha iyi. Güncel JVM bellek kullanımını ve genel performansı da iyileştirir
    • Java Edition vanilla sunucu kurulum rehberi takip edilebilir. Java Edition yalnızca Windows, macOS ve Linux’ta çalışır ama Bedrock Edition’a göre daha az bug’lı ve daha iyi olduğunu düşünüyorum
      Daha fazla performans gerekirse fabric ve lithium kurulabilir. Paper, Spigot, Purpur gibi modlardan kaçınmak daha iyi; otomasyon düzeneklerini bozabilirler
    • Telefon ve tabletlerdeki Minecraft, Java Edition’a göre daha kapalı ve kısıtlı olduğundan seçenekler azalır
      itzg/docker-minecraft-server’ı yıllardır stabil şekilde kullandım; bağımlılıkları tek tek kurmak gerekmemesi, imajın hepsini halletmesi hoşuma gitti. Bedrock sunucu imajı da var ama düzgün çalıştırmayı başaramadım
      En kolay işletim için herkesin Windows, Mac veya Linux’ta Java Edition kullanması gerekir; aksi hâlde hosted sunucu olan Realms’e ödeme yapmak bir seçenek
    • Çocukların iPad’de oynama tercihi düşünülünce Realms’e de bakmaya değer. Bildiğim kadarıyla yaklaşık 7 dolara 10 kişilik sunucu sunuyor, ancak Java ve Bedrock abonelikleri ayrılmış durumda ve tarifeler de birkaç kademeye bölünmüş
      Aile sunucusunun amacına göre uygun olmayabilir ama çocukların hızlı ve basit şekilde birlikte oynaması için en kolay yol bu. Uzun süre yalnızca Bedrock’ta ısrar edip Java’ya geçtikten sonra daha erken geçmediğine pişman olan çocuklar da gördüm
  • Icculus, bir oyunu SDL2’den SDL3’e taşıma konusunda harika bir video yayımladı; Doom taşıma videosu burada: https://www.youtube.com/watch?v=ixdeGhsoxy8

    • Chocolate Doom’un SDL3’e taşındığını, üstelik bunu Icculus’un bizzat yaptığını bilmiyordum. Bildiğim Doom portları arasında Woof! zaten geçiş yapmış durumda: https://github.com/fabiangreffrath/woof
  • Minecraft’ın basit bir oyundan giderek kendine özgü bir oyun motoruna daha çok benzemesi şaşırtıcı

  • GLFW’den ayrılma nedeninin belgelenip belgelenmediğini merak ediyorum. GLFW kullanan bir projem olduğu için SDL’in daha iyi bir seçenek olup olmadığını sürekli düşünüyorum

    • Bu güncellemede Wayland desteği ek bir çalışma gerektirmeden çalışır hale geldi. Önceden geçici çözümler gerekiyordu; uygulayınca da sürekli yeni sorunlar çıkıyordu ama çoğu kişi XWayland ile çalıştırmaktan memnun olduğu için pek önemsenmiyordu
      SDL3’ün Wayland desteği varsayılan olarak sağlam. Minecraft’ta GLFW yalnızca pencere oluşturma, görev çubuğu simgesi, tam ekran ve giriş için kullanılıyor; geri kalanı ham OpenGL ile işlendiğinden geçiş de kolay olmuş. Artık Vulkan’ı da desteklediği için Linux masaüstü ve Steam Deck’te tamamen modern bir yığın kullanılabiliyor
    • SDL mobil platformları desteklerken GLFW desteklemediği için platforma özel kod tabanlarını birleştirmeye çalışıyor olabilirler
      SDL3, Android 4.2’de bile çalışıyor; Java kullanmadan SDL3 ve ImGui ile uygulama yaptığım da oldu
    • Nedenlerden biri de giriş yöntemi düzenleyicisi (IME) desteği
    • SDL, neredeyse her yerde kullanılabilen bir platform katmanına daha yakın. Pencere, grafik, ses, giriş, ağ ve iş parçacıklarının hepsini sağlar; GLFW ise yalnızca pencere, grafik bağlamı ve giriş sağlar, bu yüzden geri kalan kütüphaneleri sizin hazırlamanız gerekir
      Her proje için büyük bir fark olmayabilir ama SDL daha fazla özellik sunuyor ve taşınabilirliği de daha yüksek
    • OpenGL veya Vulkan olmadan da yalnızca SDL API’siyle eksiksiz bir 2D oyun yapılabilir
  • Ritim oyunu osu! da yakın zamanda SDL2’den SDL3’e geçerek performans ve gecikme süresinde büyük iyileşme sağladı. SDL3’ün benimsenmesi biraz yavaş görünüyor; Minecraft’ın şimdiye kadar GLFW kullanmış olması da şaşırtıcı
    Özellikle SDL3’e geçişten sonra osu! çalışırken Discord istemcisi açık olduğunda yaşanan gecikmenin ortadan kalktığını, bunu bir YouTube geliştirici videosunda gördüğümü hatırlıyorum

    • Bazı Linux dağıtımlarında sdl2-compat ve sdl12-compat, SDL2 ve 1.2’nin varsayılan uygulaması olduğundan çoğu durumda zaten dolaylı olarak SDL3 kullanılıyor. Bu sayede daha fazla uygulama, XWayland’e kıyasla daha düşük gecikmeli Wayland üzerinde yerel olarak çalışıyor ve kontrolcü desteği de iyileşiyor
      Ubuntu 24.04’e SDL3 baştan dahil edilmemişti; SDL3 beklenenden daha yeni olduğu için benimseme hızının beklenenden düşük görünmesinin nedenlerinden biri bu olabilir
    • osu!, üç büyük masaüstü işletim sisteminin yanı sıra iOS ve Android’i destekliyor; Wayland gibi özellikleri de yerel tutmaya çalıştığı için SDL3’e geçişi yaklaşık 2 yıl sürdü. Bu geçiş ilk kez gerçekten son aşamaya ulaşmış gibi görünüyor
    • SDL3’te birçok API değiştiği için benimsemek daha zor; özellikle binding kütüphaneleri üzerinden kullanıldığında yük artıyor
  • SDL2, özellikle Vulkan ve Metal’i de içeren GPU API soyutlaması konusunda yaşını belli ediyordu; bu yüzden SDL3’e geçiş mantıklı. Java sürümünün Linux’ta uzun süredir yaşadığı giriş gecikmesi ve Alt+Tab sorunlarının da pencere ve giriş katmanındaki değişiklikle çözülüp çözülmeyeceğini merak ediyorum

    • Asıl geçiş hedefi SDL2 değil GLFW olduğundan, yeni bir seçim yapılacaksa doğal olarak SDL3’ün seçilmesi beklenir
  • Modları etkin biçimde desteklemek için Java veya C# gibi tersine derlemesi ve çalışma zamanında değiştirmesi kolay diller, ya da JVM ve .NET CLR kullanmak daha iyi görünüyor
    İç değişiklikler yapılırken mod geliştiricileri de düşünülürse, neredeyse ek maliyet olmadan harika bir modlama API’si elde edilebilir

    • Çok fazla modu olan bir oyun için gerçekten gerekli olan tek şey yeterince büyük bir kullanıcı tabanı. Kendini adamış mod geliştiriciler için biraz ikili yama veya DLL enjeksiyonu engel değildir