2021年11月15日

Evergineパッケージシステム

再利用性はソフトウェア開発において広く浸透した概念であり、開発者である私たちは常に、コードの一部を分離してライブラリやコードスニペット、あるいは異なるプロジェクトから利用可能なアセットを作成する方法を考えています。.NETの世界では、ライブラリを共有するためにNuGetパッケージを作成することが非常に一般的です。

Evergine自体はNuGet形式で配布されており、そのおかげで多くの組み込みビヘイビア、コンポーネント、サービスを提供しています。しかし、EvergineプロジェクトのContentフォルダからテクスチャ、エフェクト、マテリアルなどのアセットを共有したい場合、それは容易ではありません。この問題を解決するため、私たちは複数のプロジェクトで再利用可能なアセットを配布できる新しいパッケージシステムの開発に取り組んできました。

既存のパッケージを追加

パッケージが追加されると、そのすべてのアセット、ソースコード、NuGet依存関係が自動的に追加されます。

現時点では、Evergine Studioのユーザーインターフェースを使用してパッケージを追加することはできず、手動で行う必要があります。お気に入りのテキストエディタでEvergineプロジェクトファイル(.weprojファイル)を開き、Packagesセクションに含めたいパッケージを追加してください。

新しいエントリを追加するには、公式パッケージIDのリストをご確認ください。

例:

これを行った後、Evergine Studioでプロジェクトを開くと、Project ExplorerにDependenciesノードが追加されます。そのノードには、参照されているすべてのパッケージが含まれます。パッケージノードを展開すると、その内容を確認できます。

パッケージの一部として、アセットは読み取り専用としてマークされます。それらを変更する必要がある場合、それは可能です。アセットのコピーがプロジェクト内に作成されます。このローカルコピーは、現在のプロジェクトにおいて元のパッケージアセットを上書きします。

あるいは、ローカルパスでパッケージを参照することもできます。これは、自作のパッケージを含める場合に便利です。この場合の構文は次のようになります。

ローカルパッケージを参照する場合、パッケージアセットは読み取り専用としてマークされず、それらを変更するとローカルパッケージファイル自体が変更される点にご注意ください。

独自のパッケージを作成

独自のEvergineパッケージを作成するには、含めたいアセットとソースコードファイルを含む別個のプロジェクトを作成する必要があります。これを説明するために、単一のテクスチャと単一のコンポーネントを持つDummyPackageという架空のパッケージを作成します。

空のプロジェクトを作成した後、パッケージ定義ファイルを作成する必要があります。拡張子は.wespecとし、そこで以下を指定できます。

  • Owners: パッケージ所有者の名前。
  • Authors: パッケージ作成者の名前。
  • Description: パッケージ内容の説明。
  • Tags: パッケージを分類するためのタグのリスト。
  • Nugets: NuGetパッケージ経由で提供される依存関係のリスト。

パッケージ定義ファイルは、プロジェクトファイルと同じ階層に配置する必要があります。

テクスチャ、マテリアル、エフェクトなどのすべてのアセットはContentという名前のフォルダの下に、ソースコードファイルはSourceという名前のフォルダの下に配置する必要があります。

また、プロジェクトのビルド時にパッケージングプロセスを実行するために、Evergine.Packages.Targets NuGetパッケージをプロジェクトに含める必要があります。

ここまでの設定が完了したら、プロジェクトをビルドしてください。bin/Debug または bin/Release フォルダに、生成された wepkg ファイルが見つかります。

このパッケージをローカルパッケージとして参照する場合は、weproj ファイルに適切なエントリを追加することを忘れないでください。

動作サンプルを確認するには、MixedRealityToolkit リポジトリ などのパッケージリポジトリをご覧ください。

結論として、この新しいパッケージシステムは、開発者である私たちの作業を容易にするために生まれました。将来のバージョンでは、これらのパッケージを管理し、追加や削除をより簡単に行えるように、完全な Evergine Studio エクスペリエンスを追加する予定です。

Sergio Escalada
著者
Sergio Escalada
Plain Concepts Research