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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
QualiArts
May 23, 2022
Technology
0
3.1k
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.1k
コード生成なしでモック処理を実現!ovechkin-dm/mockioで学ぶメタプログラミング
qualiarts
0
480
なぜGoのジェネリクスはこの形なのか? - Featherweight Goが明かす設計の核心
qualiarts
0
460
モバイルゲームの開発を支える基盤の歩み ~再現性のある開発ラインを量産する秘訣~
qualiarts
0
2.5k
モバイルゲームで自動テストが効果を発揮するまで ~自動テストを「運用」するまでの組織のアプローチ~
qualiarts
3
3.4k
UnityのHumanoidと共存する キャラクタジョイント制御と 制作ワークフロー
qualiarts
1
8k
詳解 "Fixing For Loops in Go 1.22" 自作linterをgolangci-lintへコントリビュートした話
qualiarts
9
2.5k
Goバックエンド標準化プロジェクトの取り組み
qualiarts
4
1.5k
自作ツールTitanと ベクターUIを使った IDOLY PRIDEの UIアニメーションの実装
qualiarts
0
5.3k
Other Decks in Technology
See All in Technology
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
690
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
240
Exadata Fleet Update
oracle4engineer
PRO
0
1.1k
Agile Leadership Summit Keynote 2026
m_seki
1
680
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
530
Why Organizations Fail: ノーベル経済学賞「国家はなぜ衰退するのか」から考えるアジャイル組織論
kawaguti
PRO
1
220
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2.1k
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
850
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
3
230
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
350
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
480
AWS Network Firewall Proxyを触ってみた
nagisa53
1
250
Featured
See All Featured
BBQ
matthewcrist
89
10k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
68
Facilitating Awesome Meetings
lara
57
6.8k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
440
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Building Applications with DynamoDB
mza
96
6.9k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
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を採用 •クリエイターとプランナーチームがビルドを実行
ありがとうございました