1 poin oleh GN⁺ 18 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Minecraft 26.3 Snapshot 4 mengganti backend manajemen jendela, input, dan integrasi platform dari GLFW ke SDL3, serta memperkenalkan SDL scancode dan keycode untuk input keyboard
  • Key binding kini menggunakan posisi fisik tombol alih-alih kode per tata letak keyboard, Linux akan memprioritaskan Wayland bila memungkinkan, dan macOS mendukung jendela kandidat input native
  • Ditambahkan komponen data untuk bahan bakar Furnace dan Brewing kustom, sehingga waktu bakar, jumlah penggunaan, serta kecepatan memasak dan brewing bisa diatur dengan number provider
  • Data Pack 111.0 dan Resource Pack 92.0 membawa perubahan besar pada event klik sign, referensi loot table, trigger advancement, properti lingkungan spawn mob, pengaturan world generation, dan shader
  • Di Windows multi-monitor dan Wayland, crash pada fullscreen eksklusif telah diketahui terjadi, dan versi uji dapat merusak world sehingga harus dibackup atau dijalankan di folder terpisah

Sistem jendela dan input berbasis SDL3

  • Library manajemen jendela, input, dan integrasi platform beralih dari GLFW ke SDL3
    • Input keyboard menggunakan SDL scancode untuk posisi fisik tombol
    • Shortcut pengeditan teks yang berubah sesuai tata letak keyboard memakai SDL keycode
  • Key binding kini bekerja berdasarkan tombol fisik, bukan key code per tata letak keyboard
  • Pengaturan mouse Raw Input dihapus, dan selama bermain game selalu memakai mode mouse relatif
  • Fullscreen tanpa border kini menjadi mode fullscreen default, dan bisa berpindah antara mode tanpa border dan mode eksklusif tanpa restart
    • Di macOS, fullscreen eksklusif tidak lagi didukung
    • Ukuran minimum jendela adalah 320×240 piksel
  • Di Linux, Wayland diprioritaskan secara native bila tersedia
  • Di macOS, saat memasukkan teks dan tombol ditekan lama, popup aksen dan kandidat native akan ditampilkan

Masalah fullscreen yang diketahui

  • Fullscreen eksklusif di Windows dapat menyebabkan game crash dalam situasi tertentu, khususnya di lingkungan multi-monitor
  • Di Wayland, game akan crash saat masuk ke fullscreen eksklusif

Perubahan gameplay dan antarmuka

  • Pemain dalam mode spectator kini bisa berinteraksi dengan portal untuk berpindah
  • Armadillo tidak akan mencoba menggulung tubuhnya saat terendam cairan
  • Overlay debug kini bisa memakai skala GUI terpisah
    • Diatur dari Debug Options dengan F3 + F6
    • Nilai default Auto menjaga resolusi lebih tinggi daripada GUI biasa, sedangkan Unchanged menyamakan dengan skala GUI biasa
    • Ditambahkan juga player_speed yang menampilkan kecepatan perpindahan blok per tick pemain, serta tampilan refresh rate layar
  • Urutan mineral di creative inventory diatur ulang menjadi material tanpa tier, material tier mentah, lalu material tier olahan
    • Building Blocks diurutkan menjadi mineral tanpa tier, mineral tier olahan, lalu keluarga Copper, dengan blok Copper yang itemnya banyak ditempatkan di bagian belakang
    • Tab Natural Blocks kini disusun sebagai Overworld → Nether → End

