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
UnityのHumanoidと共存する キャラクタジョイント制御と 制作ワークフロー
qualiarts
1
6k
詳解 "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
3.8k
膨大なシナリオから 該当シーンを一瞬で検索! IDOLY PRIDEの シナリオ補助ツール開発
qualiarts
0
2.5k
エンジニアとクリエイターで作る!モバイルゲーム開発における理想的なUIアニメーション開発フロー
qualiarts
0
4.8k
ゲームの抽選ロジックにGenericsを使ってみたら開発が楽になった話
qualiarts
0
1.7k
モバイルゲームのUI開発を支える基盤の仕組み
qualiarts
0
1.5k
ゲーム「IDOLY PRIDE」を構成するGCPアーキテクチャの全貌
qualiarts
1
510
Other Decks in Technology
See All in Technology
Witchcraft for Memory
pocke
1
210
CSS、JSをHTMLテンプレートにまとめるフロントエンド戦略
d120145
0
270
Oracle Cloud Infrastructure:2025年6月度サービス・アップデート
oracle4engineer
PRO
2
200
PostgreSQL 18 cancel request key長の変更とRailsへの関連
yahonda
0
120
Agentic DevOps時代の生存戦略
kkamegawa
1
1.3k
Snowflake Summit 2025 データエンジニアリング関連新機能紹介 / Snowflake Summit 2025 What's New about Data Engineering
tiltmax3
0
300
20250623 Findy Lunch LT Brown
3150
0
840
Observability infrastructure behind the trillion-messages scale Kafka platform
lycorptech_jp
PRO
0
130
【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術
cygames
0
1k
Amazon S3標準/ S3 Tables/S3 Express One Zoneを使ったログ分析
shigeruoda
3
450
ローカルLLMでファインチューニング
knishioka
0
140
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
170
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Visualization
eitanlees
146
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.8k
Why Our Code Smells
bkeepers
PRO
337
57k
Automating Front-end Workflow
addyosmani
1370
200k
Git: the NoSQL Database
bkeepers
PRO
430
65k
A Tale of Four Properties
chriscoyier
160
23k
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
Code Review Best Practice
trishagee
68
18k
Practical Orchestrator
shlominoach
188
11k
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を採用 •クリエイターとプランナーチームがビルドを実行
ありがとうございました