概要
Unreal Engineは多機能だが、エディタ起動時間が長い問題がある。 ツールチップ生成がパフォーマンス低下の大きな要因。 全ツールチップを起動時に生成する現状から、必要時のみ生成に変更可能。 この最適化でメモリ使用量と起動時間が大幅に削減。 プロジェクト設定やエディタ設定パネルが主なツールチップ生成源。
Unreal Engineの起動パフォーマンス問題とツールチップ最適化
- Unreal Engine は近年「ゲームエンジン」から 多目的編集ツール へと進化
- ゲーム開発 だけでなく、映画・VFX・ライブ配信・バーチャルファッションショー等に活用
- 機能が多いため、 エディタ起動時間が長い という欠点
- Epicは Live-coding や Derived Data Cache などで対策を実施
- テスト用シンプルレベル を起動時に使う等の個別対策も存在
- しかし、これらの対策は プロジェクト依存 かつ 手動作業 が必要
起動プロセスの分析
- エディタ起動時のパフォーマンス を詳細に調査
- 一見無害な ツールチップ用関数 がパフォーマンス低下の原因と判明
- この関数は単にテキストを設定するだけでなく、 ウィジェット全体を生成
- 全ツールチップ に対してこの処理を実行、無駄なリソース消費
- Unreal Engine 5.6以前では ツールチップテキストだけで約1GB を消費
- 簡単なトップダウンテンプレートプロジェクト でも 約38,000個 のツールチップ生成
- 実際に1セッションで読むツールチップは 5~10個程度、大半が未使用
- デバッグビルド ではツールチップ生成だけで 2~5秒 の遅延発生
- 開発ビルド でも1秒未満だが、 約40MBのメモリ消費
最適化アプローチ
- 全ツールチップ生成を起動時から実際の表示時に遅延
- テキストを属性として保存し、 必要時のみウィジェット生成
- これにより 未使用ツールチップのリソース消費を回避
- 1フレームで生成されるツールチップは最大1つ、 パフォーマンス影響は無視できるレベル
- ツールチップ生成は0.05ms 程度、体感で遅延なし
実装と影響
- Pull Request を公開中(Unreal-Linked GitHubアカウント要ログイン)
- Epic Gamesによるマージ を期待
- プロジェクト設定パネル や エディタ設定パネル が主なツールチップ生成源
- これらのパネルをデフォルトで開かない・不要なパネルをレイアウトから外すことで、 起動速度向上が可能
ツールチップ生成最適化のまとめ
- 必要なタイミングでのみツールチップ生成 という設計変更が効果的
- 起動時間短縮 ・ メモリ使用量削減 ・ 操作時の遅延なし を実現
- 不要なパネルやツールの削除 も有効な最適化手法
- Unreal Engineの 利便性とパフォーマンス向上 に寄与するアイディア