Bahan bakar kustom dan komponen item

  • minecraft:cooking_fuel mendefinisikan bahan bakar untuk Furnace, Smoker, dan Blast Furnace
    • burn_time menentukan jumlah tick pembakaran, dan speed_multiplier menentukan kecepatan memasak dan peleburan, masing-masing lewat minecraft:number_provider
  • minecraft:brewing_fuel mendefinisikan jumlah penggunaan dan kecepatan brewing untuk bahan bakar Brewing Stand
    • Tag item lama #brewing_fuel telah dihapus dan tidak bisa lagi dipakai untuk mendaftarkan bahan bakar brewing baru
  • Recipe Smoker dan Blast Furnace kini memakai waktu memasak yang sama dengan Furnace, sementara peningkatan kecepatan ditangani oleh minecraft:cooking/speed_default dari komponen bahan bakar
  • Field waktu memasak dan bahan bakar pada Furnace, Smoker, dan Blast Furnace berubah dari short menjadi integer, dan speed_multiplier ditambahkan
  • BrewTime dan Fuel pada Brewing Stand juga berubah menjadi integer, dengan tambahan total_brew_time, total_fuel, dan speed_multiplier
  • Komponen data yang ditambahkan adalah sebagai berikut
    • minecraft:sign_text_front, minecraft:sign_text_back: menyimpan teks depan dan belakang sign serta menampilkannya di tooltip item
    • minecraft:waxed: marker tanpa field yang menunjukkan kontennya telah dilapisi wax
    • minecraft:cushion/color: menerapkan 16 warna dye pada Cushion yang sudah ditempatkan
    • minecraft:villager_food: mendefinisikan item yang bisa dimakan villager dan nilai nutrisinya
    • minecraft:mob_visibility: menetapkan rasio pengaruh equipment terhadap jarak deteksi mob dari 0.0 hingga 10.0, dan meski ditumpuk nilai visibilitas maksimum tetap tidak melebihi 10.0

Kompatibilitas sign dan data pack

  • Versi data pack naik ke 111.0
  • Perintah dan click event pada teks kustom sign kini secara default tidak dijalankan saat blok diklik, dan komponen teks pada sign baru juga tidak diinterpretasikan otomatis
    • Nilai default field baru allow_op_features adalah false, dan untuk memulihkan perilaku lama harus diatur eksplisit ke true
    • Untuk sign yang disimpan dari versi lama dan minecraft:block_entity_data yang memuat data sign, allow_op_features=true akan diterapkan
  • Layar edit sign setelah penempatan hanya ditampilkan ketika layar edit bisa dibuka dengan klik biasa, seperti saat belum diberi wax dan teks sisi depan dapat diedit
  • Sign kini menerima dan mengembalikan komponen minecraft:sign_text_front, minecraft:sign_text_back, dan minecraft:waxed
  • Blok aman yang dapat dipakai /spreadplayers untuk menempatkan pemain kini dikendalikan oleh block tag #entities_can_teleport_to

Referensi registry serta perubahan loot dan advancement

  • Tipe loot table yang memiliki registry khusus kini mendukung referensi elemen registry dan tag
    • Field elemen tunggal dapat menerima namespaced ID atau nilai inline
    • Field daftar dapat menerima nilai inline, satu atau beberapa namespaced ID, daftar nilai inline, atau ID tag #
    • Targetnya mencakup advancement, item modifier, loot table, number provider, predicate, recipe, dan slot source
  • Tipe reference lama untuk predicate, item modifier, dan slot source dihapus karena tidak lagi diperlukan
  • Berbagai field trigger advancement kini bisa menerima bukan hanya predicate inline, tetapi juga namespaced predicate ID
    • Perilaku implisit minecraft:all_of pada daftar kondisi lama dihapus, sehingga type kini wajib ditentukan
    • Berbagai field block, recipe_id, dan loot_table masing-masing berubah menjadi bentuk jamak dan mendukung satu ID, daftar, atau tag
  • conditions pada Loot Pool Entry diganti namanya menjadi condition, dan functions menjadi modifier
  • conditions pada Loot Function menjadi condition, dan function yang menunjukkan tipe fungsi diubah menjadi type
    • Daftar kondisi inline tidak lagi diterima, dan untuk perilaku yang sama harus menyatakan minecraft:all_of secara eksplisit
  • Field tipe predicate condition berubah menjadi type, dan minecraft:reference serta minecraft:block_state_property dihapus
    • minecraft:match_block yang baru memeriksa ID atau tag blok, state, NBT, komponen, dan component predicate sekaligus
  • Number provider inline kini harus selalu menyatakan type, dan tidak lagi memakai minecraft:uniform sebagai nilai default
  • Ditambahkan beberapa Vanilla number provider yang menyediakan waktu bakar per bahan bakar memasak, kecepatan dasar memasak dan brewing, serta jumlah brewing

