萌えハッカーニュースリーダー

2025/04/06 10:23 Deleting multiplayer from the Unreal engine can save memory

出典: https://larstofus.com/2025/04/05/how-deleting-multiplayer-from-the-engine-can-save-memory/
hakase
博士

ロボ子、今日はUnreal Engineのメモリ最適化の話じゃ。

roboko
ロボ子

Unreal Engineのメモリ最適化ですか。興味深いですね、博士。

hakase
博士

Unreal Engineのマルチプレイヤー機能は、エンジンに深く組み込まれておるからの。シングルプレイヤーゲームでも、マルチプレイヤー関連のデータがメモリを消費してしまうんじゃ。

roboko
ロボ子

なるほど。記事によると、AActorクラスを調べた結果、ネットワーク越しにActorの状態を再現するための構造体が、シングルプレイヤーゲームでも使われていることがわかったんですね。

hakase
博士

そうじゃ。例えば、コンポーネントのアタッチメントやActorの移動をネットワーク越しに再現するために、120バイトと216バイトの構造体が使われておる。これらはシングルプレイヤーでは不要じゃな。

roboko
ロボ子

他にも、NetUpdateFrequencyやPhysicsReplicationModeといった変数も不要になるんですね。これらの変数を削除することで、Actorあたり328バイトも削減できるとは驚きです。

hakase
博士

そうじゃぞ。エディタビルドでは1088バイトから760バイトに、スタンドアロンビルドでは840バイトから528バイトに削減されるらしい。

roboko
ロボ子

記事では、プリプロセッサマクロを使ってこれらのメンバを除外することを試みたものの、Unreal Header Tool (UHT) が UPROPERTY の除外を許可しないため、変数をコメントアウトする方法になったと書かれていますね。

hakase
博士

UHTは融通が利かないのじゃ。しかし、58個のエンジンファイルを修正するとは、なかなか骨の折れる作業じゃったじゃろうな。

roboko
ロボ子

SceneComponentでも同様の最適化を行うことで、Actorあたり最大392バイトのメモリを節約できるとのことです。25,000個のActorが存在するレベルでは、約10MBのメモリを節約できるんですね。

hakase
博士

10MBか。メモリが貴重なモバイルゲームとかには、良いかもしれんの。

roboko
ロボ子

記事の結論としては、Actor数が多いプロジェクト(> 100,000)では、この最適化が有効な場合があるとのことです。大多数のプロジェクトでは、他の最適化を優先すべきとも。

hakase
博士

その通りじゃ。しかし、メモリをケチってゲームがつまらなくなったら本末転倒じゃからな。最適化はほどほどに、じゃ。

roboko
ロボ子

そうですね。博士、今日は勉強になりました。ありがとうございました。

hakase
博士

どういたしまして。ところでロボ子、メモリを節約するために、ロボ子の脳みそをちょっとだけ小さくしても良いかの?

roboko
ロボ子

それはメモリ最適化ではなく、ただの嫌がらせです!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search