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 扫描码表示物理键位,使用 SDL 键码表示布局相关的快捷键。
- 全屏行为:无边框全屏成为默认;在无边框和独占模式之间切换不再需要重启。独占全屏仍属实验性功能——在 Windows 多显示器环境以及 Wayland 上会崩溃。
- 平台集成:Linux 在可用时优先使用原生 Wayland;macOS 的独占全屏支持被移除。
为什么选 SDL3?
Hacker News 上的评论指出,SDL3 的 LWJGL 绑定是由一位 GTNH 模组包开发者贡献的,完成了“原版 → 模组 → 原版”的循环。SDL3 的 API 因其简洁设计受到赞誉,其他游戏(例如 osu!)在从 SDL2 升级到 SDL3 后报告了延迟下降。虽然 Mojang 并未公开具体理由,社区普遍认为 SDL3 提供了比日渐老化的 GLFW 更现代、维护活跃的基础。
"SDL 一直都有很棒的 API 设计,但在 SDL3… 真是太棒了!" – hackernews 评论
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 像素。
- 调试覆盖层新增独立的 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 像素的最小尺寸,修复了窗口可以被缩到零尺寸的 bug。
社区预计这些 bug 会在下一个完整发布前得到修复,因为它们已被多位评论者标记为“阻塞”。
6. Hacker News 上的社区反馈
- SDL3 采纳 – 用户指出其他游戏(如 osu!)最近迁移到 SDL3 并显著降低了延迟,暗示了性能动机。
- GLFW 与 SDL 对比 – 有评论者请求关于决策的文档;另一位指出 SDL3 带来了完整的软件渲染器和更多特性,尽管 Minecraft 仍只使用窗口/输入子集。
- 模组视角 – LWJGL‑SDL3 绑定由 GTNH 模组包开发者贡献,凸显了原版与模组生态之间的开源合作。
- 引擎化演进 – 有评论认为 Minecraft 正日益成为独立的游戏引擎,而不再仅是一个普通游戏。
"真的很惊讶 Minecraft 正变得越来越像一个独立的游戏引擎,而不只是一个游戏本身。" – Hacker News 用户
7. 如何尝试该快照
- 打开 Minecraft Launcher,在 Installations(安装)标签页中启用快照。
- 从官方页面下载快照(或跨平台服务器 jar)。
- 备份你的存档后再进行测试——快照可能会损坏存档。
8. 变更集概览
- 后端切换 – 窗口与输入从 GLFW → SDL3。
- 数据包版本提升 – 111.0,新增燃料组件与告示牌文本处理。
- 战利品表、谓词与数值提供者大改 – 更灵活的注册表引用。
- 世界生成重构 – 环境属性、新密度函数以及噪声设置重新组织。
- UI 与玩法微调 – 观察者传送门交互、键位绑定修复、调试覆盖层增强。
- 已知 bug – Windows 与 Wayland 上的独占全屏崩溃;macOS 独占全屏已移除。
这些改动为更现代、模块化的引擎架构奠定基础,并为数据包创作者和模组开发者打开了新可能性。