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
2.8k
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
4.5k
詳解 "Fixing For Loops in Go 1.22" 自作linterをgolangci-lintへコントリビュートした話
qualiarts
9
1.9k
Goバックエンド標準化プロジェクトの取り組み
qualiarts
4
1.2k
自作ツールTitanと ベクターUIを使った IDOLY PRIDEの UIアニメーションの実装
qualiarts
0
1.8k
膨大なシナリオから 該当シーンを一瞬で検索! IDOLY PRIDEの シナリオ補助ツール開発
qualiarts
0
2.3k
エンジニアとクリエイターで作る!モバイルゲーム開発における理想的なUIアニメーション開発フロー
qualiarts
0
2.8k
ゲームの抽選ロジックにGenericsを使ってみたら開発が楽になった話
qualiarts
0
1.5k
モバイルゲームのUI開発を支える基盤の仕組み
qualiarts
0
1.4k
ゲーム「IDOLY PRIDE」を構成するGCPアーキテクチャの全貌
qualiarts
1
420
Other Decks in Technology
See All in Technology
30分でわかる『アジャイルデータモデリング』
hanon52_
10
2.9k
依存パッケージの更新はコツコツが勝つコツ! / phpcon_nagoya2025
blue_goheimochi
3
180
一度 Expo の採用を断念したけど、 再度 Expo の導入を検討している話
ichiki1023
1
240
Windows の新しい管理者保護モード
murachiakira
0
180
Visualize, Visualize, Visualize and rclone
tomoaki0705
9
69k
生成 AI プロダクトを育てる技術 〜データ品質向上による継続的な価値創出の実践〜
icoxfog417
PRO
5
1.8k
エンジニアの育成を支える爆速フィードバック文化
sansantech
PRO
3
1.1k
あれは良かった、あれは苦労したB2B2C型SaaSの新規開発におけるCloud Spanner
hirohito1108
2
790
短縮URLをお手軽に導入しよう
nakasho
0
110
転生CISOサバイバル・ガイド / CISO Career Transition Survival Guide
kanny
3
1.1k
分解して理解する Aspire
nenonaninu
2
500
(機械学習システムでも) SLO から始める信頼性構築 - ゆる SRE#9 2025/02/21
daigo0927
0
200
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
630
Unsuck your backbone
ammeep
669
57k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
980
Making Projects Easy
brettharned
116
6k
Agile that works and the tools we love
rasmusluckow
328
21k
BBQ
matthewcrist
87
9.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Site-Speed That Sticks
csswizardry
4
390
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
Embracing the Ebb and Flow
colly
84
4.6k
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を採用 •クリエイターとプランナーチームがビルドを実行
ありがとうございました