Minecraftでの問題報告の仕方、調べ方(クラッシュ、動作が重い)

クラッシュしたとき

latest.logを共有する

・latest.log(最後に起動したときのログ)には起動から終了/クラッシュまでの動作の記録や、PCの環境、クラッシュレポートなどが記録されている。

・通常は、.minecraft(ゲームディレクトリ名)/logs/ にある。

・これをmclo.gsというサイトにUPして、リンクを共有することで、他の人はわざわざダウンロードしなくてもログを閲覧できる。

・また、mclo.gsにUPするとPCのユーザー名やMCID、IPアドレスなどが隠されるのでセキュリティ的にも安心。

mclo.gs

modリストを共有する

・一部の非公式ランチャー(PrismLauncher)では、ランチャー上のログにmodリストや使用したライブラリ、Javaのバージョンや引数が載っていたり、modリストを簡単に作成できる機能があったりする。

・そのような機能が無い場合、Windowsでは、modsフォルダで、エクスプローラー上部のアドレスバーの何もない所をクリックし、「cmd」と入力してEnterを押し、modsフォルダ上でコマンドプロンプトを開く。

コマンドプロンプトで、dir /b >mods.txt を実行すればmodリストが作成される。

macOS/Linuxでは、modsフォルダ上でターミナルを開き、ls >mods.txt を実行すればmodリストが生成される。

・これをそのままUPすればOK。

動作が重いとき

前提知識

・画面がずっとカクカクしているときは、FPS(一秒あたりに行われる画面更新の回数)が低下している。クライアントのCPUやGPUに大きな負荷がかかっていると起こる。

・画面が定期的に酷くガクッとなるときは、不要なメモリを解放するGCガーベッジコレクションが起こっている。CPUに大きな負荷がかかっていたり、メモリ使用率が高かったりしてGCをするのが大変なときに起こる。

・チェストを開くのが遅かったり、敵を攻撃してもすぐにダメージが入らないときは、TPS(1秒あたりに行われるティック処理の数)が低下している。(内部)サーバーに大きな負荷がかかっていて、通常1秒に20回行われるサーバー側の処理が遅れるとこうなる。

・TPSが低下しているときは、MSPT(1ティックにかかる時間、ミリ秒)が増加している。1秒=1000ミリ秒で、正常な20TPSの時は1ティックが50ミリ秒未満で処理されるが、サーバーに大きな負荷がかかると、MSPTが50ミリ秒を超えて、TPSが下がる。

Observable/LagGogglesで重いものを調べる

クライアント/サーバーに負荷をかけているものを、ワールド上で視覚的に分かりやすく表示するmod。バージョンによって名前が違うが、全部機能は同じ。

Observablse(1.16.5以降)

ForgeではArchitectury APIとKotlin for Forge、

FabricではArchitectury APIとFabric Language Kotlinが必要。

Architectury API - Minecraft Mod

Kotlin for Forge - Minecraft Mod

Fabric Language Kotlin - Minecraft Mod

modrinth.com

LagGoggles(1.12.2)

TickCentralが必要。

TickCentral - Minecraft Mods - CurseForge

www.curseforge.com

LagGoggles Legacy(1.7.10)

FalsePatternLibとUniMixinsが必要。

FalsePatternLib - Minecraft Mod

UniMixins - Minecraft Mods - CurseForge

modrinth.com

注意:マルチプレイでは権限があるプレイヤーしか使えない。OP権限以外にも専用の権限を設定できる。

・説明はLagGoggles Legacyで行う。

・キー設定の「laggoggles」の「Profile GUI」に適当なキーを割り当てる。

・メニューを開く。左右の+/ー5で計測の時間を調整する。

・「Profile for 30 seconds」をクリックする。

・出て来た、「FPS」がクライアント側、「World」がサーバー側の計測。

 ・計測出来たら、「Show latest scan results」で先程の結果をワールド上に表示する。負荷が高いほど、緑が赤になって行き、uS/tの数字が増えていく。

・「Analyze results」では結果を文字で一覧表示する。負荷が高いほど、緑が赤になって行き、uS/tの数字が増えていくのは同じ。ダブルクリックで原因となるものへ直接テレポートできる。

・他の人への共有はスクリーンショットで行う。

Spark/Flareで重いものを調べる

Observable/LagGogglesより扱いが難しいが、より高機能で細かい計測が出来る。

Spark(1.7.10と1.15.2以降)

1.7.10版はCurseForgeにしかない。

www.curseforge.com

Flare(1.12.2)

1.12.2では互換性の関係でFlareの使用が推奨される。

modrinth.com

注意:マルチプレイでは権限があるプレイヤーしか使えない。OP権限以外にも専用の権限を設定できる。

・公式の説明ドキュメント。

spark.lucko.me

・色々書いてあるが、よく使うのは、

/spark tps

/spark profiler --timeout 30

/sparkc profiler --timeout 30

である。

・Flareでは、

/flare tps

/flare sampler --timeot 30

/flarec sampler --timeout 30

のように変わるので注意。

・/spark tps で現在のTPSを表示する。/forge tps もあるが、Sparkの方が情報が細かく、色分けで見やすい。

・/sparkでサーバー側、/sparkcでクライアント側になる。--timeout 30 は、30秒で計測を終了するという意味。

・計測が終了すると、チャットにリンクが出るので、Tか/でチャットを出した状態でリンクをクリックすれば開ける。リンクをUPすれば他の人と共有できる。

・サーバー側の計測結果(1.7.10)。

・入れているmodによっては「Server(Client)Thread」以下の中身の配置が変わる。

・ここからはより%が高く、より赤い場所をたどって行く。

・Thread.sleepなどと書いてあるのは、負荷がかかっていない割合なので無視。

・net.minecraftではないmod名などが出てきたらストップ。

・jp.ngt.rtm(RealTrainMod)のelectric(信号、電気関係)、特にタイルエンティティ(ブロックエンティティ)のConnectorBase(碍子モデル)が負荷をかけているのが分かる。

・jp.ngt.rtm.electric.TileEntityConnectorBaseのようなmodのIDとファイル名は、modの.jarファイルをZipファイルとして解凍し、フォルダを探していけば見つかる。

GitHubなどでソースコードが公開されている場合はそっちを見た方が良い。