ゲーム開発メモ

自分用の備忘録

ローカライズ

UE5の標準ローカライゼーション機能の使い方。

1. ダッシュボードの設定

1-1. 言語を追加

「Tools > Localization Dashboard」からローカリゼーションダッシュボードを開く。

「Add New Language」から言語を追加。

翻訳元言語をNativeにする。

1-2. 翻訳対象を収集

収集対象のパッケージを指定する。

「Gather from Packeges」をオンにして、Include Path Wildcardsを少なくともContent/以下に設定。
必要あればExclude Path Wildcardsも設定する。

Gather Textをクリックする。

しばらく待ってOKボタンが出たらOKボタンを押す。

※Gather Textに失敗した時
・EditorPreferencesでLive CodingのEnable Live Codingのチェックを外す
・Target DependanciesのEngineとEditorのチェックを外す
をしたらできた。

2. 翻訳を作成

2-1. 翻訳する

翻訳したい言語(ネイティブ言語じゃない方)の翻訳テーブルを開く。

翻訳を入力する。

Compile Textをクリック。

2-2. プレビュー

Widgetでカルチャーを選択してプレビューできる。

ただし、選択しても切り替わらない場合はエディタを再起動する。

3. ゲーム中に言語を切り替える

ゲーム中に言語を切り替えるには、SetCurrentCultureノードを使う。

Cultureに指定する文字列は、ここの言語にマウスオーバーして表示される文字列「ja」とか「en」とかを入れる。

4. テストプレイ

ローカライズ機能をテストする際は、「Standalone Game」で実行する必要がある。

5. パッケージ化設定

ローカライズ機能を含めてパッケージ化する際は、設定が必要。
「Project Settings > Packaging > Advanced > Languages to Packege」で含める言語にチェックを入れておく。

最適化

影の品質を落とす

GrassTypeの影を切る

小さな草や落枝などには影を切っても見た目上あまり変わらなかったりする。
GrassTypeの影を切ったら[stat gpu]のShadow Depthが半分ぐらい減った。

影の質を下げる

sg.ShadowQuality

ブループリントでやるならこれ。

影の解像度を下げる

r.Shadow.Virtual.ResolutionLodBiasDirectional
r.Shadow.Virtual.ResolutionLodBiasLocal

影のサンプル数を減らす

r.Shadow.Virtual.SMRT.SamplesPerRayDirectional

最適化のためのパフォーマンス計測

ざっくりボトルネックを絞る

stat unit
Header1 Header2
Cell1 Cell2

CPU処理のボトルネックを深掘る

調査コマンド

stat game

描画処理のボトルネックを深掘る

調査コマンド

stat gpu

影を切るテスト

r.ShadowQuality 0

Lumen Global Illuminationを切るテスト

ShowFlag.LumenGlobalIllumination 0

ScalabilityでGlobal Illuminationを切るテスト

sg.GlobalIlluminationQuality 0

Lumen Reflectionsを切るテスト

ShowFlag.LumenReflections 0

RichTextBlockでテキスト内に動的に切り替え可能な画像を設定する

1. Widget内にRichTextBlockを配置する

2. スタイルシートを作成する

RichTextStyleRowを選択してデータテーブル DT_RichTextStyle を作成する

DT_RichTextStyle に行を追加し、テキストスタイルを設定する。

Widgetに戻ってRichTextBlockのTextStyleSetのところに DT_RichTextStyle を設定する。

コンパイルするとRichTextBlockに文字が表示されるようになる。


3. デコレータを作成する

RichTextBlockImageDecoratorを選択してブループリント BP_RichTextDecorator を作成する。

RichImageRowを選択してもう一つのデータテーブル DT_RichImagesを作成する。

DT_RichImagesに行を追加し、画像を設定する。

WidgetのRichTextBlockの詳細設定のDecoratorClassesにBP_RichImagesを設定する。

BP_RichTextDecorator の ImageSet のところに DT_RichImages を設定する。

そしてWidgetのRichTextBlockに「<img id="Xbutton"/>」のように記述するとテキスト内に画像が表示される。

CommonUIプラグインを用いた入力ボタンアイコン切り替え

1. プラグインを有効化する

CommonUIプラグインを有効化する

エディタを再起動したら、ProjectSettingsの「Game - Common Input Settings > Input > Enable Enhanced Input Support」にチェックを入れてエディタを再起動する。


2. 画像を設定する

「Blueprint Class > CommonInputBaseControllerData」を継承したブループリントを対応するデバイスの数だけ作成する。

2-1. マウス・キーボードの設定

「Class Defaults > Details > Default > Input Type」を「Mouse and Keyboard」に設定する。

「Class Defaults > Details > Display > Input Brush Data Map」にボタンと画像を設定する。

2-2. ゲームパッドの設定

「Class Defaults > Details > Default > Input Type」を「Gamepad」に、「Class Defaults > Details > Gamepad Name」を「Generic」に設定する。


3. Project Settingsの設定

Project Settingsを開き「Game - Common Input Settings > Input > Platform Input > Windows」のDefault Gamepad Nameを「Generic」に設定し、またControllerDataに作成したCommonInputBaseControllerDataを登録する。

GeneralSettingsの「Game Viewport Client Class」を「CommonGameViewportClient」に変更し、エディタを再起動する。

次に CommonUIInputData を継承したブループリントを作成し、BP_CommonInputDataとする。

これをProjectSettingsの「Game > Common Input Settings > Input Data」に設定する。


4. Widgetに設定する

CommonActionWidgetを継承したブループリント「BP_InputActionWidget」を作成する。

入力ボタンアイコンを使用したいWidgetにBP_InputActionWidgetを配置し、「Details > Common Action Widget > Enhanced Input Action」を設定する。

Enhanced Inputを用いて入力を制御する

1. InputActionを作成する

「Input > Input Action」からInputActionを、ボタンに紐づける一つのアクションごとに作成する。

「Details > Action > Value Type」を設定する。


2. InputMappingContextを作成する

「Input > Input Action > Input Mapping Context」からInputMappingContextを作成する。



3. IMCを有効化する

PlayerController上から以下のノードでIMCを有効化する。