かなり遅れましたが、Lumberyard Advent Calendar 2017 23日目の記事です。
LumberyardのGemを有効にしてみましょう。
今回、検証で使用したバージョンは1.12.0.1です・
#Gemとは?
Gemはゲームプロジェクトを拡張するためのコードやアセットが含まれているパッケージのことを言います。
超簡単に言えば、Lumberyardのプラグインみたいなものです。
LumberyardもGemにあるアセットを有効にすることによって、VR開発、Twitch、ScriptCanvas等の機能を使うことが可能です。
Gemを有効にするには、他のゲームエンジンと比べて少し手間がかかるので、公式ドキュメントを見ながらちょっとまとめてみました。
おまけ 自作のGemについて
Gemは開発者が新規に作成することも可能のようです。
今回は触れないので興味ある人は、こちらのドキュメントの「プロジェクトコンフィギュレータ を使用して新しい gem を作成するには」「コマンドラインを使用して新しい Gem を作成するには」をお読みください。
#前提条件
デフォルトのエンジン設定ではGemがそもそも使えないため、Lumberyard セットアップアシスタント で [Compile the game code] オプションを選択しておく必要があります。
上から三番目のチェックを有効にします。
Gemを利用するにあたり、Insttall required SDKで必要なSDKをすべてインストールする必要があるので、セットアップアシスタントで一括でダウンロードしましょう。
#Gem有効手順
今回は既存で作成したプロジェクトに新規のGemを有効にします。
※プロジェクトの作り方はまめおさんのLumberyard 新規プロジェクト作成方法を見てください。
有効にするには、Lumberyard Project Configuratorから該当のプロジェクトのEnable Gemsをクリックします。
※今回検証用に作成したプロジェクトは「Test1」になります。
Gemを有効にする前に、あらかじめプロジェクトを右上にある「Set as default」で、デフォルト起動プロジェクトにしてください。
※これをやらないと後述の作業がすべてエラーが出力されるか、別プロジェクトにあるGem設定が反映されてしまいます。
選択自体は、使いたい機能にチェックを入れて、右上のSaveを押すだけです。
非常に簡単です。
※(REQUIRED)と赤文字で書かれているGemは必須項目なのでチェックを外さないでください。外してSaveしてしまうと最悪プロジェクトが壊れる可能性があります。
ただ、Gemを有効にしただけではプロジェクトにその機能が追加されません。
またGemによってはプロジェクト起動時にエラーが発生して開けなくなる場合があります。
そのため、プロジェクトを再ビルドする必要があります。
#プロジェクト再ビルド
早速プロジェクトを再ビルドしましょう。
ビルドするにはコマンドラインが必要です。Windowsでは一応コマンドプロンプトでも行けたので、そちらのやり方を書いていきます。
※もし、ビルド時に謎のエラーが起きる場合はAWS コマンドラインインターフェイスをインストールすれば解決するかもしれません。
1.コマンドラインでdev ディレクトリに移動
デフォルトの設定でインストールしたのであれば、以下の通りコマンドを入力してください。
「cd」と入力して、エンジンをインストールしたフォルダのdevをドラッグアンドドロップするだけです。
移動完了です。
2.lmbr_waf configure実行
実行するとこのような感じでコマンドが走ります。
最後、finished successfullyが出れば成功です。
※ここでエラーが起きる場合、プロジェクトが別の設定になっている(削除済みのプロジェクトを対象に実行している)可能性があります。
3.lmbr_waf build_win_x64_vs2015_profile -p game実行
最後、「lmbr_waf build_win_x64_vs2015_profile -p game」と入力して実行します
※上記はVisual Studio 2015をインストールしている場合です。
※Visual Studio 2013をインストールしている場合は、「lmbr_waf build_win_x64_vs2013_profile -p game」と入力します。
このビルドが一番時間がかかるので、気長に待ちましょう。
何事もなく無事successfullyが出れば再ビルド完了です。
新規追加分のGemがプロジェクトに反映され使えるようになっています。
再ビルドのエラーについて
Lumberyardがベータ版であるせいか、いくつかのGemを有効にすると再ビルド時にエラーが出力されることがよくあります。
上記の例ですと、AnimGraph.cppがUnicode形式以外になってるというエラーです。
該当のソースの文字コードをUnicodeに変換しましょう。
中には文字コード以外が原因でエラーを吐くGemもあります。
※元のソース(CryEngine4)の60%強を修正したとのことなので、その影響が出ている可能性は否定できません。
※追記
上記の文字コード以外のエラーは、すべてのGemを有効にした場合に発生してました。
そのためどのGemが原因なのか完全にわかっていないため、調査して問題のあるGemが分かり次第再掲させていただきます。
もしフォーラムをみて解決方法が書いていない場合は、自力で頑張ってエラー吐いているソースを修正するしかありません。
ベータ版であるためにちょっと不安定な部分もあります。
まとめ
ちょっと手間はかかりますが、Gemを利用すれば様々な機能を使うことが可能です。
もし、ベータが外れた場合、この機能がほかのエンジンでいうAsset Store的な役割をする可能性は十分あると思います。
この手間をかけずに、簡単にGemの機能を反映されてほしいなという気持ちもあるので、今後のGemに期待しています。