(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]



Steamの実績のローカライズ(ローカリゼーション)に使うVDFファイルをエクセルやスプレッドシートのデータから変換して作成【Unity】【Steam】【エディタ拡張】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2019.4.1f1
NPOI 2.2.1


はじめに

Steamの実績のディスプレイ名(名前)や説明はローカライズ可能ですが、

一個一個入力するのは結構大変です。


一括で設定する事も出来るのですが、

それにはVDFという聞き慣れない形式のファイルで必要になります。


という事で今回は以下のような

エクセルやスプレッドシートのデータからVDFファイルを変換するコードを書いたのでその紹介です。

f:id:kan_kikuchi:20200708073144j:plain


なお、Steamの実績をUnityで実装する方法については以下の記事を参照の事。





NPOIの導入

まず、変換用コードの前にNPOIをUnityプロジェクトに導入します。

ちなみにNPOIとは以下のような物で、エクセルをUnity(C#)で扱うために使っています。

Officeのドキュメントの操作を行う事が出来るApache POI(Javaライブラリ)の.NET用に移植されたライブラリです。C#やVB.netでOfficeのドキュメントを作成・編集する事が出来ます。また、LicenceはApache 2.0です。


NPOIは以下のDownload packageからダウンロード出来ます。

なお、最新のバージョンだと上手く動かなかったので、2.2.1を使ってます。

f:id:kan_kikuchi:20200708071543j:plain


ダウンロードしたファイルはnupkgですが、これをzipに変更するとそのまま解凍できます。

あとはlibの中にあるnet20というディレクトリをそのままUnityに移動すれば導入完了です。

f:id:kan_kikuchi:20200708071658j:plain



AchievementLocalizedDataConverter

次は本題の変換用コードであるAchievementLocalizedDataConverterです。



スクリプトをEditor以下に作成し、

変換用のファイルAchievementLocalizedDataをAssets直下に置けば準備完了。

f:id:kan_kikuchi:20200708071855j:plain


なお、AchievementLocalizedDataはxls形式のファイル

シートに言語名、各シートにID、ディスプレイ名、説明を列挙する形式です。

f:id:kan_kikuchi:20200708072317j:plain


ここで言うIDとはSteamで実績を登録した時に自動で付与される物で、

(ただし、2/0なら2_0のように/を_に変換する必要有り)

f:id:kan_kikuchi:20200708072325j:plain


言語名はAPI言語コードの事です。(SystemLanguageとは微妙に文字列が違うので注意)

f:id:kan_kikuchi:20200706074514j:plain


変換は上部のTools/Convert/Achievement Localized Dataを押すと実行出来ます。

f:id:kan_kikuchi:20200708071808j:plain


変換後のVDFファイルはAssetsと同じ場所(Unityからは見えない)にあり、

f:id:kan_kikuchi:20200708072439j:plain


これを実績のローカリゼーションで

有効にする言語を指定した後、アップロードすればローカライズ完了です。

f:id:kan_kikuchi:20200708072825j:plain


なお、アップロードした際、送信結果のJSON(?)が表示されます。(successという基準があればOK)

f:id:kan_kikuchi:20200708072843j:plain


また、実績のページに各言語が「完全にローカライズされています。」

と表示されている事でローカライズが上手く出来たか確認する事も出来ます。

f:id:kan_kikuchi:20200708072907j:plain