Slide 1

Slide 1 text

Addressableアドレス自動付与ツール 「Smart Addresser」の概要と使い方 SGEコア技術本部 2023.04.13 矢野春樹

Slide 2

Slide 2 text

SmartAddresser ついさっき100Starsに!

Slide 3

Slide 3 text

Smart Addresserの概要 Chapter : 01

Slide 4

Slide 4 text

アドレス付与、どうしてますか?

Slide 5

Slide 5 text

手動 Drag & Drop

Slide 6

Slide 6 text

自動化 ※処理は適当です

Slide 7

Slide 7 text

書いた人以外にわかりづらくなりがち 車輪の再発明しがち

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Smart Addresserの基本的な使い方 Chapter : 02

Slide 10

Slide 10 text

Addressable Groupを作る 普通にAddressableのウィンドウから作る SmartAddresserは、Addressable Groupを作ったり、その設定を変更したりはしません ※ このあたりやりすぎると色々とカオスになるため(どこまでやるのか難しくなる)

Slide 11

Slide 11 text

Layout Rule Dataを作る Smart Addresserのユーザデータを保存するScriptable Object Assets > Create > Smart Addresser > Layout Rule Data から作る

Slide 12

Slide 12 text

制御するAddressable Groupを決める 前ページのLayout Rule Dataをダブルクリックして下図のウィンドウを開く Smart Addresserで制御するAddressable Groupにチェック チェック

Slide 13

Slide 13 text

アドレス付与対象のアセットを設定する Addressable Groupを選択し、右側のAsset Groupsタブから「+」ボタンを押下し このAddresable Groupに含めるアセット群を決めていく 「全アセットから対象のアセットをフィルタリングしていく」という考え方 図は「Rockフォルダ配下の拡張子がprefabのもの」全てをアドレス付与の対象としてる図 Rockフォルダ内 拡張子がprefab

Slide 14

Slide 14 text

カスタムアセットフィルタ いろんなフィルタがあります 独自のアセットフィルタも作れます マスタデータに定義されているIDを含むアセットだけフィルタリングとか

Slide 15

Slide 15 text

アドレスプロバイダーを設定する 右側のAddress Providerタブからアドレスの付与方法を設定 アセットパスをアドレスにしたり、アセット名をアドレスにしたり 正規表現を使ってReplaceした結果をアドレスにすることも可能 Assets/Prefabs/Characters/0001.prefab → pfb_ch_0001 みたいな Address Provider タブ アセットパス/アセット名.. 正規表現設定

Slide 16

Slide 16 text

カスタムアドレスプロバイダー 独自のアドレスプロバイダーも作れます マスタデータに定義されているアドレスを付与したいとか ※これ以降省略しますが、基本的にこういう拡張性あるべきところに全て入れてます

Slide 17

Slide 17 text

適用する 右上のメニュー > Apply to Addressables もちろん適用するためのCLIもあります

Slide 18

Slide 18 text

自動適用 Project Settings > Smart Addresser > Primary Data に設定した Layout Rule Dataはアセット追加・移動時に自動的に適用される(差分のみ) このルール自体に変更を加えた際には全適用する

Slide 19

Slide 19 text

ラベルも大体同じ Label Rulesタブから設定できる Asset Group と Label Providerを設定して付与できる パスにPlayer/Enemyを含む全Prefabにcharacterというラベルを付与するとか Label Rulesタブ

Slide 20

Slide 20 text

Layout Viewerでチェック 現在の設定に基づいて実際にプロジェクト内のアセットがどうレイアウトされるか見れる エラーや警告があったらその詳細も見れます バリデーションするためのCLIもあります

Slide 21

Slide 21 text

バージョン管理機能 Chapter : 03

Slide 22

Slide 22 text

バージョン管理機能とは アセットごとにバージョン(semver)を振れる 指定したバージョンアセットのみをAddressableに適用できる e.g. バージョン1.0.0以上2.0.0以下のアセットのみをAddressableに適用 ※ オプショナルな機能なので使わなくてもOK 1.0.0 1.1.0 1.2.0 2.0.0 2.1.0 2.2.0 3.0.0 3.1.0 3.2.0 バージョン1.0.0以上2.0.0以下のアセットだけを適用

Slide 23

Slide 23 text

設定方法は大体ラベルと同じ Version Rulesタブで設定

Slide 24

Slide 24 text

適用前にバージョン範囲を指定 Settingsタブでバージョンの範囲を指定できる 指定方法はUnityのVersionDefinesに準拠するように作っています 例えば1.0.0以上1.2.0未満だったら [1.0.0,1.2.0) みたいな感じ 独自のバージョン範囲解釈クラス(VersionExpressionParser)を使うことも可能 バージョンの範囲を指定 バージョン振ってないアセットを除外するならチェック

Slide 25

Slide 25 text

依存関係に注意 バージョン管理機能はあくまで対象のアセットをAddressableに登録しないだけです 当然ながら、リリース可能バージョンのアセットから、リリース不可能バージョンのアセッ トへの依存がある場合には、Asset Bundleにリリース不可能バージョンのアセットが暗黙 的に含まれます 実際のユースケースを考えるとそもそもアセットの作り方をミスってない限りそんなことは 起こらないはずですが、一応ご注意を (そういうミスの検知にはAsset Regulation Managerがおすすめです) 1.0.0 3.0.0 リリース可能 リリース不可能 参照してたら 含まれてしまう

Slide 26

Slide 26 text

ぜひ使ってみてください github.com/CyberAgentGameEntertainment/SmartAddresser