「舞華蒼魔鏡」というゲームを作っている時に多言語切り替え対応が必要になり、
ゲーム内での言語切替処理を実装してみたのでメモです。
・舞華蒼魔鏡http://lost-identity.jp/souvenir/html/MaihanaPS4/html/Top.html
同じ処理をクロワルールというゲームでも実装しています(宣伝)
・クロワルール・シグマhttp://lost-identity.jp/souvenir/html/croixleurps4/html/top.html
とりあえずの発端はむらさめさんのこの記事を読んでやってみようと。
・言語選択
インディーゲームイベントはなんか海外の人も割と見かけるので、多言語対応しているならインゲームで選択できるようにしておくと良い。
極端な話、グーグル翻訳程度の雑な英文でも、ないより遥かに良い。海外インディー勢もちょっとそれどうなの的な翻訳で堂々と展示してるしきっと大丈夫。
今回はイベント特別仕様でタイトル画面直後ダイレクトに言語選択入れました。(本来は本体のシステム言語を識別して起動時に設定が変わる)
余計な手間だったかな?と思っていたんですが、英語でプレイしてる人は割といましたね…(^p^)
◇いろいろな多言語対応方法日本語以外の言語対応をする場合以下の対応があったりします。
(他にもっとあるかもしれませんが思いつくところでこんな感じということで)
・その言語だけのリソースでパッケージを作成する その言語に対応したものだけ入ったもの。
海外版だと英語だけ、日本版だと日本語だけの対応といったもの。
なので本体のリージョンを変更したとしても文字列が変わることはありません。
対応が一番簡単。日本版が感性していれば、
使っているリソースをその言語のものに置き換えるだけでプログラムの処理はいらない。
クロワルールの方は現在こうなってしまっています
(絶賛言語切替対応中) 海外版をだすだけならよさそうですが、多言語切り替えの対応にはなっていない。無念。
・起動時の本体設定を見てリソースを切り替える 起動時にユーザーがどの言語で遊んでいるかをみて、読み込むファイルを変更するもの。
リソースは言語ごとに用意しないといけないですが、
読み込むフォルダやファイル名を変えたりすればいいだけなので簡単。
ゲーム起動前に言語が確定できるので、リソースが用意できれば案外楽に実装できる。
多言語切り替えをいれるなら、これが遊ぶ側の要件も満たて一番コスパが良さそう。
※日本語で遊ぶ人は本体設定日本語で遊んでるよね!という想定。
・ゲーム中にリソースを切り替える ゲームが起動してリソースが読まれている状態で、言語切替の時にリソースを読み替えるもの。
すでにテクスチャだったりが読まれているのでなにげに開放とか考えるとめんどくさい!
でもこれを実装するとよさそうなので頑張ってみました。
ゲームの展示版とかだと、これがあると誰でも遊べるので良さそうです。
◇切り替えるリソース言語が変わると切り替えなければいけないリソースを挙げてみました。
・文字列 会話などの文字列データですね。
基本はこれを変えていくことになると思います。
文字列データなのでサイズも小さく、データの数も多くないのでこれを切り替えるのは簡単ですね。
実装ではラベル名を指定しておき、そのラベルの中身を言語によって変えています。
・文字列が埋め込まれたテクスチャ これはUIなどに使われているテクスチャですね。
ほんとこれだけは極力無くす方向でゲームを作っていくのがいいのかなと。
画像を言語ごとに作成するだけでも大変なので…(´;ω;`)
・フォントデータ 最後にフォント(画像)データですね。
文字列を表示するために使っているフォントデータです。
これは日本語と英語だけならあまり問題ないのですが、
繁体字や簡体字になってくると日本語のフォントセットには含まれていない文字があるので
それごと読み替える必要があります。
(全部乗っかるなら全部最初に読み込んでしまってもいい気はしますが…)
これらを切り替えたらこんな感じで画面が変わります。

日本語。

英語。

繁体字。

簡体字。
中身のテキスト、テクスチャデータ、フォントが変わっているのがわかると思います。
◇ゲーム内で言語切替処理を実装してみたというわけで、展示用にタイトル画面で言語を切り替えられるようにしてみました。
タイトルのメニューに項目を追加し、選択肢を表示するようにしました。

まずはこんな感じに。
これだけでも機能を満たしていると思うのですが
言語を切り替えるための選択肢の文字が読めないという問題が発生しました。確かにそのとおりですね。
というわけで、選択肢の中身を各言語の文字にしてみました。
他の国の文字がフォント画像の中にない!(そりゃそうです)これは盲点でした…。
言語を切り替えたらフォントデータを読み替えて表示しているので
読み替える前にはその言語の文字はないですよね…。
というわけで最終的にはこんな感じにしました。
選択肢に使う言語項目を画像にしました。最初からこうするべきでしたね…。
と、書いていて他の人はどうしているのかなーと思ったので
どこかイベントや会った時に聞いてみたいと思います!
独学でやっているので、このやり方はあまり上手い方法ではないかもしれませんが
自分用のメモとして、あとは少しでも誰かの役に立てたら嬉しいなと思います。