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
3.2k
0
Share
IDOLY PRIDEにおけるAssetBundleビルドパイプラインについて
2022/05/20 CA.unity#4より
IDOLY PRIDEにおけるアセット管理とAssetBundleビルドフローや、それらを実現するために採用した技術について紹介します。
QualiArts
May 23, 2022
More Decks by QualiArts
See All by QualiArts
モバイルゲーム開発におけるエージェント技術活用への試行錯誤 ~開発効率化へのアプローチの紹介と未来に向けた展望~
qualiarts
0
1.3k
コード生成なしでモック処理を実現!ovechkin-dm/mockioで学ぶメタプログラミング
qualiarts
0
540
なぜGoのジェネリクスはこの形なのか? - Featherweight Goが明かす設計の核心
qualiarts
0
520
モバイルゲームの開発を支える基盤の歩み ~再現性のある開発ラインを量産する秘訣~
qualiarts
0
2.7k
モバイルゲームで自動テストが効果を発揮するまで ~自動テストを「運用」するまでの組織のアプローチ~
qualiarts
3
3.7k
UnityのHumanoidと共存する キャラクタジョイント制御と 制作ワークフロー
qualiarts
1
8.4k
詳解 "Fixing For Loops in Go 1.22" 自作linterをgolangci-lintへコントリビュートした話
qualiarts
9
2.6k
Goバックエンド標準化プロジェクトの取り組み
qualiarts
4
1.6k
自作ツールTitanと ベクターUIを使った IDOLY PRIDEの UIアニメーションの実装
qualiarts
0
5.5k
Other Decks in Technology
See All in Technology
Databricksを用いたセキュアなデータ基盤構築とAIプロダクトへの応用.pdf
pkshadeck
PRO
0
320
サイバーフィジカル社会とは何か / What Is a Cyber-Physical Society?
ks91
PRO
0
190
Zero-Downtime Migration: Moving a Massive, Historic iOS App from CocoaPods to SPM and Tuist without Stopping Feature Delivery
kagemiku
0
240
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.1k
プロダクトを触って語って理解する、チーム横断バグバッシュのすすめ / 20260411 Naoki Takahashi
shift_evolve
PRO
1
280
Bluesky Meetup in Tokyo vol.4 - 2023to2026
shinoharata
0
190
DIPS2.0データに基づく森林管理における無人航空機の利用状況
naokimuroki
1
210
幾億の壁を超えて/Beyond Countless Walls(JP)
ikuodanaka
0
130
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
5
14k
みんなで作るAWS Tips 100連発 (FinOps編)
schwrzktz
1
190
みんなの「データ活用」を支えるストレージ担当から持ち込むAWS活用/コミュニティー設計TIPS 10選~「作れる」より、「続けられる」設計へ~
yoshiki0705
0
150
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
74k
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.6k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
240
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
880
Claude Code のすすめ
schroneko
67
220k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
260
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Unsuck your backbone
ammeep
672
58k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
4 Signs Your Business is Dying
shpigford
187
22k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
130
How to train your dragon (web standard)
notwaldorf
97
6.6k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
670
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を採用 •クリエイターとプランナーチームがビルドを実行
ありがとうございました