Minecraft Java Edition 26.3 Snapshot 4 轉換至 SDL3

Minecraft Java Edition 26.3 Snapshot 4 轉換至 SDL3

TL;DR – 變更內容與重要性

Minecraft Java Edition 的 26.3 Snapshot 4 用 SDL3 取代了長期使用的 GLFW 後端,負責視窗管理、輸入處理與平台整合。此切換讓引擎底層程式碼更現代化、提升跨平台一致性,並啟用實體鍵碼等新輸入功能,同時帶來大量資料包、戰利品表與世界生成的更新。


1. SDL3 取代 GLFW – 技術影響

直接後果

  • 視窗與輸入:所有視窗建立、全螢幕處理以及滑鼠/鍵盤輸入現在皆透過 SDL3 而非 GLFW。鍵盤處理使用 SDL 實體鍵碼(scancodes)對應實際鍵位,並使用 SDL 鍵碼(keycodes)處理依佈局而異的快捷鍵。
  • 全螢幕行為:無邊框全螢幕成為預設;在無邊框與排他全螢幕模式之間切換不再需要重新啟動。排他全螢幕仍屬實驗性功能——在 Windows 多螢幕環境以及 Wayland 上會當機。
  • 平台整合:Linux 在可用時會優先使用原生 Wayland;macOS 的排他全螢幕支援已移除。

為什麼選 SDL3?

Hacker News 上的評論指出,SDL3 的 LWJGL 綁定是由 GTNH 模組包開發者貢獻的,完成了「原版 → 模組 → 原版」的循環。SDL3 的 API 因其乾淨的設計受到讚賞,其他遊戲(例如 osu!)在從 SDL2 轉至 SDL3 後也報告了延遲降低。雖然 Mojang 並未正式說明原因,社群普遍認為 SDL3 提供了比日漸老舊的 GLFW 更現代、持續維護的基礎。

"SDL always had a great API design, but in SDL3... Goddamnn!" – hackernews comment


2. 新的遊戲功能與 UI 調整

遊戲新增項目

  • 觀察者傳送門 – 觀察者模式的玩家現在可以與傳送門互動以傳送。
  • 自訂熔爐燃料 – 新的 minecraft:cooking_fuelminecraft:brewing_fuel 元件允許資料包定義自訂燃燒時間與速度倍率。
  • 告示牌文字元件minecraft:sign_text_frontminecraft:sign_text_back 會在物品提示中儲存告示牌文字;點擊事件預設關閉,可透過 allow_op_features 標誌恢復舊行為。
  • 村民食物minecraft:villager_food 元件定義了村民可食用物品的營養值。

UI 變更

  • 移除「原始輸入」滑鼠設定;滑鼠現在始終使用相對模式。
  • 鍵位綁定現在參照實體鍵位,修正了依鍵盤佈局產生的映射錯誤。
  • 最小視窗尺寸改為 320 × 240 px。
  • 偵錯覆蓋層新增獨立的 GUI 縮放、玩家速度讀取以及刷新率顯示。
  • 創造模式物品欄排序重新安排,先顯示非階層礦物,後顯示有階層的物品。

3. 資料包、戰利品表與條件式徹底改寫

版本提升

  • 資料包版本 → 111.0
  • 資源包版本 → 92.0

支援註冊表的戰利品表

  • 戰利品表類型現在接受註冊表元素與標籤引用,允許以內嵌值、命名空間 ID 或以 # 為前綴的標籤形式提供大多數欄位。
  • 已淘汰的條件式、物品修飾器與槽位來源的舊式引用類型已被移除。

條件式與數值提供者的擴充

  • 新增原版條件式如 minecraft:block/fast_cookingminecraft:match_block,取代舊的 block_state_property 類型。
  • 數值提供者現在必須明確指定 type 欄位;許多新提供者(例如 minecraft:cooking/time_coalminecraft:brewing/speed_default)會公開自訂燃料的燃燒時間與速度資料。

4. 世界生成與密度函式的精緻化

  • 環境屬性 取代了生物群系中的 spawner 與 spawn‑cost 欄位,將怪物生成設定集中管理。
  • 特徵類型 nether_forest_vegetationtwisting_vinesweeping_vines 已被移除。
  • 水源與礦脈的噪聲路由欄位重新構造為獨立的 aquifersore_veins 物件,並以明確的密度函式決定放置邏輯。
  • 新增密度函式運算子(subdivnegatelerpfloorceilroundtruncatebeardifier),擴充了地形塑形工具箱。

5. 已知問題與穩定性說明

  • 排他全螢幕當機 – 在 Windows(尤其是多螢幕設定)與 Wayland 進入排他全螢幕時可能會當機。
  • macOS 排他全螢幕 – 已不再支援。
  • 最小視窗尺寸 – 現在強制最小 320 × 240 像素,修正了視窗可被縮至零尺寸的錯誤。

社群預期這些錯誤會在下一個正式版釋出前得到修正,因為多位評論者將其標記為「阻礙」問題。


6. Hacker News 上的社群回應

  • SDL3 採用 – 使用者指出其他作品(如 osu!)近期已遷移至 SDL3,且明顯降低了延遲,暗示有效能考量。
  • GLFW vs. SDL – 有評論要求說明背後的理論依據;另一位則指出 SDL3 帶來完整的軟體渲染器與更多功能,儘管 Minecraft 仍只使用視窗/輸入子集。
  • 模組觀點 – LWJGL‑SDL3 綁定由 GTNH 模組包開發者貢獻,凸顯原版與模組生態系之間的開源合作。
  • 引擎化演進 – 有評論認為 Minecraft 正逐漸變成自己的遊戲引擎,而不僅是單純的遊戲。

"It's really amazing how much Minecraft is becoming more and more a game engine on its own rather than just a game." – Hacker News user


7. 如何體驗此快照

  1. 開啟 Minecraft Launcher,在 Installations 分頁啟用快照。
  2. 從官方頁面下載快照(或跨平台伺服器 jar)。
  3. 備份 你的世界後再測試——快照可能會損壞存檔。

8. 變更摘要

  • 後端切換 – GLFW → SDL3,負責視窗與輸入。
  • 資料包版本提升 – 111.0,加入新燃料元件與告示牌文字處理。
  • 戰利品表、條件式與數值提供者大幅改寫 – 支援更彈性的註冊表引用。
  • 世界生成重構 – 環境屬性、新密度函式與噪聲設定重新組織。
  • UI 與遊戲性調整 – 觀察者傳送門互動、鍵位綁定修正、偵錯覆蓋層增強。
  • 已知錯誤 – Windows 與 Wayland 的排他全螢幕當機;macOS 排他全螢幕已移除。

這些變更為更現代、模組化的引擎架構奠定基礎,並為資料包創作者與模組開發者開啟新可能性。

Sources