Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FlashToUnityについて

510ec964f5d26c2724c883fd7b671e3d?s=47 Cygames
November 30, 2015

 FlashToUnityについて

2015/11/15 Cygames Tech Fes

510ec964f5d26c2724c883fd7b671e3d?s=128

Cygames

November 30, 2015
Tweet

More Decks by Cygames

Other Decks in Programming

Transcript

  1. あとで画像を貼り付けます。

  2. 自己紹介 • 諫山英世 • テクニカルデザイナー (一般的にはテクニカルアーティストの位置づけ) • エンジニアとデザイナーの間にたって、ゲーム 開発がしやすいようなデータ構成を考えたり、 DCCツールの便利なスクリプトを開発したりし

    ています。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   
  3. アジェンダ • FlashToUnityについて • Unityでの再生 • 開発経緯 • TIPS •

    まとめ $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   
  4. FlashToUnityについて $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   

  5. FlashToUnityとは・・・! FlashをUnityで再生するツールです ! わかりやすい・・・! $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE

      
  6. で・・・ どんなことができるのか? $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE  

    
  7. その 1 複雑なFlashアニメが再生可能です ただし仕様があります。 用法を正しく守って頂く事が必要です $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD

    "MM3JHIUT3FTFSWFE   
  8. 仕様は以下のような構成で ① export ここに入っているMCがプレファブに ② mc エクスポート外のMCの格納場所 ③ mc_image 原点中心の画像MC格納場所

    ④ tx_image ビットマップファイル ⑤ tx_symbol テクスチャ化するシンボル 1 2 3 4 5 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   
  9. その 2 ラベル再生に対応しています アクションスクリプトは gotoAndPlay()、stop()に対応 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD

    "MM3JHIUT3FTFSWFE   
  10. その 3 テクスチャは自動アトラス化しています 2048*2048を超え始めたら 自動で二枚目のテクスチャに振り分けします。 JSFLで判定し、分けています。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT 

    *OD "MM3JHIUT3FTFSWFE   
  11. その 4 テクスチャは基本的に カラー、アルファに分割しています 圧縮テクスチャを使って容量削減 ※他のフォーマットも使えるように対応しています。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT 

    *OD "MM3JHIUT3FTFSWFE   
  12. その 5 Unityで階層構造の視覚化しています Flashがなくてもプログラムが書けます $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE

      
  13. その 6 通常、加算、乗算などの ブレンドに対応しています 異なるブレンドはドローコールが増えるのですが、 線形で増えないように最適化しています。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT 

    *OD "MM3JHIUT3FTFSWFE   
  14. その 7 テキストに対応しています 枠、影に対応しています。 最終的にUnityのTextMeshなので RichTextもそのまま使えるようにしています。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT 

    *OD "MM3JHIUT3FTFSWFE   
  15. その 8 アンカー対応をしています フラグを付けることで、 画面の角にくっつけたりできます。 ちょっとしたUIも組めます。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT 

    *OD "MM3JHIUT3FTFSWFE   
  16. その 9 レイヤー、 ソーティングオーダー、 ソーティングレイヤー に対応 しています。 基本的にUnityベースで考えているので、 独自のソートではないので、 他の半透明系との相性が考えやすいです。

    $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   
  17. その 10 データはScriptableObjectに格納 容量最小化と読取りの高速化 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE

      
  18. そのデータは構成は以下のとおり ① テクスチャアトラス情報を格納 ② 位置情報などの格納 ③ カラーとアルファテクスチャ ④ 出力プレファブ 1

    2 3 4 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   
  19. その 11 プログラムは専用のFindなどを用意 使うのはクラスは FlRoot、FlMotion、FlPlane、FlText など限られたものとなります。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT 

    *OD "MM3JHIUT3FTFSWFE   
  20. Unityでのプログラム方法 • ルートコンポーネント取得 FlRoot flRoot = gameObject.GetComponentInChildren<FlRoot>(); • モーション(ムービークリップ)の取得 FlMotion

    motion = FlUtility.FindUI<FlMotion>(flRoot, rootObject, "MOT_test0"); • モーション(ムービークリップ)の再生 motion.SetMotionPlay("Loop"); $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   
  21. その 12 動くUIを作成可能 Cygamesの一部タイトルは FlashでUIや2Dアニメーションが組まれています。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD

    "MM3JHIUT3FTFSWFE   
  22. Unityでの再生 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   

  23. 開発経緯 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   

  24. 凄く動くUIを作りたい ! という思いで、 あるアプリ開発とともに FlashToUnityの開発が始まりました $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD

    "MM3JHIUT3FTFSWFE   
  25. ところで・・・ Unityでしっかりしたアニメーションを つけたことありますでしょうか? 非常に面倒ですし、大変ですよね・・・。 なので他のツールからコンバートできないか と考えました。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT 

    *OD "MM3JHIUT3FTFSWFE   
  26. 2Dアニメーションを組むにはFlash、AfterEffect などなどのDCCツールがあります。 FlashはScaleformで採用されていること、 ムービークリップの入れ子構造が 便利なため採用しました。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD

    "MM3JHIUT3FTFSWFE   
  27. またCygamesにはFlashデザイナーが 多く在籍しています。 将来的に人材を活かせるので採用しました。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE 

     
  28. そもそも世の中にFlashをUnityで 動かすツールは多く存在しています。 まずそれらを検索して、実際に検証しました。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE 

     
  29. 検証したFlash系アセットは主に以下となります。 ・Scaleform ・LWF ・GAF ・UniSWF など $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT 

    *OD "MM3JHIUT3FTFSWFE   
  30. Cygamesの要望は以下のとおり 60FPSでも処理負荷少なく ・UIが作れる ・テクスチャのとりまわしができる ・ソースコードが存在している など これらの要望を満たすツールは 正直ありませんでした・・・。 $POGJEFOUJBM $PQZSJHIU

    ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   
  31. そこで開発を自社ですることにしました。 結果、臨機応変に要望やバグに対応できる ツールとなり、発展しております。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE 

     
  32. TIPS $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   

  33. TIPS その1 テキストデータ、XMLデータなどからデータを読 むのは、非常に遅いです。 UnityのScriptableObjectはバイナリ形式になり ますし、データを格納する手段として非常に有効 でした。 容量的にも速度的にも有用だと思います。 $POGJEFOUJBM $PQZSJHIU

    ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   
  34. TIPS その2 MonoBehaviourの多用はやめましょ う。 開発当初は右図のGameobject全て にアタッチしていたのですが、ロード や処理負荷が重すぎてやめました。 現在はMOT_rootにFlRootがアタッ チされているだけとなっています。 これが下層オブジェクトの更新を管

    理しています。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   
  35. TIPS その3 Gameobjectはランタイムで作成したほうが速い。 Gameobjectをプレファブにあらかじめ格納する か、ランタイムで作り出すかを比較したところ、あ るゲームではロード時間が約3倍改善しました。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT 

    *OD "MM3JHIUT3FTFSWFE   
  36. おわりに $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE   

  37. 実は私はMayaなどのDCCツールの スクリプト開発がメインだったのですが、 動くUIを作りたいという思いから、 Unity、C#を勉強して ツールの開発をさせていただきました。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD

    "MM3JHIUT3FTFSWFE   
  38. Cygamesはチャレンジできる会社ですので、 今後も大きな挑戦をしていくために、 協力していただける方を募集しております。 ※エンジニアだけでなく、テクニカルデザイナー、 3D、2Dデザイナーも広く募集しております。 詳しくは採用ページをご覧ください。 よろしくお願い致します。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT

     *OD "MM3JHIUT3FTFSWFE   
  39. 以上となります。 ご清聴ありがとうございました。 $POGJEFOUJBM $PQZSJHIU ˜$ZHBNFT  *OD "MM3JHIUT3FTFSWFE