21.6K Views
November 06, 19
スライド概要
発表者: 礒貝波留佳さま(ソレイユ株式会社)
本スライドは2019年10月31日に行われた勉強会「 UE4 Localization Deep Dive」の講演資料となります。ソレイユ様、このような貴重な情報を一般に公開していただきまことにありがとうございます!
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
UE4ローカライズ事例 ソレイユ株式会社 エンジニア 礒貝波留佳 2019/10/31
目次 1. 2. 3. 4. 5. はじめに テキスト以外のローカライズについて テキストのローカライズについて その他の事例 まとめ
1. はじめに
自己紹介 礒貝 波留佳(イソガイ ハルカ) ソレイユ株式会社 ・ソフトウェアエンジニア ・UE4は今回が初経験 ・主にUI周りの担当しました
1.はじめに 開発タイトルについて NARUTO TO BORUTO シノビストライカー https://naruto-action.bn-ent.net/ 発売日 : 2018年8月30日 ジャンル : オンラインアクロバティック忍者アクション プレイ人数 : 1人(オンライン時1~8人) プラットフォーム : PS4, Xbox One, Steam ・発売元:バンダイナムコエンターテインメント ・©岸本斉史 スコット/集英社・テレビ東京・ぴえろ ©BANDAI NAMCO Entertainment
1.はじめに 開発環境 UE4開発Ver : 4.12 → 4.16 対応言語(13言語) 日本語、英語、ポーランド語、ロシア語、イタリア語 韓国語、中国語(簡体字、繁体字)、ポルトガル語(ブラジル)、 フランス語、スペイン語(スペイン、 ラテンアメリカ)、ドイツ語 ローカライズ対象 ボイス、テキスト、UIテクスチャ、エフェクト、フォント、ムービー
2. テキスト以外のローカライズについて
2. UIテクスチャ ローカライズが必要なテキストを含むテクスチャを このスライドではUIテクスチャと呼びます。 ゲーム内では画像として表示されますが、 予めローカライズしたテキストをテクスチャに書き込み、 言語ごとに切り替えて使用します。 例: バナー、メニュータイトルなど
2. UIテクスチャ 全言語に対応 Asset Localizationを使用 テクスチャ作成の基本的なワークフロー レイアウトと ローカライズ アセット 言語別の 依頼 作成 調整 テキストの 決定
2. UIテクスチャ 言語別のテクスチャ調整について 例) テキストとキャラ画像を含めたバナー画像 あいうえお かきくけこ ABCDEFG HIJKLMN OPQRSTU VWXYZ Character Name 単純に翻訳されたテキストを設定すると入らない場合もあるので テキストサイズの変更、画像の位置調整など全言語別で確認しつつ…
2.フォント 5種類 × 全言語対応 Asset Localizationを使用 Font Asset Font Face (ローカライズ) Asset ja Fontデータ① en Fontデータ① es Fontデータ② Font Asset Font ※言語によってフォント側が 未対応の場合は 別のフォントを使用
2.フォント 色々とありました。 1.テキストボックスで特定言語で文字が切れる問題が発生 →日本語基準にUI作成していたのが主な原因 ←「村」では問題がなかったが 「Village」の「g」で 下の部分が切れてしまっている… ※画像はイメージです
2.フォント 2.テキストが正常に表示されていない問題が発生 →前ページの見切れ問題の確認のために仮で入れた 特定の言語のフォントデータを設定したままだった 全言語データが同じ名前で リストアップされるので ファイルパスを 確認しないとわからない…
2.フォント 3.フォントの中心位置や余白の調整が大変だった →言語によってはそれぞれ異なるフォントデータを使っていたので 中心位置やデザインをあわせる対応を 全ての言語のフォントデータを確認、手作業で修正しました
2.フォント 基準とするフォントデータ ※画像はイメージです
2.フォント 別の言語のフォントと比べてみた 色々とずれてる… ※画像はイメージです
2.フォント サイズを合わせました ※画像はイメージです
2.フォント 行間をあわせるために余白を調整しました ※画像はイメージです
2.フォント 幅をあわせました 良い感じになりました ※画像はイメージです
2.その他 ボイス 対応言語は2言語(日本語、英語) UE4のローカライズ機能は未使用、 ミドルウェア(Wwise)の機能のみで対応 ムービー 対応言語は2言語(日本語、英語) ローカライズ機能は未使用、 リージョン別で使用する動画をBP側で判断 ※その都合全データがパッケージに含まれている
3. テキストのローカライズについて
3.はじめに 対応方法 Asset Localizationを使用してテキストを登録した データテーブルを切り替えることでローカライズに対応 Localization Dashboardを使わなかった理由 ・開発時テスト段階だったので正常に機能するかが不明 ・サンプルが不足 ・検証するまでの時間がない ・動作が不安定だった
3.データテーブルの独自アセット化 独自アセットをデータテーブルの代わりに使用 ・UE4上でのデータテーブル編集が使いにくい ・複数人の同時編集がしたいetc…
3.データテーブルの独自アセット化 Googleスプレッドシートで外部データ化 ・複数人で同時編集が可能 ・入力規則や数式の設定、別シート参照も簡単にできる
3.データテーブルの独自アセット化 編集内容の履歴も自動で記録される
3.データテーブルの独自アセット化 1スプレッドシートで1アセットのデータを管理 必要に応じてアップデートのバージョン別でシートを複製 Ver1 アセット Google スプレッドシート ← 旧配信データ(使用なし) Ver2 ← 現在の最新の配信データ Dev ← 次の開発作業を行う
3.データテーブルの独自アセット化 エディター拡張もしました →アセットのデータを定義する構造体、参照するスプレッドシートのIDと シート名の設定が可能
3.データテーブルの独自アセット化 Import機能はGoogle Execution APIで実装 <基本的な流れ> (1)Editor上で新規作成、またはReimportを選択 (2)設定されているシートのID、シート名を取得 (3)C#アプリを実行してスプレッドシートのデータをJson形式で取得 (4)アセットに反映 Google Import C# Spread Sheet Json Asset
3.データテーブルの独自アセット化 Googleスプレッドシートで後々困ったこと ・権限管理 →不要になったアカウントに対する制限など ・バージョン管理 →履歴機能はあるが履歴名、コメント設定が ルール化されていなかったので何を編集したものか不明 ・自動保存によるエラーデータのマスター反映 →Import時のチェックはあるが全ての対応はできず
3.テキストのローカライズ まずはじめに… < 翻訳のフロー> (1)日本語テキストの決定 (2)Googleスプレッドシートに設定 (3)Excel形式に変換して外部に翻訳を依頼 (4)翻訳データをGoogleスプレッドシートに反映 (5)データテーブルにImport
3.テキストのローカライズ Importや読込のタイミングを管理するアセットを専用で用意 管理データ(Singleton) 全テキストデータを 管理する専用アセット Shop Weapon Item [Ja] [Ja] テキスト1 テキスト1 テキスト2 テキスト2 … … 用途別の テキストデータ × 13言語 [Ja] [en] テキスト1 テキスト1 テキスト2 テキスト2 … …
3.テキストのローカライズ テキストデータはID(カテゴリ+キー)、テキストの形式で管理 参照する際はアセット登録名とIDをあわせて指定しテキストを取得
3.テキストのローカライズ テキストをビルド更新なしで変更できる機能を追加しました。 → パッチ無しで配信できるマスターデータを 独自アセットから作成していたので 差し替え用のテキストデータを含めることで対応 1. テキストを変更したい! 2. 専用のデータにIDと紐づくテキスト(全言語分)を追加、 後から変更したい場所に追加したIDを設定 ※中身は表示されても問題のない仮のテキストを設定 3. 変更を行いたいビルドを配信する前にデータを配信 4. 表示する際、専用IDなら配信データからテキストを参照する
3.ローカライズ機能を独自実装した感想 良かった点 ・作業コストが少ない ・外部データ化したのでデータの確認、取扱が簡単 ・テキスト変更機能の追加対応がすぐにできた 反省点 ・エディター上でのプレビュー機能がない ・バージョン管理ツールで差分が確認できない
3. 翻訳小ネタ 翻訳時に日本語の意味合いが伝わらず苦労… 日本語 白玉 黒蜜 きんとん よもぎ餅 胡麻あん Yomogi Mochi Sesame Paste 英語 White Beads Black Syrup Yam
4. その他の事例
4.イメージ+テキストの対応 操作説明のテキストにはボタン画像を含める必要があった →テキストとイメージを合わせて表示する機能作りました <対応方法> 1.テキストに操作ボタンの画像定義を含めてローカライズ 例) 移動は{input_icon="LStick"} 攻撃は{input_icon="RStick"} 2.それぞれの言語に翻訳 3.ゲーム内でテキストをパースして 必要なウィジェットを動的に生成して表示
4.禁則処理について テキスト改行で禁則処理が行われていない問題が発生 日本語で発生、一部は対応されているが厳密ではない? 「ー」、「ァ」などが適用されず問題に… →UIのサイズ変更、テキストの修正で全て対応
4.禁則処理について 正常に処理されている例 処理されていない例 ※最新のVerでは既に修正されています
4.文字数問題の対処 ローカライズテキストの文字数問題 作成時にローカライズしたテキストで一番長いものを 基準にUIを作成しているが限界がある → 中身がスクロールするテキストボックスを作成
4.数値のテキスト表示について 数値表示の形式について 言語によってカンマ、ピリオド、スペースなどで区切る 例) 日本語 → 1,234.56 ドイツ語 → 1.234,56 ロシア語 → 1 234,56 ※一部地域により例外あり 元々UE4の機能(ToText())を使用していたが 一部の言語表記が対応できず区切り表示自体をカット FText::AsNumber() FNumberFormattingOptions::UseGrouping = false
5. まとめ
5.まとめ ローカライズ関連の対応について ・データの準備段階からローカライズすることを意識 ・テキストのローカライズの自前実装に関しては 便利な反面、デフォルトで用意されている機能が 使えない問題もあるので作業期間、開発タイトルの内容による < 参考にさせて頂きました > 独自アセット化~エディタ拡張について http://historia.co.jp/archives/1401/
5.スペシャルサンクス 有限会社ウニコ 齋藤 祐司 平木 雄高 田中 浩平 ソレイユ株式会社 竹内 学