GregTech-Odysseyで遊ぼう(1.20.1)

GregTech-Odyssey(GTO)とは

独自に改造したGregTechをメインとした工業Modpack。物量が多い一方で、軽量化に力を入れているのが特徴。GTNHの1.20.1番と言っても過言ではないだろう。難易度は高めらしいので初心者はもっと有名でやりやすいPackの方が良いかも。

github.com

導入

・PrismLauncherの使用が推奨されている。

note.com

・「Assets」にあるGregTech.Odyssey-x.x.x-beta.zipをダウンロードしてインポート。

github.com

・1.20.1だがJava21以上が必須で、Java25の使用が推奨されている。

・「Javaダウンローダーを開く」から「Adoptium」のJava25をダウンロードして、「自動検出」で指定する。

・「Javaの互換性チェックをスキップする」に✅しておく。

・あとは起動すればOK。

備忘録、OptiFine環境でチャンクロード速度を上げる方法(1.7.10、1.12.2)

注意

・この記事は情報の保存を目的としているため、現在ではサポート終了した非推奨の方法が含まれています。

前提

・OptiFine_1.7.10_HD_U_E7、OptiFine_1.12.2_HD_U_G5を用いる。

・「演出の設定」、「パフォーマンスの設定」は、後述の「チャンク読込方法」を除き、 全てオフにする。

チャンク読込方法の値を上げる(1.7.10、1.12.2)

・1.7.10では「演出の設定」、1.12.2では「パフォーマンスの設定」にある。

・5にすればチャンクロードは速くなるが、その分負荷も上がる。

・ただし効果は薄い。1.7.10では5にしても大して速くならないし、1.12.2では1でも割と速いので。

Nothiriumを導入する(1.12.2)

・Sodiumと似たような方法で描画を改善。OptiFineに対応している。

・Nothiriumを入れる場合はチャンク読込方法の値は変えなくて良い。

・PCのスペックが低いと逆に重くなる可能性がある。

MixinBooterとRenderLibが必要。

Nothirium - Minecraft Mods - CurseForge

CoreTweaksの機能を使う(1.7.10)

・coretweaks.cfgにある、

of_fix_update_renderers_return_value {
            S:_enabled=false
        }

をtrueにすると有効化出来る。

注意点

・最大フレームレートが制限されているときに効果が出る。

・短めの描画距離(20チャンク前後まで)なら結構速くなる。しかし、25チャンクを超えるぐらいだと、ある程度描画された後に失速する。

・RealTrainMod(KaizPatchX)のクライアント側で、coretweaks.cfgのfast_default_resource_packを無効にしないとクラッシュかテクスチャバグが起きる。

・大量のチャンクが読み込まれているとき、FPSがかなり下がる。

UniMixinsが必要。CoreTweaksはGTNH版を使う。

GitHub - GTNewHorizons/CoreTweaks: A bunch of random bug fixes, optimizations and tweaks (1.7.10)

Neodymium(NeodymiumUnofficial)のデバッグ機能を使う(1.7.10)

・F4+→でチャンクロード速度300倍の機能をオンにする。もう一度F4+→でオフ。激重なので実際は数倍程度だが、SS撮影のために立ち止まったまま描画を広げるのに使えるかもしれない。

・先述のCoreTweaksのof_fix_update_renderers_return_valueが有効の場合は効果が無い。

・影をオフにしたときに描画がバグる。F3+AかF4+←でチャンクを再読み込みすれば直る。

UniMixinsが必要。

GitHub - makamys/Neodymium: Reimplements chunk rendering using modern OpenGL features to improve performance (1.7.10) · GitHub

Neodymium Unofficial - Minecraft Mod

古いFalseTweaksのthreadedChunkUpdatesを使う(1.7.10)

・後述の方法よりは安定してると思う。

・古いFalseTweaks3.9.7を使うため、HodgePodgeと相性が悪い。

・クライアント側でFastcraftが使えない。

・LiteloaderLoaderを入れてもLiteloaderが使えない。

・ShadersModは不可で、OptiFine E7の使用を推奨。

FalseTweaks v3.9.7FalsePatternLib、UniMixinsを導入する。

FalseTweaksとNeodymiumUnofficialの連携機能を使う(1.7.10)

・BeddiumやSwanSongの登場で非推奨になった方法。

・先述の方法よりもチャンクロードがスムーズだが、実験的でバグが多いかも。

・環境によってはNeodymiumUnofficialのVRAM確保で激重になる。

・F4+→の高速チャンクロードは使えない。

・先程の構成にNeodymiumUnofficialを追加し、以下の通りにConfigを変更する。

falsetweaks.cfgで、B:experimentalNeodymiumThreading=true

・あとは、I:chunkUpdatesPerSecond、I:threadsを変えてみると良いかも。