Spawn mob dan world generation

  • Properti lingkungan baru minecraft:gameplay/natural_mob_spawns mendefinisikan spawn mob berbasis bobot per kategori serta spawn cost per entitas
    • Selama penempatan world generation, hanya Dimension dan Biome yang menerapkan properti ini
    • Modifier overlay akan memprioritaskan spawn cost entitas yang sama dan pengaturan kategori dari lapisan lebih atas
  • minecraft:gameplay/creature_world_gen_spawn_probability menetapkan probabilitas pengulangan spawn mob kategori creature selama world generation dari 0 atau lebih hingga kurang dari 1, dengan default 0.1
  • spawners, spawn_costs, dan creature_spawn_probability pada Biome dihapus dan dipindahkan ke properti lingkungan baru
  • Properti lingkungan partikel sekitar kini menginterpolasi probabilitas di antara keyframe timeline, dan mendukung modifier append yang menyambungkan item ke daftar partikel lapisan bawah
  • Di Noise Settings, pengaturan aquifer dan ore vein disusun ulang menjadi objek aquifers opsional dan daftar ore_veins
    • Jika pengaturan tidak ada, aquifer atau ore vein terkait tidak akan dibuat
    • Field density function terkait dipindahkan dari noise_router ke struktur baru
  • Ditambahkan sub, div, negate, lerp, floor, round, ceil, truncate, beardifier ke Density Function
    • Sejumlah nama argumen lama diubah menjadi value, left, right, input, dan noise
    • invert diganti namanya menjadi reciprocal
    • final_density tidak lagi menambahkan beardifier secara implisit

Grafik dan perbaikan bug utama

  • Versi resource pack naik ke 92.0
  • Ditambahkan shader yang mendukung order-independent transparency dan definisi OIT_ALWAYS_WRITE_DEPTH
  • core/integrate_depth.fsh mengintegrasikan depth buffer untuk HUD 3D dan gizmo yang selalu ditampilkan di atas ke dalam depth buffer utama
  • Masalah utama yang diperbaiki meliputi:
    • Masalah key binding dan input pada keyboard non-QWERTY serta input macOS dan CJK
    • Crash rendering peta pada Improved Transparency, serta masalah tampilan kaca, objek semi-transparan, partikel, dan batas dunia
    • Crash akibat proyektil di luar ketinggian world dan penempatan sarang lebah di ketinggian terendah
    • Masalah penyimpanan dan pemuatan heightmap world generation serta desinkronisasi posisi mob setelah tick sprint
    • Masalah penempatan Cushion, warna, nama kustom, waktu bahan bakar, dan deteksi tabrakan
    • Masalah damage dan terbang Ender Dragon, penggunaan portal oleh spectator, serta penilaian blok aman /spreadplayers

Catatan instalasi dan pengujian

  • Snapshot ini untuk Minecraft: Java Edition dan diinstal dengan mengaktifkan Snapshot di tab Installations pada Minecraft Launcher
  • Versi uji dapat merusak world, jadi harus dibackup atau dijalankan di folder berbeda dari world utama
  • Tersedia juga Minecraft server jar untuk lintas platform
  • Bug bisa dilaporkan melalui Minecraft issue tracker, dan masukan bisa dikirim lewat situs Feedback

