【レポート】「Cocos2d-x Talks #2」に参加をしてきました。

3/13日に東京で行われました「Cocos2d-x Talks」に行ってきました。 簡単ではありますが、内容をブログに書いていきたいと思います。 Cocos2d-x Talks #2 : ATND

2015-3-15-fdsa

Cocos最新情報 - 清水友晶様

登壇者は、cocos2dxの開発をしている[Chukong Technologles]の清水さん。

cocos2dxの現状

中国はcoocs2dxの本場なので79%のシェアを誇っている。 現在日本では21%。(Unity36%) 2Dのゲームがまだまだ強い市場なので、トップセールスのアプリの中でcocos2dxを利用しているアプリが多い。

cocos2dxの今後

cocos2dxV3.xが進化をして行く。3.5~3.6と。 V3.1から3Dに対応して、現在オープンソースでサンプルプロジェクトを公開している。

cocosStudioが2Dのエディット機能しかなかったのですが、3Dのエディット機能が追加をされる予定。 また、3Dのパーティクルも設定をすることができるようになる。 機能は追加されるが無料で引き続き使える。

V4.x

V4系の開発が進められているらしい。 来月の4月2日に北京で行われるカンファレンスで発表をされる予定。

初心者にやさしく

最初の開発環境を整えるのが難しく、初心者の方が利用するのが難しかった。 この部分を解消するために「cocos2d-JS」と「cocos Code IDE」が登場。

cocos2-JS

以前の[cocos2d-html5]。 現在V3.3が出ている。 1つのソースで、ネイテイブ・Webアプリを作ることができる。 ネイテイブでWebViewを使うのではなく、[Spider Monkey]を利用している。JSからC++に変換できる。 SpiderMonkey - Wikipedia

cocos Code IDE

C++には対応をしていないが、JavaScriptで利用ができる。 [cocos2d-JS]のSDKを指定するだけで利用ができるので、初期の環境設定が必要ない。 ブレークポイントが使える。

Eclipseベースで作っているらしく起動に時間がかかる。 [cocos2d-JS]の情報が少ない。洋書が一冊出ている。 これを日本語に翻訳して発売できないか考えている。

Learning Cocos2d-Js Game DevelopmentLearning Cocos2d-Js Game Development
Emanuele Feronato

Packt Publishing
売り上げランキング : 24652

Amazonで詳しく見る

その他

1、CodeZineでcocos2dxの連載が始まった。 無料/国内実績多数のクロスプラットフォーム対応ゲームフレームワーク「Cocos2d-x」の概要と環境構築手順 (1/3):CodeZine

2、cocosちゃんの存在を確認。(写真撮れず)

3、今後のイベント予定。

2015-3-15-fdsaa

釣り★スタ」 でのCocos2d-JSを使っての アプリアップデート事例 - 中 貴弘様、和田孝尚様

釣り★スタ 公式サイト - GREE

ブラウザーゲームを衣装して2011年にアプリを配信。 もともとはFlashLiteなどで作成をしていたが、HTML5で作成。 2013年ごとに色々と限界を感じてきた。(機種によって、反応やアニメーションなどの問題。) ネイテイブ化をするために[cocos2d-JS]を採用。条件はiOS4.3,Android2.2以降で利用できること。 V2系を利用。V3になると、OSを切り捨てなければいけなくなるから。 HTMLと同じくコードが丸見えになるので、見せたくないものは「JaveScript-Binding」を利用して隠微。 今後はV3にバージョンアップをする予定をしている。

  • UI : cocos2d-JSベース
  • その他 : JaveScript-Binding
2015-3-15-fda.JPG

サウンド実装のちょっとした"気配り"でユーザに快適感を - 一條貴彰様

サウンドミドルウェアADX2」の紹介。

何ができるか?

  • クロスフェード
  • BGMを鳴らしながら、効果音を鳴らした場合の音量調整
  • 音のピッチ(高さ)を変更
  • BGMの早さの変更
2015-3-15-fddsa
2015-3-15-vffdsa

専用の「オーサリングツール」「サウンドツール」を使って音を作成する。

  • ボリュームの一括管理
  • 専用の音楽フォーマットの利用による軽量化、パフォーマンス向上
  • Androidの場合には、音の遅延を少なくする
  • 音のディレイ設定。アニメーションと組み合わせつ場合の調整が楽に
  • PC上にリモートすることで、テストをしながらボリュームなどの調整ができる
2015-3-15-fdas

ネイテイブアプリでしか利用ができない。 サウンドツールはWin専用。(Macの開発はしている)

個人開発

無償で利用ができる。 利用する場合は、ストアの説明文に記載が必要。 cocos2dxの本に、利用方法が載っている。 wiki,facebookで情報を公開している。

その他

音楽ツール以外にも、ムービー(エフェクト)を作成できるツールがある。(CRI Sofdec2) このムービーツールは、Androidで見ることができるデモを公開している。 ADX2の解説本(5000円)が出ている。

