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
FlashToUnityについて
Search
Cygames
PRO
November 30, 2015
Programming
1
4.9k
FlashToUnityについて
2015/11/15 Cygames Tech Fes
Cygames
PRO
November 30, 2015
Tweet
Share
More Decks by Cygames
See All by Cygames
【U/Day Tokyo 2025】Cygames流 最新スマートフォンゲームの技術設計 〜『Shadowverse: Worlds Beyond』におけるアーキテクチャ再設計の挑戦~
cygames
PRO
4
2.5k
【CEDEC+KYUSHU2025】学生・若手必見!テクニカルアーティスト 大全 ~仕事・スキル・キャリアパス、TAの「わからない」を徹底解剖~
cygames
PRO
0
380
【TiDB User Day2025】リリース時のアクセス急増をいかにしてノーメンテで乗り越えたか 〜『Shadowverse: Worlds Beyond』におけるTiDB採用のゲームサーバー設計〜
cygames
PRO
1
2.1k
【CEDEC2025】『Shadowverse: Worlds Beyond』二度目のDCG開発でゲームをリデザインする~遊びやすさと競技性の両立~
cygames
PRO
2
620
【CEDEC2025】大規模言語モデルを活用したゲーム内会話パートのスクリプト作成支援への取り組み
cygames
PRO
2
1.8k
【CEDEC2025】現場を理解して実現!ゲーム開発を効率化するWebサービスの開発と、利用促進のための継続的な改善
cygames
PRO
0
1.4k
【CEDEC2025】ブランド力アップのためのコンテンツマーケティング~ゲーム会社における情報資産の活かし方~
cygames
PRO
0
1.4k
【CEDEC2025】『ウマ娘 プリティーダービー』における映像制作のさらなる高品質化へ!~ 豊富な素材出力と制作フローの改善を実現するツールについて~
cygames
PRO
0
490
【CEDEC2025】LLMを活用したゲーム開発支援と、生成AIの利活用を進める組織的な取り組み
cygames
PRO
1
3.9k
Other Decks in Programming
See All in Programming
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
430
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
410
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
170
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
910
愛される翻訳の秘訣
kishikawakatsumi
3
350
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
600
Navigating Dependency Injection with Metro
l2hyunwoo
1
200
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
1k
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
200
Jetpack XR SDKから紐解くAndroid XR開発と技術選定のヒント / about-androidxr-and-jetpack-xr-sdk
drumath2237
1
200
gunshi
kazupon
1
120
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
160
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
53
48k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.9k
How to Talk to Developers About Accessibility
jct
1
87
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
120
Accessibility Awareness
sabderemane
0
26
Facilitating Awesome Meetings
lara
57
6.7k
It's Worth the Effort
3n
187
29k
The agentic SEO stack - context over prompts
schlessera
0
570
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
250
Building Flexible Design Systems
yeseniaperezcruz
330
39k
Transcript
あとで画像を貼り付けます。
自己紹介 • 諫山英世 • テクニカルデザイナー (一般的にはテクニカルアーティストの位置づけ) • エンジニアとデザイナーの間にたって、ゲーム 開発がしやすいようなデータ構成を考えたり、 DCCツールの便利なスクリプトを開発したりし
ています。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
アジェンダ • FlashToUnityについて • Unityでの再生 • 開発経緯 • TIPS •
まとめ $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
FlashToUnityについて $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
FlashToUnityとは・・・! FlashをUnityで再生するツールです ! わかりやすい・・・! $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
で・・・ どんなことができるのか? $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
その 1 複雑なFlashアニメが再生可能です ただし仕様があります。 用法を正しく守って頂く事が必要です $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD
"MM3JHIUT3FTFSWFE
仕様は以下のような構成で ① export ここに入っているMCがプレファブに ② mc エクスポート外のMCの格納場所 ③ mc_image 原点中心の画像MC格納場所
④ tx_image ビットマップファイル ⑤ tx_symbol テクスチャ化するシンボル 1 2 3 4 5 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
その 2 ラベル再生に対応しています アクションスクリプトは gotoAndPlay()、stop()に対応 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD
"MM3JHIUT3FTFSWFE
その 3 テクスチャは自動アトラス化しています 2048*2048を超え始めたら 自動で二枚目のテクスチャに振り分けします。 JSFLで判定し、分けています。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT
*OD "MM3JHIUT3FTFSWFE
その 4 テクスチャは基本的に カラー、アルファに分割しています 圧縮テクスチャを使って容量削減 ※他のフォーマットも使えるように対応しています。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT
*OD "MM3JHIUT3FTFSWFE
その 5 Unityで階層構造の視覚化しています Flashがなくてもプログラムが書けます $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
その 6 通常、加算、乗算などの ブレンドに対応しています 異なるブレンドはドローコールが増えるのですが、 線形で増えないように最適化しています。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT
*OD "MM3JHIUT3FTFSWFE
その 7 テキストに対応しています 枠、影に対応しています。 最終的にUnityのTextMeshなので RichTextもそのまま使えるようにしています。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT
*OD "MM3JHIUT3FTFSWFE
その 8 アンカー対応をしています フラグを付けることで、 画面の角にくっつけたりできます。 ちょっとしたUIも組めます。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT
*OD "MM3JHIUT3FTFSWFE
その 9 レイヤー、 ソーティングオーダー、 ソーティングレイヤー に対応 しています。 基本的にUnityベースで考えているので、 独自のソートではないので、 他の半透明系との相性が考えやすいです。
$POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
その 10 データはScriptableObjectに格納 容量最小化と読取りの高速化 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
そのデータは構成は以下のとおり ① テクスチャアトラス情報を格納 ② 位置情報などの格納 ③ カラーとアルファテクスチャ ④ 出力プレファブ 1
2 3 4 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
その 11 プログラムは専用のFindなどを用意 使うのはクラスは FlRoot、FlMotion、FlPlane、FlText など限られたものとなります。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT
*OD "MM3JHIUT3FTFSWFE
Unityでのプログラム方法 • ルートコンポーネント取得 FlRoot flRoot = gameObject.GetComponentInChildren<FlRoot>(); • モーション(ムービークリップ)の取得 FlMotion
motion = FlUtility.FindUI<FlMotion>(flRoot, rootObject, "MOT_test0"); • モーション(ムービークリップ)の再生 motion.SetMotionPlay("Loop"); $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
その 12 動くUIを作成可能 Cygamesの一部タイトルは FlashでUIや2Dアニメーションが組まれています。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD
"MM3JHIUT3FTFSWFE
Unityでの再生 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
開発経緯 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
凄く動くUIを作りたい ! という思いで、 あるアプリ開発とともに FlashToUnityの開発が始まりました $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD
"MM3JHIUT3FTFSWFE
ところで・・・ Unityでしっかりしたアニメーションを つけたことありますでしょうか? 非常に面倒ですし、大変ですよね・・・。 なので他のツールからコンバートできないか と考えました。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT
*OD "MM3JHIUT3FTFSWFE
2Dアニメーションを組むにはFlash、AfterEffect などなどのDCCツールがあります。 FlashはScaleformで採用されていること、 ムービークリップの入れ子構造が 便利なため採用しました。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD
"MM3JHIUT3FTFSWFE
またCygamesにはFlashデザイナーが 多く在籍しています。 将来的に人材を活かせるので採用しました。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
そもそも世の中にFlashをUnityで 動かすツールは多く存在しています。 まずそれらを検索して、実際に検証しました。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
検証したFlash系アセットは主に以下となります。 ・Scaleform ・LWF ・GAF ・UniSWF など $POGJEFOUJBM $PQZSJHIU $ZHBNFT
*OD "MM3JHIUT3FTFSWFE
Cygamesの要望は以下のとおり 60FPSでも処理負荷少なく ・UIが作れる ・テクスチャのとりまわしができる ・ソースコードが存在している など これらの要望を満たすツールは 正直ありませんでした・・・。 $POGJEFOUJBM $PQZSJHIU
$ZHBNFT *OD "MM3JHIUT3FTFSWFE
そこで開発を自社ですることにしました。 結果、臨機応変に要望やバグに対応できる ツールとなり、発展しております。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
TIPS $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
TIPS その1 テキストデータ、XMLデータなどからデータを読 むのは、非常に遅いです。 UnityのScriptableObjectはバイナリ形式になり ますし、データを格納する手段として非常に有効 でした。 容量的にも速度的にも有用だと思います。 $POGJEFOUJBM $PQZSJHIU
$ZHBNFT *OD "MM3JHIUT3FTFSWFE
TIPS その2 MonoBehaviourの多用はやめましょ う。 開発当初は右図のGameobject全て にアタッチしていたのですが、ロード や処理負荷が重すぎてやめました。 現在はMOT_rootにFlRootがアタッ チされているだけとなっています。 これが下層オブジェクトの更新を管
理しています。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
TIPS その3 Gameobjectはランタイムで作成したほうが速い。 Gameobjectをプレファブにあらかじめ格納する か、ランタイムで作り出すかを比較したところ、あ るゲームではロード時間が約3倍改善しました。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT
*OD "MM3JHIUT3FTFSWFE
おわりに $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE
実は私はMayaなどのDCCツールの スクリプト開発がメインだったのですが、 動くUIを作りたいという思いから、 Unity、C#を勉強して ツールの開発をさせていただきました。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD
"MM3JHIUT3FTFSWFE
Cygamesはチャレンジできる会社ですので、 今後も大きな挑戦をしていくために、 協力していただける方を募集しております。 ※エンジニアだけでなく、テクニカルデザイナー、 3D、2Dデザイナーも広く募集しております。 詳しくは採用ページをご覧ください。 よろしくお願い致します。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT
*OD "MM3JHIUT3FTFSWFE
以上となります。 ご清聴ありがとうございました。 $POGJEFOUJBM $PQZSJHIU $ZHBNFT *OD "MM3JHIUT3FTFSWFE