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
【TiDB User Day2025】リリース時のアクセス急増をいかにしてノーメンテで乗り越えたか 〜『Shadowverse: Worlds Beyond』におけるTiDB採用のゲームサーバー設計〜
cygames
PRO
0
63
【CEDEC2025】『Shadowverse: Worlds Beyond』二度目のDCG開発でゲームをリデザインする~遊びやすさと競技性の両立~
cygames
PRO
2
500
【CEDEC2025】大規模言語モデルを活用したゲーム内会話パートのスクリプト作成支援への取り組み
cygames
PRO
2
1.4k
【CEDEC2025】現場を理解して実現!ゲーム開発を効率化するWebサービスの開発と、利用促進のための継続的な改善
cygames
PRO
0
1.1k
【CEDEC2025】ブランド力アップのためのコンテンツマーケティング~ゲーム会社における情報資産の活かし方~
cygames
PRO
0
1k
【CEDEC2025】『ウマ娘 プリティーダービー』における映像制作のさらなる高品質化へ!~ 豊富な素材出力と制作フローの改善を実現するツールについて~
cygames
PRO
0
380
【CEDEC2025】LLMを活用したゲーム開発支援と、生成AIの利活用を進める組織的な取り組み
cygames
PRO
1
3.4k
【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術
cygames
PRO
0
2.6k
雲だけじゃない!『GRANBLUE FANTASY: Relink』の世界に奥行きを出す半透明スプライト活用術
cygames
PRO
0
1.1k
Other Decks in Programming
See All in Programming
大規模アプリのDIフレームワーク刷新戦略 ~過去最大規模の並行開発を止めずにアプリ全体に導入するまで~
mot_techtalk
1
430
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
1k
Pythonスレッドとは結局何なのか? CPython実装から見るNoGIL時代の変化
curekoshimizu
5
1.8k
After go func(): Goroutines Through a Beginner’s Eye
97vaibhav
0
370
CSC305 Lecture 04
javiergs
PRO
0
270
開発生産性を上げるための生成AI活用術
starfish719
3
440
Software Architecture
hschwentner
6
2.3k
overlayPreferenceValue で実現する ピュア SwiftUI な AdMob ネイティブ広告
uhucream
0
180
Introducing ReActionView: A new ActionView-Compatible ERB Engine @ Kaigi on Rails 2025, Tokyo, Japan
marcoroth
3
1k
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
820
「ちょっと古いから」って避けてた技術書、今だからこそ読もう
mottyzzz
10
6.6k
バッチ処理を「状態の記録」から「事実の記録」へ
panda728
PRO
0
150
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
697
190k
A better future with KSS
kneath
239
18k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Being A Developer After 40
akosma
91
590k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Why Our Code Smells
bkeepers
PRO
339
57k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Raft: Consensus for Rubyists
vanstee
139
7.1k
Unsuck your backbone
ammeep
671
58k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Thoughts on Productivity
jonyablonski
70
4.9k
We Have a Design System, Now What?
morganepeng
53
7.8k
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