見出し画像

多言語対応とコントローラー対応

はじめに

こんにちわ、こんばんわ、のんちゃです。

unityでゲーム作っている途中で大きな障壁(物理)が出てきました。

大体のsteamやnintendoswitchにリリースしようとしている、

インディゲーム制作者が悩んでいるあれです。


そうです。

多言語対応とコントローラー対応です。

(多言語対応とは言語的な意味じゃなくて、プログラム的な意味)


今回はそんな実装日誌的なものを書いていこうと思います。


多言語対応

多言語対応するときに2点ほど方法があります。

・言語ごとにプロジェクトを分け、そこから作成していく。

・内部で言語ごとのデータベースを作成し、プログラムから入れ替えができるようにする。

どっちも長所短所はあるのですが、それぞれ見ていくことにします。


・言語ごとにプロジェクトを分け、そこから作成していく。

  長所:プログラム用のデータベースを作らなくて済む。

     言語ごとに仕様を分けることができる。

  短所:アップデートするときにすっごい手間。

     そもそもプロジェクトを書き換えるのが辛くなる。


・内部で言語ごとのデータベースを作成し、プログラムから入れ替えができるようにする。

  長所:データベースを差し替えるだけで言語切替ができる。

     データベースのみ差し替えるだけなので、

     エディットするプログラムを組むだけで楽に対応ができる。

     オプションとして実装できる。

  短所:プログラムを作らないといけない。

     そもそもプログラム内部に言語があっちゃいけない。


という感じで、どちらも長所短所が存在します。

まあ、後で楽をしたいので、後者を選びました。

データベースに言語データを入れないといけないので。

最初が結構しんどい感じです。

あと、プログラムの中に日本語が混ざっていると修正しないといけないので、それも修正するのがえぐかったです(いっぱい日本語混ざってた)


とりあえず、どちらにせよ、プログラムのstring系ワードの中に日本語混ぜるのやめようぜというだけのお話です。

実際にやったやべえ実装
GameObject hogehoge;
hogehoge.GetComponent<Text>().text = "日本語" + hogehello.ToString() + "日本語";


え、UI…?どっちにしろ辛くない?


コントローラー対応

コントローラー対応はnintendoswitchだとほぼ必須の扱いになっています(もちろん、無いソフトも無いことはないですが、だいたいはありますね)。

steamでもコントローラー有りのほうが喜ばれる傾向にあるようです。

さて、ここでコントローラー対応するのに数個ほど手法があります。

今回は2点ほど紹介していこうと思います。

InControl

わりと大人気な入出力管理システム。

採用実績はわりとあり、定番である入出力アセットではあるのですが、内部スクリプトのgoto文に個人的にトラウマを感じてやめました。

・Unity New Input System

unityが用意した新しい入出力管理システム。

今回はこっちを入れたのですが、いままでのInputSystemを全力でぶっ壊していくそんなシステムです。


Unity New Input Systemについて紹介するとすごい長くなるので、

後日の思い出話として記事にしておくとします。


あとはタッチUIとコントローラーUIでそれぞれ操作感が違うので、

そこらへん考慮したほうが良いです。

下手するとUIからやり直しなことになるので。


さて、どうしてもnintendoswitchやsteamにリリースしたいという方は多言語用プログラム、コントローラー対応を一考したほうがいいかもしれません。



この記事が気に入ったらサポートをしてみませんか?