ゲーム企画から開発、UI・デザイン制作、運営まで制作委託をトータルサポート!

ふらふら画像
  • 2021/12/10 【開発ブログ】ローカライズの構造について
    すみません。1ヶ月に1回ぐらいはブログ更新したいな…とか思っていたのに
    気がついたらすでに2ヶ月以上が経過してました。
    ぽんこつ老害ディレクターのヤスムです(※ブログやってみようぜとか言い出した老害)

    Unityに対応しているおすすめアプリ開発会社13選!【2021年最新版】
    という記事でご紹介していただいたことを、最近知りました。

    とてもありがたい反面、もっと頑張らねば!と気持ちを引き締める今日この頃です。お仕事ください。

    前回の記事で社内の状況なんかも軽く触れていたりしますが、もしかするとお気づきになるかもしれません。
    僕らは 経験が足りない 伸びしろだらけのベンチャー企業だということに!

    そんな感じ(?)なので、基本的には他社さんがどのように開発しているのかを知りません。
    実装時にはかなりの部分で試行錯誤の連続です。
    社内プロジェクトの場合は職種に関わらず試行錯誤につきあってもらっています。

    僕もアラフィフになってからUnity(ユニティ)を学び始めることになりました。
    ※補足:Unityとは超有名な【統合開発環境】で、BARRICADEZもコレで作っていたりします。

    今回のブログ記事ではベンチャー企業っぽく(?)
    挑戦していく過程で得たUnityなどの役立ちそうな気がしなくもない(と僕が思っている)
    情報などを紹介してみようかと思います。

    誰に対して何の目的で書くのかもふんわりしてますが……

    とりま、僕のような初心者に毛が生えてきたばかりの毛が抜けてきたクリエイター向け……
    或いはこれからゲームを作ってみたい人に向けて。
    なんとなく「わかってるフリ」ができるところをゴールに書いていこうかと。

    あわよくば会社の魅力を伝えて知名度向上も狙っていきたいです!

    面白くはないかもしれませんが、ご了承のうえで読み進めていただけましたら幸いです。

    BARRICADEZの開発画面

    BARRICADEZの開発画面ですハイもう複雑!

    全部説明していくと大変なことになるので、とりあえず「わかってるフリ」ができそうな情報だけ。

    プロジェクト :フォルダの中身です。
    シーン    :場面です。視覚的な情報をここで管理します。
    ヒエラルキー :オブジェクト(後述*)を階層的に配置します。
    インスペクタ :詳細情報です。主にオブジェクトの情報を表示していじくります。
    コンポーネント:インスペクタにコレをいくつか入れて管理します。

    * オブジェクトとは見えたり見えなかったりするけど確かに存在している「何か」です。意味わからない。

    作り方としては
    1:プロジェクトでフォルダ構成とか考えながらファイルを入れる。
    2:シーン(場面)を適当に作る。
      するとヒエラルキーが開けるようになり、カメラのオブジェクトとか勝手に配置される。
    3:ヒエラルキー(階層)に適当なオブジェクトを作る。
      するとインスペクタが開けるようになり、表示座標などのコンポーネントが勝手に配置される。
    4:複数のオブジェクトの複数のコンポーネントをいい感じに更新する。
    5:画面上部にある【再生ボタン】を押して動作を確認する。
    そんな感じ。

    ちなみに、Unityで使うプログラミング言語は C#(シーシャープ)です。

    すげえ蛇足1:
    「C言語」と呼ばれる古いプログラミング言語を使いやすくしたのが「C+」で、 さらに使いやすくしたのが「C++」、さらにさらにと続けた先に生まれたのが「C++++」、つまり
    ++
    ++
    ということで、「C#」らしいですよ。雑談ネタとしてドヤっていきましょう。

    すげえ蛇足2:
    プログラムとは機械語(0と1で書かれてるアレ)のことです。
    ゲーム内で動作する処理を記述したファイルは「スクリプト」とか「スクリプトファイル」って呼びます。
    「ソース」とか「ソースファイル」とか「コード」なんて呼ぶこともありますが、ぶっちゃけ違いはよく分からないです。
    突っ込まれると困るので「スクリプト」って言うように、発声練習しておきましょう。
    さらに蛇足ですが、プログラマーに「プログラムを書いて!」と頼むと若干マジギレする方もいるので注意が必要です。
    幸いにして、そういったプログラマは弊社に居ません。本当です。


    閑話休題:
    この記事全てが閑話みたいなもんですが、 話を元に戻します。

    この C# のスクリプトファイルもコンポーネントとしてオブジェクトに入れて動かします。
    動き始めてしまえばオブジェクトに入れていないスクリプトを呼び出すこともできるのですが、 管理しやすくするために「わかりやすいオブジェクト」に入れておくことも大事っぽいです。

    わかりやすい場所にあるコンポーネント内に、わかりやすい設定項目を作っておけば 後からいい感じに調整できたりできなかったりします。
    プログラマ以外の職種の方もコンポーネントを触ればいい感じになったりならなかったりすることを覚えておきましょう。

    長々と書きましたが、前提情報としてはコレぐらいにして……

    掲題の「ローカライズの構造」について。

    ローカライズとは外国語に対応することですが、コンテンツ制作の現場でこれを無視するのは本当に危険です。
    理由は色々とあるのですが、日本の人口が減ってるのにゲームクリエイターは人気職で、 個人制作でも(お金をあまり掛けずに)凄いクオリティのゲームが作れる時代になってきた点が大きいです。

    というワケで海外市場を狙っていきましょう!(安直)
    ローカライズを実現する方法は無限にあると思いますが、 僕らが行った方法は通常のテキストコンポーネントが組み込まれているオブジェクトに ローカライズのコンポーネント(自作)を突っ込み、外部に保管したテキストファイルを参照する方式です。

    Localizeコンポーネント

    上記の例であると「Tutorial_01」というオブジェクトに Textコンポーネント と Localizeコンポーネント を入れています。

    言語が Japanese の場合はそのまま Textコンポーネント を表示。
    言語が English の場合はKeyを取得(Keyが未入力ならオブジェクト名を取得)して、 01_en.txt というファイルを参照してKeyに対応する文字を表示しています。
    (※ついでにフォントもこの処理経由で指定していますが、設計的には良くないかも?)

    この構造であればプログラマ以外の職種の方が翻訳するかどうかを判断して、 プログラマの手を借りずに翻訳対応を進めていくことができるのです!

    応用していけば僕ひとりでもゲーム制作が可能に!?…やった!(やってない)

    まとめ

    新しい仕様を伝えたり、既存の処理に追加や調整を行う場合には どのオブジェクトに対して、どんな機能を持ったコンポーネントを入れるか…を考えて提案してみましょう。
    たぶんきっとそれは次世代の「プランナー」ムーブかもしれない。

    (※注意:プログラマによってはイラっとすると思うので、自己責任でお願いします)

    おまけ

    今回紹介したローカライズ用のファイル(01_en.txt)はSTEAM版の BARRICADEZ で確認可能です。

    ランチャーからプロパティに進み、ローカルファイルの参照。
    BARRICADEZ_Data → StreamingAssets → Language に入ってます。
    ※左側にkey。タブを挟んで入力されているのがゲーム内に表示する文字です。

    例えばここに 07_関西弁.txt とか適当なファイルを突っ込むと自動的に追加されたりします。
    そう、実はBARRICADEZは翻訳を外部委託することを最初から想定した作りだったのです!

    よかったら買ってください。生き残りたい。




    「Unity」、Unity のロゴ、その他の Unity のトレードマークは、米国およびその他の地域での Unity Technologies または関連会社の商標または登録商標です。

    ※当サイト/当ブログへのリンクに対する許可は不要です。ご自由に!
    ただし当社の作成した画像や記事をそのまま丸っと転載するのは避けていただけますと幸いです。
最新の記事
OLD <     > NEW
最古の記事