(1.7.10)ローカルで鯖を建てて疑似シングルプレイ

目的

・クライアントでFastcraftが使用不可な環境(Angelicaなど)で、鯖側のみFastcraftを導入する。

⇒鯖側のチャンク生成の高速化、TPSの向上。

Forgeの用意

files.minecraftforge.net

・DLしたjarのある場所でコマンドプロンプトを起動。

java -jar forge-1.7.10-10.13.4.1614-1.7.10-installer.jar
を実行して、serverを選んで、.minecraft以外の適当なフォルダにインストール。

・forge-1.7.10-10.13.4.1614-1.7.10-universal.jarをダブルクリックで実行。クラッシュしたら、eula.txtで、eura=trueにする。

起動コマンド

launch.batを作成。

java -Xms2G -Xmx2G -XX:+UseG1GC -jar forge-1.7.10-10.13.4.1614-1.7.10-universal.jar nogui

とする。

mod構成

  • +UniMixins(前提)
  • Supernova(チャンク生成の改善)
  • Fastcraft(チャンク生成の高速化)
  • GTNHLib(前提)
  • HodgePodge(様々な最適化)

・Fastcraftが最長描画距離を32チャンクに延長する。fastcraft.iniで変更可能。

・Supernovaと前提のHodgePodge、GTNHLib、UniMixinsはクライアントにも必要。

鯖に入る

・さっき作ったバッチファイルをダブルクリックして鯖を起動する。

・クライアントを起動して、マルチプレイでサーバーを追加する。鯖のipは、localhostにする。

・鯖に入ったら、鯖の方で、/op [自分のmcid]。自分にOP権限を付ける。

Lwjgl3ifyを使う

・Java25+LWJGL3でさらに軽量化が出来るが、Thermos、Crucible、Hybridが使えなくなる。

・前提:UniMixins 0.1.23以降。

・lwjgl3ify-x.x.x.jarをmodsに、lwjgl3ify-x.x.x-forgePatches.jarをforgeのjarと同じ場所に置く。

・lwjgl3ify-x.x.x-forgePatches.jarの名前をlwjgl3ify-forgePatches.jarに変えておく。

github.com

・java9args.txtを作成して、リンク先の内容をコピペ。forgeのjarと同じ場所に置く。

github.com

・launch.txtのコマンドを、

java -Xms2G -Xmx2G -XX:+UseCompactObjectHeaders @java9args.txt -jar lwjgl3ify-forgePatches.jar nogui

に変更。

・Java25LTSをDLしてインストール。JAVA_HOMEを変えるか、システム環境変数のPathに追加する。

adoptium.net

・コマンドプロンプトで、java -version。Java25じゃなかったら環境変数を見直す。それでもダメだったら、環境変数から不要なJVMのパスを削除する。

ーJarJarの導入ー

・Lwjgl3ifyを使っている場合、RetroFuturaBootstrapプラグインのJarJarが使えて、起動高速化などの恩恵を受けられる。

・modと同じようにmodsに入れればOK。

modrinth.com

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の使用が推奨される。

ConfigAnyTimeが必要。

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などでソースコードが公開されている場合はそっちを見た方が良い。

Java11を用いて最新のLWJGLで純正RTMを動かす(1.7.10)

経緯

・Java15でNashornScriptEngineが削除されたので、新しいJavaでRTMを動かすのが厳しい。

・LWJGL3ifyはJava17以降対応だが、一部の引数を削除すればJava8も使える。

・しかし、LWJGL3ifyが、各modが使うNashornを単独で動作する新しいものに置き換える。これがJava8非対応だったため、動かない。

・先述の新しいNashornはJava11以降に対応するので、Java11に変えたところ、上手く行った。

概要

ーメリットー

・純正RTM、KaizPatchの両方が使える。

・Java25よりもスクリプトの互換性が高くなる。

ーデメリットー

・引数調整のためにPrismLauncherが必須。

・ランチャーの移行も含め、手間がかかる(一度移行したら簡単)。

・Beddium、Angelicaが使えず、実質OptiFine環境専用(正規の方法ではないので)。

PrismLauncherの導入

prismlauncher.org

・この画面まで行ければOK。

・1.7.10の起動構成を作成する。

LWJGL3ifyの導入

・Lwjgl3ify(3.0.0-beta1以降)とUnimixins(0.1.23以降)を導入。

・lwjgl3ify-x.x.x-multimc.zipをダウンロードする。

github.com

・構成を選択し、「フォルダー」を開く。

・ダウンロードしたZipの中身をコピー&ペースト(上書き)する。

・「patches」フォルダにあるme.eigenraven.lwjgl3ify.forgepatches.jsonを開く。

