Bricks
brick は、他のプロジェクトがインストールできるスクリプト、アセット、アセンブリ定義を収めた、package.json を持つフォルダです。エンジン自身のカメラリグとゲーム内 UI も brick なので、それらを使わないゲームには含まれません。package.json、ロックファイル、Bricks/ フォルダはパッケージという名前のままですが、あなたが扱うものはすべて brick と呼びます。
インストール
プロジェクトは Bricks/manifest.json に brick を列挙します。隣の packages-lock.json は何が解決されたかを正確に記録するので、コミットしてください。新規プロジェクトは組み込みの brick から始まります。
{
"dependencies": {
"org.mass4.turian.cameras": "builtin:org.mass4.turian.cameras",
"user.mateo.inventory": "^1.0.0",
"com.acme.rules": "git+https://github.com/acme/rules.git#v1.2.0",
"com.acme.levels": "file:../bricks/com.acme.levels-1.0.0.brick"
}
}
| ソース | 意味 |
|---|---|
builtin:<id> |
エンジンに付属 |
file:<フォルダ> |
その場で使うフォルダ。開発中の brick 向け |
file:<x.brick> |
パックされた brick。ストアに一度だけ展開される |
git+<url>[#ref] |
git リポジトリ。ロックではコミットに固定される |
^1.0.0(バージョン範囲) |
その名前にスコープされたレジストリから取得 |
brick はマシンごとに一度だけ ~/.gaya/bricks に保存され(GAYA_BRICKS を設定すると、たとえば CI キャッシュなどに移せます)、プロジェクトにはコピーされません。プロジェクトが持つ各 brick のバージョンはちょうど 1 つです。
コマンドラインから
turian-cli brick … と Studio の Project → Bricks… は同じことを行います。
| コマンド | |
|---|---|
add、remove、list |
プロジェクトがインストールするものを変更・表示 |
restore [--locked] |
すべてを取得。--locked はマニフェストとロックが食い違うと失敗(CI で使用) |
update [id…] |
git の brick を最新のコミットへ移動 |
search、registry add\|list\|remove |
brick を探す。レジストリと信頼する鍵を選ぶ |
new <id> |
brick を開始:マニフェスト、アセンブリ定義、スクリプト |
verify [--against <brick>] |
すべてのアセットが一意の .meta を持つ。--against ではスタブが本物の brick と一致するか確認 |
pack [--precast]、publish |
.brick を書き出す、またはレジストリフォルダに追加 |
embed、diff、rebase |
brick をプロジェクトにフォーク、変更点を表示、次のリリースをマージ |
copy |
brick のアセットの一部を新しい id で Assets にコピー |
stub |
同じ id を持つプレースホルダー。未完成の brick の上に構築するチーム向け |
brick を作る
turian-cli brick new user.you.inventory でフォルダが作られます。id は小文字の逆 DNS 形式です。自分のドメイン(com.acme.inventory)を使うか、なければ user.<名前>.… を使います。
- スクリプトはアセンブリ定義(New → Scripting → Assembly Definition で作る
.dataasset)の下に置きます。すべてのスクリプトとアセットは.metaと共に出荷されます。中の id が他のプロジェクトから参照されるものなので、安定させてください。 - 名前が
~で終わるフォルダ(Samples~、Documentation~、Precast~)はインポートされません。 enginesは動作するエンジンのバージョン("turian": ">=1.0 <2")、dependenciesは他の brick、nugetはビルド済みアセンブリが必要とする NuGet パッケージ、licenseは SPDX 式を示します。turian-cli brick pack --precastはアセンブリをPrecast~/にコンパイルします。そのファイルをインストールした人は、あなたのコードをコンパイルする代わりにアセンブリを読み込みます。
再利用可能な GitHub ワークフロー MASS4ORG/Turian/.github/workflows/brick.yml が、brick を検証し、パックし、リリースします。
インストールしたものを変更する
インストールされた brick は読み取り専用です。手間の少ない順に:
- そのまま id で使う。
- プレファブバリアントまたはデータアセットバリアントを作る(
turian-cli variant):オリジナルに上書きした値を加えたもので、オリジナルが変わると追従します。 - brick のアセットのインポート方法を
ProjectSettings/PackageImportOverrides.jsonで変える({ "<asset id>": { "GenerateMips": false } })。 - アセットをプロジェクトにコピーする(
brick copy):新しい id が付き、brick に追従しなくなります。 - brick 全体を埋め込む(
brick embed):Bricks/<id>に書き込み可能なコピーができ、インストール済みのものより優先されます。brick diffは変更点を一覧し、brick rebaseはオリジナルの次のリリースをそこにマージします。
レジストリ
レジストリは署名付きインデックスを持つ静的サイトです(形式:エンジンリポジトリの docs/bricks/registry.md)。プロジェクトは、スコープされた名前についてレジストリから brick を取得し、自分で列挙した鍵だけを信頼します:
"scopedRegistries": [
{ "name": "studio", "url": "https://bricks.studio.example/v1", "scopes": ["com.studio"], "keys": ["ssh-ed25519 AAAA… studio"] }
]
ロックは各 brick のバージョン、ファイルハッシュ、署名鍵を記録します。署名は OpenSSH の ed25519 署名なので、公開者は既に持っている鍵を使えます。
Unity パッケージのインポート
turian-cli import unitypackage Crates.unitypackage --brick user.you.crates --out bricks/(または --project <フォルダ>)は、対応するものを変換し、残りを報告します。テクスチャ、モデル、オーディオは Unity の id とフォルダを保ち、Turian に存在するテクスチャ設定も引き継がれます。マテリアルとプレファブ/シーンは変換され、スクリプト、シェーダー、アニメーションはスキップとして一覧されます。パッケージのライセンスを確認してください。ツールはそれを変更しません。