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_fuel與minecraft:brewing_fuel元件允許資料包定義自訂燃燒時間與速度倍率。 - 告示牌文字元件 –
minecraft:sign_text_front與minecraft:sign_text_back會在物品提示中儲存告示牌文字;點擊事件預設關閉,可透過allow_op_features標誌恢復舊行為。 - 村民食物 –
minecraft:villager_food元件定義了村民可食用物品的營養值。
UI 變更
- 移除「原始輸入」滑鼠設定;滑鼠現在始終使用相對模式。
- 鍵位綁定現在參照實體鍵位,修正了依鍵盤佈局產生的映射錯誤。
- 最小視窗尺寸改為 320 × 240 px。
- 偵錯覆蓋層新增獨立的 GUI 縮放、玩家速度讀取以及刷新率顯示。
- 創造模式物品欄排序重新安排,先顯示非階層礦物,後顯示有階層的物品。
3. 資料包、戰利品表與條件式徹底改寫
版本提升
- 資料包版本 → 111.0
- 資源包版本 → 92.0
支援註冊表的戰利品表
- 戰利品表類型現在接受註冊表元素與標籤引用,允許以內嵌值、命名空間 ID 或以
#為前綴的標籤形式提供大多數欄位。 - 已淘汰的條件式、物品修飾器與槽位來源的舊式引用類型已被移除。
條件式與數值提供者的擴充
- 新增原版條件式如
minecraft:block/fast_cooking與minecraft:match_block,取代舊的block_state_property類型。 - 數值提供者現在必須明確指定
type欄位;許多新提供者(例如minecraft:cooking/time_coal、minecraft:brewing/speed_default)會公開自訂燃料的燃燒時間與速度資料。
4. 世界生成與密度函式的精緻化
- 環境屬性 取代了生物群系中的 spawner 與 spawn‑cost 欄位,將怪物生成設定集中管理。
- 特徵類型
nether_forest_vegetation、twisting_vines、weeping_vines已被移除。 - 水源與礦脈的噪聲路由欄位重新構造為獨立的
aquifers與ore_veins物件,並以明確的密度函式決定放置邏輯。 - 新增密度函式運算子(
sub、div、negate、lerp、floor、ceil、round、truncate、beardifier),擴充了地形塑形工具箱。
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. 如何體驗此快照
- 開啟 Minecraft Launcher,在 Installations 分頁啟用快照。
- 從官方頁面下載快照(或跨平台伺服器 jar)。
- 備份 你的世界後再測試——快照可能會損壞存檔。
8. 變更摘要
- 後端切換 – GLFW → SDL3,負責視窗與輸入。
- 資料包版本提升 – 111.0,加入新燃料元件與告示牌文字處理。
- 戰利品表、條件式與數值提供者大幅改寫 – 支援更彈性的註冊表引用。
- 世界生成重構 – 環境屬性、新密度函式與噪聲設定重新組織。
- UI 與遊戲性調整 – 觀察者傳送門互動、鍵位綁定修正、偵錯覆蓋層增強。
- 已知錯誤 – Windows 與 Wayland 的排他全螢幕當機;macOS 排他全螢幕已移除。
這些變更為更現代、模組化的引擎架構奠定基礎,並為資料包創作者與模組開發者開啟新可能性。