Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
IDOLY PRIDEにおけるAssetBundleビルドパイプラインについて
Search
QualiArts
May 23, 2022
Technology
0
3k
IDOLY PRIDEにおけるAssetBundleビルドパイプラインについて
2022/05/20 CA.unity#4より
IDOLY PRIDEにおけるアセット管理とAssetBundleビルドフローや、それらを実現するために採用した技術について紹介します。
QualiArts
May 23, 2022
Tweet
Share
More Decks by QualiArts
See All by QualiArts
モバイルゲームの開発を支える基盤の歩み ~再現性のある開発ラインを量産する秘訣~
qualiarts
0
1.2k
モバイルゲームで自動テストが効果を発揮するまで ~自動テストを「運用」するまでの組織のアプローチ~
qualiarts
2
2.3k
UnityのHumanoidと共存する キャラクタジョイント制御と 制作ワークフロー
qualiarts
1
6.4k
詳解 "Fixing For Loops in Go 1.22" 自作linterをgolangci-lintへコントリビュートした話
qualiarts
9
2.2k
Goバックエンド標準化プロジェクトの取り組み
qualiarts
4
1.4k
自作ツールTitanと ベクターUIを使った IDOLY PRIDEの UIアニメーションの実装
qualiarts
0
4.3k
膨大なシナリオから 該当シーンを一瞬で検索! IDOLY PRIDEの シナリオ補助ツール開発
qualiarts
0
2.6k
エンジニアとクリエイターで作る!モバイルゲーム開発における理想的なUIアニメーション開発フロー
qualiarts
0
5.3k
ゲームの抽選ロジックにGenericsを使ってみたら開発が楽になった話
qualiarts
0
1.7k
Other Decks in Technology
See All in Technology
AIに頼りすぎない新人育成術
cuebic9bic
3
230
【CEDEC2025】大規模言語モデルを活用したゲーム内会話パートのスクリプト作成支援への取り組み
cygames
PRO
2
830
Google Cloud で学ぶデータエンジニアリング入門 2025年版 #GoogleCloudNext / 20250805
kazaneya
PRO
20
4.7k
猫でもわかるQ_CLI(CDK開発編)+ちょっとだけKiro
kentapapa
0
3.4k
Claude Codeから我々が学ぶべきこと
oikon48
10
2.8k
SRE新規立ち上げ! Hubbleインフラのこれまでと展望
katsuya0515
0
180
「Roblox」の開発環境とその効率化 ~DAU9700万人超の巨大プラットフォームの開発 事始め~
keitatanji
0
120
Amazon Q Developerを活用したアーキテクチャのリファクタリング
k1nakayama
2
210
生成AI導入の効果を最大化する データ活用戦略
ham0215
0
130
LTに影響を受けてテンプレリポジトリを作った話
hol1kgmg
0
350
隙間時間で爆速開発! Claude Code × Vibe Coding で作るマニュアル自動生成サービス
akitomonam
3
260
JAWS AI/ML #30 AI コーディング IDE "Kiro" を触ってみよう
inariku
3
350
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
How to Ace a Technical Interview
jacobian
278
23k
Faster Mobile Websites
deanohume
308
31k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
YesSQL, Process and Tooling at Scale
rocio
173
14k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Facilitating Awesome Meetings
lara
54
6.5k
Transcript
IDOLY PRIDEにおける AssetBundleビルドパイプ ラインについて QualiArts 渡部聡
1.自己紹介 2.AssetBundle 3.Assetの種類と管理方法 4.AssetBundleビルドパイプライン 5.まとめ
自己紹介
渡部聡 •2014(AmebaGames)~2022(QualiArts ) •UnityEngineer •UI系・ビルド系
AssetBundle
AssetBundleとは •asset(texture,audioclip,etc)をbundleしたもの •Unity特有の概念では無い(UEとかcocosとかにもある) •UnityにおいてはAssetBundleクラスとして扱う •アプリとは分離したもの(別ファイル化)として扱うことができる •AssetBundleのメリット アプリとは別に後からダウンロードさせられる 運用で新キャラ追加!などが発生してもアプリを更新せずにすむ
Assetの種類と管理方法
Assetの種類 •動画 •カード絵 •SDキャラ •その他UI系素材 •キャラボイス・SE •3Dキャラ・背景・キャラモーション・シェーダー •ライブデータ(タイムライン・楽曲・エフェクト)
Assetの種類 •動画 •カード絵 •SDキャラ •その他UI系素材 •キャラボイス・SE •3Dキャラ・背景・キャラモーション・シェーダー •ライブデータ(タイムライン・楽曲・エフェクト) SVNとGoogleDriveの併用
SVNとGoogleDrive SVN GoogleDrive 学習コスト 高 低 GUI どれも微妙(Mac) パソコン版Googleドライブ (旧DriveFileStream)
が使いやすい コミットしやすさ stagingの概念とか面倒 ファイルを置くだけ (意図せぬ移動が発生したり •••) ログの追いやすさ 普通 普通 コミットの戻しやすさ File/Dir単位でも巻き戻しが可能 File単位の巻き戻しは簡単 全体を特定のcommit時点に戻す とかは難しい
SVNとGoogleDrive SVN GoogleDrive 学習コスト 高 低 GUI どれも微妙(Mac) パソコン版Googleドライブ (旧DriveFileStream)
が使いやすい コミットしやすさ stagingの概念とか面倒 ファイルを置くだけ (意図せぬ移動が発生したり •••) ログの追いやすさ 普通 普通 コミットの戻しやすさ File/Dir単位でも巻き戻しが可能 File単位の巻き戻しは簡単 全体を特定のcommit時点に戻す とかは難しい 普段使いには Driveが圧倒的に便利 不具合調査とか特殊な状況 ではsvnの機能が欲しくなる
Assetの種類 •動画 •カード絵 •SDキャラ •その他UI系素材 •キャラボイス・SE •3Dキャラ・背景・キャラモーション・シェーダー •ライブデータ(タイムライン・楽曲・エフェクト) 基本的にログとか見ない 稀にログを見たり戻したり
Assetの種類 •動画 •カード絵 •SDキャラ •その他UI系素材 •キャラボイス・SE •3Dキャラ・背景・キャラモーション・シェーダー •ライブデータ(タイムライン・楽曲・エフェクト) 基本的にログとか見ない 稀にログを見たり戻したり
・・・という理由は全て後付けで、次のプロジェクトではSVNを捨ててplastic scmにする予定だったりも
AssetBundle ビルドパイプライン
アセットの取り込み(旧) AssetBundle Asset checkout (rclone) 生成 Asset checkout metaコミット metaコミット
(rclone)
アセットの取り込み(旧) AssetBundle 生成 Asset checkout metaコミット (差分が少なければ)svnは高速 Asset checkout (rclone)
metaコミット (rclone)
アセットの取り込み(旧) AssetBundle 生成 Asset checkout metaコミット (差分が少なければ)svnは高速 (差分が少なくとも)rsyncは遅め Asset checkout
(rclone) metaコミット (rclone)
アセットの取り込み(新) AssetBundle assetを同期 (rclone) checkout 生成 metaコミット •Driveの使いやすさはそのまま •rcloneの重さは(少し)軽減 •ログが一元管理できてるかも
ビルドの並列化 •iOS, Android, OSX, Windows, WebGLの5プラットフォーム用にビルドしている •マシンは社内MacProサーバー1台 RAM192GM, 16Core •workspaceは常にマシン上に常駐させる
•並列化はJenkinsのPipeline Scriptで実装 •ビルドの実行自体は定期orクリエイターorプランナーが実行する •↓下の「Unity」のところで5プラットフォームビルド
ビルド処理の実装方針 •AssetBundleビルドパイプラインAPIのどれを使うか? UnityEditor.BuildPipeline レガシー Addressables イマドキの ScriptableBuildPipeline Addressablesの中身 •とにかく早い段階でビルド環境を整えたい AssetBundleを使えないプロジェクトは大量のAssetをコミットされやすい傾向
大量のAssetでプロジェクトが膨れるとcloneやimportで大量の時間を浪費する •UnityEditor.BuildPipelineを採用 ビルド所要時間※2019年時点
レガシーBuildPipelineの問題点 •プロジェクト初期ではUnityEditor.BuildPipelineを採用・・・しかし問題が発覚 Texture Streaming非対応 AssetBundle単位で圧縮と無圧縮を分けたいができなかった そして今更レガシーなAPIとか・・・ •無圧縮なAssetBundleが必要になる状況 動画(mp4)をAssetBundleに同梱したかった Androidでは圧縮されたAssetBundleから動画を読み出せない •ScriptableBuildPipelineならどちらも解決できる
-> 採用
ビルド処理の実装 •SBP (ContentPipeline)を使う •特定の命名規則AssetBundleは無圧縮 •実装詳細 1. アセットのバリデーションをする 2. BundleBuildParametersを継承して圧縮指定 3.
ContentPipeline.BuildAssetBundlesを実行 4. 成果のAssetBundleを暗号化 •アセットのバリデーション Importerを通っているか Meshに必要な情報が格納されているか etc etc.. •AssetBundleの暗号化 高速かつChunk読み可能なオレオレ実装 しかし脆弱
余談:アセット確認環境 •アセット確認専用アプリを準備 ゲーム用と独立してて軽い - iOSアプリ - Androidアプリ - ブラウザ版(WebGL) •WebGL版はたまに便利
真の姿はiOS/Androidアプリで見る必要あり
まとめ
まとめ •Asset管理にはSVNとGoogleDriveを採用 •AssetBundleビルドにはScriptableBuildPipelineを採用 •クリエイターとプランナーチームがビルドを実行
ありがとうございました