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
November 30, 2015
Programming
1
4.8k
FlashToUnityについて
2015/11/15 Cygames Tech Fes
Cygames
November 30, 2015
Tweet
Share
More Decks by Cygames
See All by Cygames
最高のアートワークを発信する『Cygames展 Artworks』企画制作事例
cygames
0
42
社内にバーチャルスタッフ!?「スイちゃん」のキャラクターデザインと施策の広げ方の秘訣
cygames
1
120
全高3m超のバハムート像がスマホを通して躍動する! ~『Cygames展 Artworks』ARコンテンツの開発プロセスと実装~
cygames
0
30
最高の資料を目指すために!社内フリーイラスト制作チームの取り組みについて
cygames
1
130
「生きているモーション」を作り出すCygamesのモーションキャプチャー
cygames
0
83
『Cygames展 Artworks』におけるShadowverseデジタルサイネージ制作事例
cygames
0
38
『GRANBLUE FANTASY: Relink』 原作の世界観に没入するステージの絵作り
cygames
0
760
『GRANBLUE FANTASY: Relink』イラストを再現する為のキャラクターモデル制作事例
cygames
0
140
『GRANBLUE FANTASY: Relink』キャラクターの魅力を支えるリグ制作事例
cygames
0
85
Other Decks in Programming
See All in Programming
Kanzawa.rbのLT大会を支える技術の裏側を変更する Ruby on Rails + Litestream 編
muryoimpl
0
220
お前もAI鬼にならないか?👹Bolt & Cursor & Supabase & Vercelで人間をやめるぞ、ジョジョー!👺
taishiyade
5
3.8k
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
480
GAEログのコスト削減
mot_techtalk
0
110
ARA Ansible for the teams
kksat
0
150
負債になりにくいCSSをデザイナとつくるには?
fsubal
9
2.3k
【PHP】破壊的バージョンアップと戦った話〜決断と説得
satoshi256kbyte
0
120
一休.com のログイン体験を支える技術 〜Web Components x Vue.js 活用事例と最適化について〜
atsumim
0
110
SpringBoot3.4の構造化ログ #kanjava
irof
2
970
チームリードになって変わったこと
isaka1022
0
190
ペアーズでの、Langfuseを中心とした評価ドリブンなリリースサイクルのご紹介
fukubaka0825
2
300
Rails アプリ地図考 Flush Cut
makicamel
1
110
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Optimizing for Happiness
mojombo
376
70k
Visualization
eitanlees
146
15k
Statistics for Hackers
jakevdp
797
220k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
Become a Pro
speakerdeck
PRO
26
5.1k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The Cult of Friendly URLs
andyhume
78
6.2k
Unsuck your backbone
ammeep
669
57k
Faster Mobile Websites
deanohume
306
31k
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