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 は、長年使用されてきた GLFW バックエンドをウィンドウ管理、入力処理、プラットフォーム統合のために SDL3 に置き換えます。この切り替えによりエンジンの低レベルコードが近代化され、クロスプラットフォームの一貫性が向上し、物理キーのスキャンコードといった新しい入力機能が利用可能になると同時に、データパック、ルートテーブル、ワールド生成に関する多数の更新が導入されます。
1. SDL3 が GLFW に取って代わる – 技術的影響
直ちに現れる結果
- ウィンドウと入力: すべてのウィンドウ作成、フルスクリーン処理、マウス/キーボード入力は、従来の GLFW ではなく SDL3 を通して行われます。キーボード処理は、物理キー位置を表す SDL スキャンコードと、レイアウト依存のショートカットに使用される SDL キーコードを使用します。
- フルスクリーンの挙動: ボーダーレスフルスクリーンがデフォルトになります。ボーダーレスと排他的モードの切り替えに再起動は不要です。排他的フルスクリーンはまだ実験的で、マルチモニター環境の Windows と Wayland でクラッシュします。
- プラットフォーム統合: Linux では利用可能な場合にネイティブ Wayland が優先されます。macOS の排他的フルスクリーンサポートは削除されました。
なぜ SDL3?
Hacker News のコメントでは、SDL3 用の LWJGL バインディングが GTNH Modpack 開発者によって提供されたことが「バニラ → Mod → バニラ」サイクルを完結させたと指摘されています。SDL3 の API はそのクリーンな設計が称賛されており、他のゲーム(例: osu!)でも SDL2 から SDL3 へ移行したことでレイテンシが低減したと報告されています。Mojang から公式に理由が公開されているわけではありませんが、コミュニティの合意としては、老朽化した GLFW コードベースよりも、よりモダンで積極的に保守されている SDL3 の方が適しているという見方が強いです。
"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. ワールド生成と密度関数の改良
- 環境属性 がバイオームのスポーナーとスポーンコストフィールドを置き換え、モブスポーン設定を一元化します。
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 はウィンドウ/入力部分だけを使用すると指摘しています。
- Modding の視点 – LWJGL‑SDL3 バインディングは GTNH Modpack 開発者によって提供され、バニラと Mod のエコシステム間のオープンソース協力が強調されています。
- エンジン的進化 – コメントの一つは、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 の排他的フルスクリーンは削除。
これらの変更は、よりモダンでモジュラーなエンジンアーキテクチャの基盤を築き、データパック制作者や Mod 開発者に新たな可能性を提供します。