ゲーム作りが大好きな人のブログ

ゲームを作るのが大好きな人のブログ。UE4とBlender、MAYA(LT)、3DCoatを使用しています!

ローカライズを考える

f:id:toofu0:20160213161022p:plain

上のは自分のゲームで使っているイベントファイルです。ゲーム中のセーブクリスタルにアクセスすると上記の命令が一行単位で走ります。今回はそこまでテキストがない予定なので、セリフも直接打ち込んでおりますがローカライズはしっかりと考えなければいけません。

というわけで、ローカライズについて少し考えます。

 

※検証バージョンはUE4.10.2です

ローカライズ関係は記事を書いた現在でも実験的扱いとなっていますので将来的に機能が拡張される可能性が多々あります。

※間違えていたら申し訳ないです

 

 

UE4でのローカライズの前知識

有り難い事に有志の方が既にテキスト化してくれております。

すっごく簡単に説明するとブループリントはText型、C++ではFText型の変数がローカライズ対象となります。ちなみに、enumとUMGもローカライズの対象となります。

 

UE4でのローカライズで知っておきたい事

現状では複数のテキストで全く同じ単語は一つにまとめられる傾向があります。

この情報は知っておくと得かと思います。例えばUMG内にテキストボックスがあり、その中身のテキストは本来ブループリント側で制御するが、ビューワー上ではテキストの配置の雰囲気を見る為に仮テキストを入れていたとします。複数のオブジェクトがこのような作りをしていると、それら全ての仮テキストがローカライズ対象となります。こうなるとローカライズ時にどれが使用しているテキストか分かりづらくなる為、あまりオススメしません。

 

ローカライズで現状困った事

ローカライズ用の編集ウィンドウで「改行コード」の使い方がわからないという事。C++でインポートしてくる際には改行コードも取り込んでくれるのですが、エディター上で改行コードを追加するといった使い方ができませんでした。(ちなみに、一部テキストボックスではShift+Enterキーで改行できる)

RPGだとテキストの行数が日本語と英語で変わる事もありえるので、何かしら対策を考えた方がいいかもしれません。

一応考えた対策としては、C++側でインポートする際に改行コードを別の何かに置き換え、ブループリントでその文字列を読み込む時、ParseIntoArrayで各行を配列化してしまうといった物でした。

ただ、この機能も本当にローカライズが必要な時でしかする必要がなかった為、現状では保留といった形になっております。インポート部分で対処なので、比較的にローコストで対応できそうだからです。

 

結論

UE4のローカライズ関係は未だ実験的扱いとなっており、まだ正式には使えない状態です。ですが、一度は試しておいたほうがいいと思います。自分もイベントデータ絡みで作りなおさないといけない部分が何点か発覚しました。数が少なかったのが救いですが、そういった巻き戻りが発生しない為にも一度確認する事をオススメします。