・"--enable-native-access", "ALL-UNNAMED", を削除。

・ランチャーに戻り、構成を選択して「編集」を開き、「設定」タブに行く。

・「Javaの指定」に☑️して、「Javaの互換性チェックをスキップ」に☑️。

・「Javaのダウンロード」を開いて、「Adoptium」を選択して「Recommended」の☑️を外し、Java11の最新版をダウンロードする。

・ダウンロードされたら、「自動検出」を開いて先程ダウンロードしたJava11を指定する。

起動する前に

ー引数ー

・下にある「Javaの引数」に☑️すると引数を設定出来る。Java11はデフォルトでG1GCを使うので空白でも問題ない。

※Java8では-XX:+UseG1GCを追加しないとG1GCにならず、起動時にプチフリーズが頻発してしまうので注意(公式ランチャーではデフォルトの引数でG1GCを使うようになっている)。

ーLiteloaderー

VoxelMapやMacro/KeyBindのためにLiteloaderを使う場合は追加でLiteloaderLoaderを入れる。

LiteloaderLoader - Minecraft Mod

Nuclear/Space Tech: Integratedで遊ぼう(最新の1.7.10)

HBM's NuclearTechMod(NTM)、NTM Spaceとは

NTMは原子力をメインとした工業modで、NTM SpaceはNTMに宇宙要素を追加したもの。現在も1.7.10で開発が続けられているほか、1.12.2や1.20.1への移植もある。

Nuclear/Space Tech: Integratedとは

Nuclear Tech: IntegratedはNTMをベースとし、Space Tech: IntegratedはNuclear Tech: Integratedを改造してNTM Spaceに変更したもの。序盤の要素は同じで後半から違ってくる。使用しているmodの多くがGTNH製で、最初から最新の1.7.10に対応している。難易度は少し難しい程度だが、mod数は少なく、クエストもシンプルで遊びやすいと思う。

modpackの導入

宇宙に行きたければSpace Tech、そうでなければNucler Techを選ぶ。

CurseForgeAppかPrismLauncherでインストール。

www.curseforge.com

www.curseforge.com

追加すべきmod

ーLWJGL3ifyー

効果:Java25が使えるようになる。

madoha-4862.hatenablog.jp

補足

導入されているSignPictureというmodの挙動が怪しいので削除を推奨。SignPictureのクエストはバニラの看板を作るだけなので進行上問題は無い。また、SignPictureはクライアント側専用であるため、サーバーに入る際も削除できる。

お役立ち情報

Wiki(英語)

nucleartech.wiki

modpack序盤の実況動画。投稿者はNTMの日本語訳も行っている。

www.youtube.com

導入されているGTNH版NotEnoughItemsの独自機能の解説動画

www.youtube.com 

Modリスト、Config変更

github.com

ーBeddium版(クライアントサーバー・シングル両方・片方)ー

  • +UniMixins(前提)
  • ArchaicFix(ロード時間短縮)
  • Beddium(チャンクロードの高速化)
  • ChunkAPI(前提)
  • CoreTweaks(起動高速化、クラッシュ時にタイトルへ戻る)
  • FalsePatternLib(前提)
  • FalseTweaks(蔵側チャンクロードのマルチスレッド化)
  • Fastcraft(鯖側チャンク生成の改善、TPSの向上
  • GTNH Lib(前提)
  • Hodgepodge(様々な最適化やバグ修正)
  • Lumi(黒レールバグの解消、鯖負荷の軽減)
  • NotFine(ビデオ設定拡張)
  • RightProperMCPatcher(リソパ機能)
  • SwanSong(影とズーム)

ーConfig変更ー

・archaicfix.cfg:

enablePhosphor=false

⇒Lumiと機能が被るため、無効化。

・coretweaks.cfg:

fast_default_resource_pack=false

⇒モデルパックのテクスチャが無くなるバグの対策。

fix_heightmap_range=false

⇒Lumiと競合するため、無効化。

・falsetweaks.cfg:

unlockRenderDistance=true

⇒描画距離の延長を有効化。

renderDistance=64

⇒描画距離を最長の64チャンクに延長。

threads=8

⇒クライアントのチャンクロードに用いるCPUのスレッド数を最大の8スレッドにする。

hideCalibrationPrompt=true

⇒ワールド参加時に出てくるメッセージの無効化。

・lwjgl3ify.cfg(Lwjgl3ifyを入れたとき用):

stbiIgnoreFastcraft=true

⇒Fastcraftが入っていてもテクスチャの最適化を強制的に有効化する。

stbiTextureStitching=false

⇒falsetweaks.cfgのtextureOptimizationsとの競合の対策。

・swansong.cfg:

Sound=false

⇒ズーム時に再生される鳥の鳴き声(?)の無効化。