BadOptimizationsは、描画エンジンそのものを大幅に置き換えるのではなく、ライトマップ更新や空の色計算、デバッグ用処理など、クライアント側で繰り返し実行される細かな処理を最適化する軽量化MODです。
明るさに変化がないときのライトマップ更新を省略したり、空の色計算を簡略化・キャッシュしたりすることで、CPU処理やGPUへの不要なテクスチャ転送を減らします。本記事では、主な最適化機能や対応環境、他MODとの併用時の注意点を解説します。
フレームは画面を1回描画する単位で、1秒間の描画回数はFPSで表されます。ティックはゲーム内の状態を更新する処理単位で、通常は1秒間に20回実行されます。BadOptimizationsは、機能によってフレーム単位またはティック単位の処理を最適化します。
動作環境と要件

Creator: thosea
| 項目 | 詳細 |
|---|---|
| ジャンル | 軽量化・最適化 |
| 記事の検証対象 | BadOptimizations 2.4.1 / Minecraft 1.21.1 / Fabric |
| 主な対応バージョン | 1.20.1 / 1.21.1 / 26.2 |
| 対応ローダー | Fabric / Forge / NeoForge |
| 動作環境 | クライアント専用 |
| 前提MOD | なし |
| 配布ページ | Modrinth / CurseForge |
- Sodiumなどの描画最適化MODや、Lithiumなどのゲームロジック最適化MODに加え、クライアント側の細かな処理も軽量化したい
- ライトマップ更新や空の色計算など、フレームごと、またはティックごとに実行される処理負荷を少しでも減らしたい
- 大幅な描画エンジンの変更を行わず、複数の細かな最適化を追加したい
- 既知の競合や、他MOD側から申告された非互換性が検出された場合は、該当する最適化機能が自動的に無効化されます。ただし、すべての競合を自動検出できるわけではありません。
- FPSやフレーム時間への効果は、PCスペック、設定、他MODの組み合わせ、負荷のかかり方によって異なります。
- Sodiumのように描画エンジンを大幅に変更するMODではなく、複数の細かな処理を対象とする「マイクロ最適化」が中心です。
主な機能や特長
ライトマップ更新のスキップとキャッシュ
ガンマ設定、ポーション効果、ディメンションなど、ライトマップの内容に影響する状態が変化していない場合、毎ティック行われるライトマップの再計算とGPUへのテクスチャ転送を省略します。前回のライトマップを再利用することで、クライアント側の処理負荷を軽減します。
ブロックから発生する光や空から届く光などをもとに、画面上の明るさを表現するためのテクスチャです。更新時にはCPUで明るさを計算し、その結果をテクスチャとしてGPUへ転送します。
空の色計算サンプリングの最適化
バニラでは、現在の空の色を求めるため、周辺バイオームを考慮するカラーサンプラーがフレームごとに呼び出され、内部で216回のサンプリングを行います。BadOptimizationsは、異なる空色を持つバイオームの境界付近だけこの処理を使用し、それ以外ではより短く単純な計算に置き換えます。計算結果は1ティック単位でキャッシュされます。
空の色計算をキャッシュする最適化は、Minecraft 1.21.10以前で使用されます。Minecraft 1.21.11以降では空の色の仕組みが変更されたため、この最適化は搭載されていません。本記事の検証対象であるMinecraft 1.21.1では利用できます。
不要なデバッグ処理のバイパス
Minecraftには、ミツバチ、ゲームイベント、GameTest、村人AIなどの状態を確認するためのデバッグレンダラーが用意されています。BadOptimizationsは、対応するデバッグ機能が有効で、サーバーから処理対象のデータを受信している場合だけロジックを実行し、それ以外では不要な処理を省略します。
開発者やサーバー管理者が、ミツバチの行動、村人AI、ゲームイベントなどの内部状態を画面上で確認するための診断用描画機能です。通常のF3デバッグ画面全体を指すものではありません。
動画でわかる『BadOptimizations』
当ブログが運営するMOD解説系チャンネルの動画で『BadOptimizations』を紹介しています。記事だけでは分かりにくい実際の挙動やフレームレートを確認できます。
ぜひチャンネル登録と高評価をお願いします。
今後の記事と動画作成のモチベーションが上がります!
MODに関する「質問」「問合せ」について

当ブログを参考にしてくださる方へお願い


この記事に関するコメント