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
26
社内にバーチャルスタッフ!?「スイちゃん」のキャラクターデザインと施策の広げ方の秘訣
cygames
0
81
全高3m超のバハムート像がスマホを通して躍動する! ~『Cygames展 Artworks』ARコンテンツの開発プロセスと実装~
cygames
0
16
最高の資料を目指すために!社内フリーイラスト制作チームの取り組みについて
cygames
0
90
「生きているモーション」を作り出すCygamesのモーションキャプチャー
cygames
0
59
『Cygames展 Artworks』におけるShadowverseデジタルサイネージ制作事例
cygames
0
27
『GRANBLUE FANTASY: Relink』 原作の世界観に没入するステージの絵作り
cygames
0
98
『GRANBLUE FANTASY: Relink』イラストを再現する為のキャラクターモデル制作事例
cygames
0
97
『GRANBLUE FANTASY: Relink』キャラクターの魅力を支えるリグ制作事例
cygames
0
51
Other Decks in Programming
See All in Programming
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
1.2k
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
130
Fibonacci Function Gallery - Part 1
philipschwarz
PRO
0
270
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
490
ATDDで素早く安定した デリバリを実現しよう!
tonnsama
1
1.1k
Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4
arthur1
1
380
技術的負債と向き合うカイゼン活動を1年続けて分かった "持続可能" なプロダクト開発
yuichiro_serita
0
250
CloudflareStack でRAGに入門
asahiiwm
0
140
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
3
540
iOS開発におけるCopilot For XcodeとCode Completion / copilot for xcode
fuyan777
1
1.2k
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
8
1.8k
PSR-15 はあなたのための ものではない? - phpcon2024
myamagishi
0
360
Featured
See All Featured
The Invisible Side of Design
smashingmag
299
50k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Optimising Largest Contentful Paint
csswizardry
33
3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.3k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.1k
The Cult of Friendly URLs
andyhume
78
6.1k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
Automating Front-end Workflow
addyosmani
1366
200k
The World Runs on Bad Software
bkeepers
PRO
66
11k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
940
BBQ
matthewcrist
85
9.4k
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