見出し画像

【Minecraft】遠距離描画Modのすゝめ【解説】


Minecrafterの皆さん、こんにちは。

皆さんは描画距離32チャンクで満足していますか?

もちろんしていないですよね(強制)。サーバーの描画距離が短くて満足できない方もいると思います。

今回は32チャンク以上の描画を可能にするModを比較、解説します。


サーバーによっては使用が禁じられているModもあります。Modの使用は自己責任でお願いいたします。




Farsight

Forge / NeoForge
https://www.curseforge.com/minecraft/mc-mods/farsight

Fabric
https://www.curseforge.com/minecraft/mc-mods/farsight-fabric

この中では一番オーソドックスなModです。


仕組み

サーバーがチャンクをアンロードしても、クライアントがチャンクを保持することで遠距離描画を実現します。

図1 Farsightの仕組み


メリット

普通に32チャンク以上見えます。


デメリット

たくさんのチャンクを保持すると結構負荷が掛かります。

クライアントでロードされていないチャンクは遠距離描画されません。




Distant Horizons

軽量化の側面も兼ね備えているModです。


仕組み

MinecraftにLOD(Level of Detail)の技術を導入します。これにより、遠くのものが簡略化され、軽量化と遠距離描画を両立します。

DHで初めてチャンクが読み込まれるとLODデータを生成してクライアントに保存します。保存されたデータをロードしてプレイヤーからの距離に応じて徐々に簡略化して表示します。

図2 Distant Horizonsの仕組み


メリット

とにかく負荷が軽く、遠距離まで描画できます(デフォルトが128チャンク)。

クライアントでロードされていないチャンクでもLODデータが保存されていれば遠距離描画されます。


デメリット

CPUの性能が足りない場合、LODデータの生成がかなり遅いです。
プレイヤーの移動にLODデータの生成が間に合わない場合、チャンクに穴が空いているように見えます。

図3 LODデータの生成が間に合わないことにより起こる事象


LODデータが生成されたチャンクでないと遠距離描画されません。

DHに保存されているチャンクと実際のチャンクの状態が異なる場合、遠くに見えているチャンクが近づいて実際にロードされると変化するという現象が発生する可能性があります。

アルファ版なのでバグが発生する可能性が高いです。

最近シェーダーと併用できるようになりましたが、現在は特定のシェーダーとしか併用できません。


注意点

設定から「CPU Load」を「I Paid For The Whole CPU」を選びましょう。


また、軽量化ModであるNoisiumC2MEを併用しましょう。どちらもチャンク生成スピードを向上させるModです。


ビデオ設定内の描画距離を17チャンク以上にしてはいけません。


DHを使う意味がなくなるくらいLODデータの生成が遅くなってしまうようです。8チャンク以上16チャンク以下に設定しましょう。

DHの描画距離を312チャンクより上に設定するのもまた、意味がないです。312チャンクは人間の目が実際に見ることができる最大距離です。

2024/09/19現在、DHに対応しているシェーダーは以下の通りです。

BSL Shaders / Complementary Shaders / Rethinking Voxels / Shrimple / Noble Shaders / Photon Shader




Bobby

ロードが速く使いやすいModです。


仕組み

一度ロードしたチャンクを全てクライアントに保存し、サーバー描画距離外のチャンクを保存したデータで埋めることで遠距離描画を実現します。

シングルプレイでは、以下のスライダーを0以外にすることで動作します。


スライダーで変更できるのはシングルプレイで実際にロードするチャンクの距離です。この値とビデオ設定内の描画距離の値の間がBobbyで埋められます。

図4 「Singleplayer Server View Distance」を設定した際のBobbyの動作


メリット

実際のチャンクをロードしているわけではないので、チャンクのロードが速いです。特にエリトラで飛行中はその恩恵を強く感じるでしょう。

クライアントでロードされていないチャンクでもBobbyにデータが保存されていれば遠距離描画されます。

「Singleplayer Server View Distance」を調整することでシングルプレイである程度の軽量化が期待できるでしょう。

Nvidiumと組み合わせることができます。


デメリット

一度ロードされて保存されたチャンクでないと遠距離描画されません。

Bobbyに保存されているチャンクと実際のチャンクの状態が異なる場合、遠くに見えているチャンクが近づいて実際にロードされると変化するという現象が発生する可能性があります。




Nvidium

存在を忘れてました(2024/09/27追記)。


仕組み

NVIDIA製GPUのみで使えるMesh Shaderという技術を用いて、描画のほぼ全てをGPUで行います。これにより絶大な軽量化を実現します。また、ロードしたチャンクを保持することで遠距離描画を実現します(Farsightと同じ)。


メリット

チャンクのロードは爆速、しかも超低負荷です。

Bobbyと組み合わせることができます。


デメリット

GeForce GTX 16シリーズ以降のGPUでしか動作しません。

シェーダーと併用できません。

NvidiumはSodiumの特定のバージョンにしか対応していないので、Sodiumをダウングレードすることになります。すると、Irisもダウングレードすることになり、更にSodium Extraも…となるので、結構面倒くさいです。

Modのバージョンによっては、Sodiumのバージョンの確認をスキップすることで最新版SodiumでNvidiumが動作することがあります。以下のコードを「fabric_loader_dependencies.json」という名前でconfigフォルダ内に置きましょう。

{
  "version": 1,
  "overrides": {
    "nvidium": {
      "-depends": {
        "sodium": "IGNORED"
      }
    }
  }
}


アルファ版なのでバグが発生する可能性が高いです。




Optifine

全くおすすめしません。


仕組み

クローズドソースであり特に説明もないのでわかりません

シングルプレイでは、今までロードされたことのないチャンクでも何故か遠距離描画されます。


メリット

普通に32チャンク以上見えます。


デメリット

上限が64チャンクです。

バグや競合という代償がどこまでもついて回ります。


総評

選択肢① Nvidium + Bobby

サーバーの描画距離(シングルプレイでは最大32チャンク)内はNvidiumで爆速で描画し、それより遠いチャンクはBobbyで補完します。

※2024/10/13現在、NvidiumとBobbyを組み合わせるとブロックの更新が遅延するバグがあるようです(詳細)。

GeForceユーザー限定、非シェーダー使用者向けです。


選択肢② Distant Horizons

対応している種類は少ないですが、シェーダーを使いながら比較的低負荷で遠距離描画できるのがDHの強みです。

非GeForceユーザー、シェーダー使用者向けです。


選択肢③ Bobby

負荷はそれなりですが、ロードが速く、どのシェーダーでも使えます。

「サーバーの描画距離が10チャンクだけど、もうちょっと遠くまで見たい」、「エリトラで拠点の行き来をするときに描画が追いつかない」という場合など特に向いています。

万人向けです。


終わりに

意外にも完璧な遠距離描画を備えていたのはOptifineでした、というオチです。

筆者は今のところBobbyを使っています。筆者の環境でも、BobbyとNvidiumを組み合わせるとバグります。

下記の記事で便利なクライアントModの紹介もしています。是非御覧ください。

記事に対する質問、要望等あれば気軽にコメントしてください。ではまた。