1 komentar

 
GN⁺ 18 jam lalu
Opini Hacker News
  • Implementasi LWJGL untuk binding ini ditulis oleh anggota tim modpack GTNH, sehingga siklus vanilla→modded→vanilla kembali lengkap https://github.com/LWJGL/lwjgl3/pull/1033

    • Kalau sedikit dilebih-lebihkan, bisa dibilang GTNH lebih banyak berkontribusi pada Minecraft daripada Microsoft. Ini bukan sekadar karena saya sendiri sedikit ikut berkontribusi; tingkat perhatian dan jumlah pekerjaan yang dicurahkan memang luar biasa
    • Saya penasaran berapa banyak pengembang Minecraft saat ini yang dulu pernah menjadi modder, dan berapa banyak yang masih aktif sebagai modder
  • Baru-baru ini saya memindahkan game Tribal Trouble(https://github.com/bondolo/tribaltrouble) dari GLFW ke SDL3, dan secara umum refaktornya cukup lancar. Ada beberapa masalah pada exclusive fullscreen dan desktop fullscreen, tetapi akhirnya terselesaikan
    Saya juga membuat demo untuk menguji dan mendokumentasikan penanganan mode layar yang rumit. Gamenya memakai Java seperti Minecraft, tetapi demonya memakai C agar sesederhana mungkin

    • Tribal Trouble, sudah lama sekali tidak mendengar nama itu. Saya ingat para pengembangnya pernah mengatakan mereka memilih Java karena ingin memakai bahasa yang aneh atau tidak umum untuk pengembangan game
    • Saya penasaran apakah ada masalah dengan GLFW, atau apa alasan memilih migrasi ke SDL3
  • Exclusive fullscreen di Windows punya masalah yang diketahui dapat menghentikan game, terutama pada multi-monitor, dan di Wayland game bisa terhenti hanya dengan masuk ke mode itu. Keduanya biasanya terlihat seperti bug pemblokir yang layak menunda snapshot, jadi saya berharap diperbaiki sebelum rilis resmi

    • Snapshot adalah distribusi apa adanya dari kondisi branch utama saat ini, termasuk bug pemblokir
      Menurut saya ekspektasi stabilitas kira-kira berurutan seperti ini: rilis dukungan jangka panjang, rilis resmi, release candidate, beta, alpha, snapshot, commit yang baru saja di-merge, PR yang belum di-merge, draft PR. Bug besar bisa menunda release candidate atau beta, dan bug fatal semestinya mencegah merge itu sendiri, tetapi tidak ada alasan menunda snapshot karena bug yang lolos CI lalu di-merge
      Snapshot lebih mirip pemotongan rutin dari kondisi saat ini agar pengguna bisa menjalankan dan memberi feedback tanpa harus membangun main sendiri
    • Kalau rilis resmi, bisa saja ditunda, tetapi tidak ada alasan menunda snapshot. Harus dirilis dalam kondisi saat ini agar lewat telemetri bisa diketahui seberapa sering masalah yang sudah diketahui itu terjadi, dan agar masalah yang belum diketahui juga dapat ditemukan sebelum rilis resmi
      Snapshot tidak pernah menjanjikan bebas bug; justru sebaliknya yang menjadi asumsi
    • Minecraft kemungkinan sudah lama memakai borderless fullscreen, kecuali diatur lain secara terpisah. Selama sekitar 10 tahun terakhir, banyak platform, layanan, dan aplikasi telah meninggalkan exclusive fullscreen
    • Sekarang rendering ke jendela fullscreen lebih umum daripada exclusive fullscreen. Window manager biasanya menerapkan optimisasi yang sama pada jendela fullscreen terdepan seperti yang dulu hanya diterapkan pada mode exclusive
    • Ini masalah yang bisa terjadi karena snapshot, dan besar kemungkinan akan diperbaiki di snapshot berikutnya
  • Saya penasaran, bagaimana seorang ayah teknisi yang sama sekali tidak tahu Minecraft harus membangun server keluarga pada 2026. Anak-anak saat ini bermain di iPad dan sesekali di MacBook lama serta PC Windows

    • Minecraft punya dua edisi, Java dan Bedrock. Versi mobile, konsol, dan Windows Store berbasis Bedrock, sedangkan yang diunduh langsung dari situs web adalah edisi Java
      Anda bisa menjalankan server Java standar dan memakai Geyser untuk menerjemahkan protokol Bedrock secara real-time. Klien Bedrock yang sangat dibatasi mungkin memerlukan cara bypass, tetapi Anda bisa mengelolanya dengan server Java sebagai pusat karena opsinya lebih banyak
    • Banyak panduan tuning JVM Minecraft di internet sudah usang atau keliru, jadi sebaiknya diabaikan
      Cukup gunakan JVM terbaru, naikkan memori maksimum setinggi yang masih dapat diterima, lalu gunakan ZGC. Ada juga panduan yang mengubah banyak flag tanpa dasar, atau memasukkan pengaturan yang saling bertentangan seperti ukuran eden region dan target waktu jeda
      ZGC memiliki latensi sangat rendah dan penurunan performanya makin kecil dengan heap yang lebih besar, tetapi sebaiknya tetap di bawah 32GB agar kompresi header objek tetap aktif. JVM terbaru juga memperbaiki penggunaan memori dan performa secara umum
    • Ikuti cara menyiapkan server vanilla edisi Java. Edisi Java hanya berjalan di Windows, macOS, dan Linux, tetapi menurut saya bug-nya lebih sedikit dan lebih baik daripada edisi Bedrock
      Jika butuh performa lebih, pasang fabric dan lithium. Mod seperti Paper, Spigot, dan Purpur sebaiknya dihindari karena bisa merusak fasilitas otomatisasi
    • Minecraft di ponsel dan tablet lebih tertutup dan terbatas daripada edisi Java, sehingga pilihannya lebih sedikit
      Saya menggunakan itzg/docker-minecraft-server secara stabil selama bertahun-tahun, dan saya suka karena image-nya menangani semuanya tanpa perlu memasang dependensi satu per satu. Ada juga image server Bedrock, tetapi saya tidak berhasil membuatnya berjalan dengan benar
      Cara termudah untuk mengoperasikannya adalah semua orang memakai edisi Java di Windows, Mac, atau Linux; jika tidak, ada opsi membayar Realms sebagai server hosting
    • Mengingat preferensi anak-anak untuk bermain di iPad, Realms juga layak dilihat. Seingat saya sekitar 7 dolar untuk server 10 orang, tetapi langganan Java dan Bedrock terpisah, dan paket harganya juga terfragmentasi dalam beberapa tingkat
      Bergantung pada tujuan server keluarga, ini mungkin tidak cocok, tetapi ini cara termudah agar anak-anak bisa bermain bersama dengan cepat dan sederhana. Saya juga pernah melihat anak-anak yang lama bersikeras memakai Bedrock lalu setelah pindah ke Java menyesal tidak melakukannya lebih cepat
  • Icculus mengunggah video bagus tentang mem-porting game dari SDL2 ke SDL3, dan video port Doom ada di sini: https://www.youtube.com/watch?v=ixdeGhsoxy8

  • Mengejutkan melihat Minecraft makin terlihat seperti game engine tersendiri alih-alih sekadar game biasa

  • Saya penasaran apakah alasan meninggalkan GLFW sudah didokumentasikan. Karena ada proyek yang memakai GLFW, saya selalu bertanya-tanya apakah SDL adalah pilihan yang lebih baik

    • Pada pembaruan ini, dukungan Wayland jadi berfungsi tanpa pekerjaan tambahan. Sebelumnya perlu workaround, dan meski diterapkan, masalah baru terus muncul, tetapi saya tidak terlalu memedulikannya karena kebanyakan sudah puas menjalankannya lewat XWayland
      SDL3 pada dasarnya punya dukungan Wayland yang solid. Di Minecraft, GLFW hanya dipakai untuk pembuatan jendela, ikon taskbar, fullscreen, dan input, sementara sisanya ditangani dengan OpenGL mentah, jadi peralihannya juga mudah. Sekarang bahkan mendukung Vulkan, sehingga stack yang sepenuhnya modern bisa digunakan di desktop Linux dan Steam Deck
    • SDL mendukung mobile sedangkan GLFW tidak, jadi mungkin tujuannya menyatukan codebase per platform
      SDL3 juga berjalan di Android 4.2, dan saya pernah membuat aplikasi dengan SDL3 dan ImGui tanpa Java
    • Salah satu alasannya adalah dukungan input method (IME)
    • SDL lebih mirip lapisan platform yang bisa dipakai hampir di mana saja. Ia menyediakan jendela, grafis, audio, input, jaringan, dan thread, sedangkan GLFW hanya menyediakan jendela, konteks grafis, dan input, jadi library lain harus disiapkan sendiri
      Ini mungkin bukan perbedaan besar untuk semua proyek, tetapi SDL menyediakan lebih banyak fitur dan portabilitasnya juga lebih tinggi
    • Bahkan tanpa OpenGL atau Vulkan, game 2D lengkap bisa dibuat hanya dengan SDL API
  • Game ritme osu! juga baru-baru ini beralih dari SDL2 ke SDL3, dan performa serta latensinya meningkat besar. Adopsi SDL3 tampaknya agak lambat, dan cukup mengejutkan juga bahwa Minecraft selama ini memakai GLFW
    Khususnya setelah beralih ke SDL3, lag yang muncul saat klien Discord dibiarkan terbuka ketika menjalankan osu! hilang; saya ingat ini dari video pengembangan di YouTube

    • Di beberapa distro Linux, sdl2-compat dan sdl12-compat adalah implementasi default untuk SDL2 dan 1.2, jadi banyak kasus yang sebenarnya sudah menggunakan SDL3 secara tidak langsung. Berkat itu, lebih banyak aplikasi berjalan native di Wayland dengan latensi lebih rendah daripada XWayland, dan dukungan controller juga membaik
      Ubuntu 24.04 tidak menyertakan SDL3 sejak awal, dan karena SDL3 ternyata lebih baru dari yang dikira, ini tampaknya salah satu alasan laju adopsinya lebih rendah dari harapan
    • osu! mendukung tiga OS desktop utama sekaligus iOS dan Android, dan karena mencoba mempertahankan fitur seperti Wayland secara native, peralihan ke SDL3 memakan waktu sekitar 2 tahun. Peralihan kali ini tampaknya untuk pertama kalinya benar-benar mencapai tahap akhir
    • Di SDL3, banyak API berubah sehingga adopsinya lebih sulit, terutama jika lewat library binding, bebannya jadi lebih besar
  • SDL2 sudah tampak menua, terutama dalam abstraksi GPU API termasuk Vulkan dan Metal, jadi peralihan ke SDL3 masuk akal. Saya juga penasaran apakah masalah lama di Java Edition Linux seperti input lag dan masalah Alt+Tab akan terselesaikan dengan perubahan lapisan jendela dan input

    • Target peralihan sebenarnya bukan SDL2, melainkan GLFW, jadi kalau memilih yang baru, wajar saja memilih SDL3
  • Untuk mendukung mod secara aktif, tampaknya lebih baik memakai bahasa yang mudah didekompilasi dan dimodifikasi saat runtime seperti Java atau C#, atau menggunakan JVM dan .NET CLR
    Jika mempertimbangkan para modder saat melakukan perubahan internal, pada dasarnya bisa mendapat API modding yang bagus tanpa biaya tambahan

    • Yang benar-benar dibutuhkan game dengan sangat banyak mod hanyalah basis pengguna yang cukup besar. Bagi modder yang berdedikasi, sedikit patch biner atau injeksi DLL bukanlah hambatan