• Like
20150108 cocos2d x-talk
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

20150108 cocos2d x-talk

  • 15 views
Uploaded on

2015/1/8のcocos2d-x talk#1 https://atnd.org/events/60090 で発表した資料です。 …

2015/1/8のcocos2d-x talk#1 https://atnd.org/events/60090 で発表した資料です。

弊社サイトは http://poppin-games-japan.com/ こちら

More in: Engineering
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
15
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
1
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ⒸPoppin Games Japan Co., Ltd. All Right Reseved Cocos2d-x ver3系への 移行とメリット ポッピンゲームズジャパン株式会社 CTO 小林 敬介
  • 2. ⒸPoppin Games Japan Co., Ltd. All Right Reseved 小林の自己紹介 ● ポッピンゲームズジャパン株式会社 CTO ● 1985年うまれ ポッピンゲームズの主な開発タイトル紹介 ● DRAGON SKY ● ドラゴンシャウト ● ピーターラビットガーデン ● 新アリスの不思議なティーパーティー 詳しくは弊社ウェブサイトをご覧ください http://poppin-games-japan.com 発表者 紹介
  • 3. ⒸPoppin Games Japan Co., Ltd. All Right Reseved 今日は保守性向上の話をメインに ● 保守性の向上 ○ コールバックがC++のラムダ式になった ○ タッチイベントの優先度が見た目と一致するようになった ○ std::stringが文字列表現の基本になった ○ 64bitに対応してる ○ TrueTypeFontレンダリングエンジンの同梱 ○ その他諸々のC++への歩み寄り ● 新機能 ○ 3Dモデルの表示、WebViewが使えるようになった etc cocos2d-x ver3系への移行のメリット
  • 4. ⒸPoppin Games Japan Co., Ltd. All Right Reseved std::functionが主流になった (いままでのCCCallFuncなども一応使える) ● ごく単純な処理のためにメソッドを追加する必要がない ● 自由度も高い ○ コールバック生成時に値をキャプチャしたり ○ std::bindで引数をバインドしたり ver2系でもC++11を有効にした上でstd::functionをよびだしてくれるActionを自分で定義すれば似たようなことできるけどね コールバックがC++のラムダ式になった
  • 5. ⒸPoppin Games Japan Co., Ltd. All Right Reseved タッチイベントの発動順序をNodeのZオーダーから決められるように ● タッチプライオリティを自分で決めなくていい ○ 見た目上手前にあるNodeから先にイベントが処理される ○ そこで処理をswallowすれば背後のイベントは実行されない ● 複数層になるUIが作りやすい ○ ダイアログを出して画面内のその他のタッチを無効化する、とかも楽 タッチイベントの優先度が見た目と一致するようになった
  • 6. ⒸPoppin Games Japan Co., Ltd. All Right Reseved char*やCCStringはほぼ使わなくなった ● ラベルに文字列を設定するときに.c_str()とかしなくていい ● CCStringとchar*とstd::stringで行ったり来たりしないで(概ね)よい ● printfフォーマットによるstd::stringの生成支援のためStringUtils::formatなんて のもいる std::stringが文字列表現の基本になった
  • 7. ⒸPoppin Games Japan Co., Ltd. All Right Reseved アップルが64bit対応の強制を発表したけどこれで安心 …と思ったらver2系も対応しました (ただフォーラムが結構荒ぶってたので今後もver2系に同様のサポートが続くとは期待しないほうがいいと思う) 64bitに対応してる
  • 8. ⒸPoppin Games Japan Co., Ltd. All Right Reseved レンダリング結果がOS間で同じになる ● FreeTypeライブラリが使われるようになった ○ AndroidとiOS7&8とiOS6.1以前でレンダリング結果が違うことがあった問 題がぐっと改善 ○ ただし、OSがよしなにやってくれていた絵文字の処理はされない ● これまで通りOSのレンダリングエンジンを使うことも可能 TrueTypeFontレンダリングエンジンの同梱
  • 9. ⒸPoppin Games Japan Co., Ltd. All Right Reseved C++らしいコードが書きやすくなりました。 ● CCプレフィックスの削除 ○ CCNodeはNode、CCLayerはLayerに ● メソッドや引数へのconstの付与 ● CCArrayやCCDictionaryを使わない ○ アクションシーケンスの定義などでCCArrayを作る必要がなくなった ○ かわりにcocos2d::Vectorなどが用意された ■ 独自の参照カウントを採用している都合でstd::vectorとは違う ■ C++標準のスマートポインタの採用は見送られたけどしかたないね その他諸々のC++への歩み寄り
  • 10. ⒸPoppin Games Japan Co., Ltd. All Right Reseved ● ver3系への移行の全般的な話 ● ラベルのレンダリング ● タッチイベントの処理 ver2系からver3系への移行の実際
  • 11. ⒸPoppin Games Japan Co., Ltd. All Right Reseved 割とすんなり移行可能で、おおむね置換してくだけで動くようになる。 ● CCFooBarもDeprecatedの警告が出るもののだいたい使用可能 ● 警告は単に置換するだけでほとんど消せる ● Menuとかもそのまま動く ● CocosBuilderやCocos Studioのデータもつかえる ● 定数の宣言がちょっと変わった ○ これもほぼ置換するだけでok ver3系への移行の全般的な話
  • 12. ⒸPoppin Games Japan Co., Ltd. All Right Reseved 新しいLabelクラスを使うときいくらか気をつけるべきことが ● FreeTypeでレンダリングする場合、OSのレンダリングエンジンが表示してくれて た文字は出ない ○ 絵文字とか出したい場合はシステムにレンダリングさせる ● iOSでシステムのフォントレンダラー使うと、空白を含むラベルが正しく作られな い場合がある ○ iOSがNSStringをcharから作る際に空白文字がノーブレークスペースに置 換されてる ■ でもこれはなんて言うかiOSが悪いと思う ● シャドーや縁取りの機能がまだやや怪しい気がする … ラベルのレンダリング
  • 13. ⒸPoppin Games Japan Co., Ltd. All Right Reseved ● タッチイベントディスパッチャーが無くなった ● LayerのonTouchBeganなどをオーバーライドして使っていた場合、警告は出る が一応動く ○ ただしタッチ優先度を後からいじれない ■ タッチ優先度を見た目と一致させていた場合、ほぼトラブルにならない はず ● ちゃんと書き直すなら、イベントディスパッチャーにタッチイベントのハンドラを登 録していくことになる タッチイベントの処理
  • 14. ⒸPoppin Games Japan Co., Ltd. All Right Reseved