CD付 CRI ADX2で作るゲームサウンド制作ガイド[CRI ADX2公式ガイド] (Smart Game Developer)CD付 CRI ADX2で作るゲームサウンド制作ガイド[CRI ADX2公式ガイド] (Smart Game Developer)
内田 哉,株式会社CRI・ミドルウェア

翔泳社
売り上げランキング : 495779

Amazonで詳しく見る

消滅都市” の開発事例 - 渡部晋司様

消滅都市」ではV3.0を利用している。 17名体勢で、7ヶ月の開発期間。会社の状況で半年でリリースする必要があった。 Greeではcocos2dxを利用した初めての作品。 必要なのもをCherryPickで持ってくる。(Git?)

v2系->V3系への以降がとても大変だった。 今のところ不満がないのでV3.0を利用している。

cocos2dxの付き合い方

個人的にゲームエンジンではなく、フレームワークに近い。 標準のツールがないので、自由に組み合わせて利用できる。 広告系のSDKも苦労せずに組み込めるのが良い所。

ライブラリ

UI

Photoshopで使って素材を作成。 これを配置をするのがメンドクサイ。 Photoshop上で画面を作って、これをJSX(Photoshop 用の JavaScript ファイル)でエクスポートし、独自のライブラリを使ってゲーム上に配置をしている。 アニメーションは、プログラマが作成をした。

テクスチャアトラスにならない。 JSXのエクスポートが遅いなどの「イマイチな」点がある。

パフォーマンス

「消滅都市」はアクションゲームなので、ぬるぬる動くようにしたい。

  • CPU・GPU
  • メモリ消費量
  • データの入出量
  • IO:サーバー通信

この辺りが「パフォーマンス」と呼ばれるもの。 「パフォーマンス」を求めるとゲームが完成しないので、リリース前にやるべき。「消滅都市」ではリリース2ヶ月前から行った。 今回は「CPU・GPU」に絞って話をする。

CPU

[Xcode Instruments]を利用して解析。 これを使い、コードの残念な所を直した。

cocos2dx絡みでは行ったこと。

  • パーティクルの削除 : LWF利用
  • SpriteBatchNodeを明示的に利用 : ドローコールの削減

GPU

[Xcode Frame Debugger] [Xcode Instruments]でiOS側を解析。 [Adreno Profiler][PerfHUD ES]でAndroid側を解析。

GPUの改善に必要なこと。

  • 頂点の計算(ポリゴン):3Dゲームの場合
  • ピクセルのフィル
  • ドローコール
  • CPUのパフォーマンス : 熱の影響を受けるので、CPUのパフォーマンスの改善をする

ピクセルのフィルの改善

「消滅都市」では、無駄な透明レイアーが表示されていた。 アルファが0。これは[Xcode Frame Debugger]を見ないとわからない。 また、ピクセルのオーバードローが多かった。同じ点を何回も描いていると負荷がかかるので、描画の重なりに気をつけた。

小手先のテクニック

  • 高速のシェーダーの利用:一部の端末で効果あり。
  • glClearを呼び出すタイミングの調整:完全な2Dゲームで利用する
  • 圧縮テクスチャを利用:品質の劣化の注意
  • Androidのハードウェアスケーラーを使う: 画面の引き伸ばしが可能
  • フォントデータをスリム化 : 8bitが32bitに変換されるので、CCImageを改造する。(フォントのみ)
IMG 3980

カスタムシェーダーとゲーム内表現

HSBを調整するシェーダーを使うと、同じ演出の色を変更することができる。 シェーダーを追加する場合、Android側ではイベントをハンドリングしないとシェーダーが破棄されて、残念なことになる。

アクションゲームの設計 失敗談

ノウハウがなかったので、設計がよくわからなかった。

IMG 3979

runAction()

Undate()とrunAction()がゴチャゴチャになったので、Update()だけど動きを付けるようにした。 ゲーム面以外では利用をしている。

IMG 3978

iOS8とプリフリ問題

ゲーム開始直後に、ちょっと止まる現象が起こっている。(アクションゲームだと致命的) 原因は[presentRenderbuffer]の時間が関係しているみたい。

最後に

久々の勉強会でしたが、特に「消失都市」のお話はとても参考になりました。 個人的に不具合がなくても、メモリやCPUに使用量などが気になるタイプなので、勉強になりました。「小手先のテクニック」はとても難しい内容でした。

[cocos2d-JS]は、JavaScriptを知らないこともあり、内容がよく分からなかったので、上手くまとめきれませんでした。 C++に比べての速度などが気になるのですが、最初に取り掛かる閾値が低くなりそう感じでした。

サウンドに関しては、現状の標準ライブラリには色々と不満があります。(特にAndroid側) ですので、「ADX2」に関しては以前から注視をしていたのですが、非常に便利に感じます。 個人開発ですと、無償で利用ができるので、これを触ってみたいと感じました。

最後に、今回会場の提供と懇親会を準備していたいたGreeにの皆様ありがとうございました。 次回は4月に開催される予定みたいですので、都合がつけば参加をしてみたいと思います。

2015-3-15-fdsas