gumi study cocos2d-Xmas Special（内容編）

12月13日、ベルサール半蔵門でcocos2d-Xmas Special と題したイベントが開催されました。

イベント全体の流れは昨日のAdvent Calendarでとても美しくまとめて頂いているので、今日は内容について会場で取ったメモを元につらつらと書いていきたいと思います。


# 開会挨拶

## 株式会社gumi  國光さん

* モバイルゲーム業界は日本や日本以外でも伸びている。 
* 日本でちまちまやらずにグローバルにドーンとやっていこう。
* アジアを制するものが世界を制する

>家庭用ゲーム市場、Webゲーム市場、ネイティブ市場の売上推移を並べてcocos2d-xによる開発が活きるネイティブ市場の伸びを解説。
>特にこれまで以上にグローバルを視野にいれた展開をしていこうと熱く語られた。


#LightninTalk
## ① gumi CTO 田村さん
## ネイティブ開発アンチパターン

### アンチパターンとは、べからず集＆あるある集・・・だけじゃない。
### よかれと思ってもやったことでもダメなものはダメ。


* SDK/フレームワークに手を入れてしまう
　プラットフォームサポート外となってリリースできなくなるケースもある。
　どうしてもなら疎結合なソースリンクで
　→自己満足はやめれ！

* オレオレフレームワークをつくってしまう
　つくってみたらパフォーマンスがでなかった。
　全方位的なフレームワークを作れるような人材はなかなかいない、担当者交代の地獄など
　実績のあるフレームワークを使用する、足りない部分はその上に作る。
　→車輪の再開発はやめよう

その他
* デスマになっちゃう
* なんでもC++で書いてしまう
など。

>時間切れで最後まで聞けなかったのでどこかでまた聞いてみたいと思いました。

## ②アカツキ　Olegさん
## 2Dゲームでボーンアニメーション動かすならSpine

* ボーンアニメーションは再利用性が高い
* cocos2d-x v3.0からネイティブサポート
* ボーンアニメーションはすごい！cocos2d-xでSpineを使いましょう

>5分のLTにデモも交えてSpine on cocos2d-xを紹介されました。
>最近、LWFのレンダラも公開されたので、それとのパフォーマンスや実装面での比較が気になります。

## ③ポッピンゲームス　小林さん
## iOS7でストローク付きフォントを使う

###ストローク付きフォントサポートがcocos2d-x v2.1.4で追加された。
###TTFに縁をつけたり影をつけたり。多言語対応しながら見栄えよくしやすい。


* 問題点→iOS7で縁が付かない。
* 解決策→iOS7の時にはdrawInRect:withAttributes:を使う。詳細はブログで

その他、行間のデフォルトがかわってた（確か縮んだほう）

###まとめ：AndroidがJava空間でTTF処理するのが遅いという問題もあるので、共通で使えるネイティブのTTFライブラリがあるとよいですね。

>ビットマップフォントを使って見栄えを良くしていた部分をトゥルータイプフォントでいけるようになったけど、
>やってみたら動かなかったので直したよ、というお話。
>近日中にPull Requestも出されるそうなので早く組み込まれて欲しいですね。

##④芸者東京エンターテイメント　小橋さん
##コードしか書けないエンジニアがゲームを作るには　〜みんなで作るcocos2d-xゲーム開発〜

###一週間で売れるゲームを作るための方法を伝授

###結論：
* エンジニアとデザイナーのコラボ
* 部品化
* cocos builderも活用しよう。

###問題点：
変数のバインディングがめっちゃ大変
　→自動化しましょう。LoadMakerforCCB(?)
　→シンプル化しましょう。CCPointer
※この２つを使うとコードが短くなりその結果、シンプルな記述でコラボレーションを素早く行えるようになる。
よい粒度で部品化するとデザイナーさんが動きやすい。

###デザイナーとプログラマの架け橋もフロントエンジニアとの仕事だと思う。

###これをやると？→　新米プログラマでも４日でがちゃんと動くゲームが作れた。

>小規模短期開発のためのTIPSを実体験から紹介してされていました。
>今回、同じような内容に触れたLTが多く、そういう現場が増えているのだろうなぁと感じました。
>実際できたゲームは会場でしかお見せできないものだと思いますが^^、とても完成度が高かったです。

##⑤シュハリ　松浦さん
##SimpleAudioEngineカスタマイズ

###これまでリリースした作品

* リズムタップ cocos2d-x v1
* リズムオンステージ cocs2d-x v2.1.4

###カスタマイズした点（代表的なもの）

* BGMを同時に２つ再生
* 効果音の同時再生数
* ボリュームを変える　→　OpneALのゲインを使用
* ピッチを変えて再生　→　OpenALのピッチを変える
* BGMにシーク機能　→　指定秒数までスキップ

###解決策
OpenAL（３DのAudioエンジン）を使う。

###問題点：

* GalaxyS4はシークにバグがある
* Nexus５の再生問題　容量がおおきい、長時間でうごかなくなる

###音ゲー作るのはiOSだけなら簡単
###Androidは端末毎にかなり癖があるので調整に時間がかかる

>知育系音楽ゲーム制作での実体験を元にしたLTでした。
>Androidのデバッグ、機種依存調整は地獄が待っていそう。。

##⑥Goodia　尾崎さん
##コンテンツ暗号化（お手軽）

* 1.TexuturPackerでファイルを暗号化して
* 2..plist,.cczを組み込め、
* 3.cocos2d-x上で復号

1-1. TextureFormatを.cczにする。
1-2.contents protection 暗号化設定（ここでキーも設定）
2-1. ぽいっと放り込む。
3.-1. ZipUtils.hをインクルードして複合して普通に使う。

>apkなりipaなりを割られてコンテンツを取り出されるのを防ぐお手軽な方法をご紹介。
>この方法だとキーはバイナリに含まれてしまうので、そこまで解析されたらNGな感じですが、
>パッと見えなくなるという意味ではお手軽でいいと思いました。
>尾崎さん、マギー司郎っぽい雰囲気がとてもいい感じなLTでした^^

##⑥Basic　堅田（かただ）さん
##アプたまのアプたまによるアプたまのためのアプリ開発〜チーム開発のススメ〜

###ケースで見るチーム（デザイナ、エンジニア、サウンドエンジニアの３人）開発のベストプラクティス

* CASE1：デザイン変えたい
→使ってる画像をデザイナーにポイ投げ
* CASE２：SSください
→プロジェクトをそのままポイ投げ
* CASE3：BGM、Se用意したんだけど
→開発環境をポイ投げ
* CASE4：このゲーム、ムズすぎない？
→プロジェクトをポイ投げ、パラメータの部分は一般ピーポーでも分かるようにしておく

###つまり・・・アプリ開発に関わる人には開発環境を構築してもらう
それによってプログラマは尊敬されるし非プログラマはテンションが上がる

>芸者東京に引き続きのチーム開発TIPS
>Unityの場合、デザイナ、企画者にもUnityを触ってもらうというのが一般的だと思いますが、それを
>cocos2d-xでもやってるよ、というお話でした。
>この発想、よいと思います！プログラマも尊敬されるみたいだしね！^^

#ゲストトーク
## Chukong Technologies 王哲さん　cocos2d-x 重大リリース

### cocos2d-xの現状
日本では他の国よりも流行っていない。
韓国では１５位中９個のアプリはcocos2d-x
台湾では３０位中19個

cocos2d-xではカジュアルだけでなくハードなゲームも作れる

中国では97%がcocos2d-x
他のゲームエンジンは数少ない

###■Whats New in Cocos2d-x 3.0

cocos2d-iPhoneの作者のビデオを紹介
* CocoStudio
* v2.2 からv3.0になり、Objective-C スタイルがRemoveされる
* C++11 PATTERNにも対応
* Lambdas、std::function<> の実装が素晴らしい。（王哲さん談）

* Folderの構造も全てリファクタされた
* NEW GUI FRAMEWORK
VIDEOで見せたサンプルは全てオープンソースになっている。

* NEW RENDERER
Rendererの仕組みが変わる

* EventDispatcherを更新
* パフォーマンス最適化

* 言語もC++、JavaScript、Lua、HTML5と選べる
HTML5、$60以下のデバイスでも快適に動くように調整している。
ブラウザゲームも気軽に開発、軽快に動く

* LUAでも便利
中国ではLUAが非常にポピュラー
大きいゲームにはJavascriptがオススメ
SCRIPT APIは全てWEB上にドキュメントがある。（全て英語）

###・COCOSTUDIO
* SCENE、ANIMATION、GUI、DATAの４つのエディターで構成
* グローバルで使われ始めている（65000インストール）
* 1~2週間の間に1.1,1.2がリリースされる

###・3D extension = 2.5Dゲームのサポート
* cocos3d-xではない（？）
* Fishing Joy　DAU中国で1000万(?)、MAU6500万　続編（３）をcocos3d-xで作りたい（来年の２月）
FishingJoy3がリリースされた=3D extensionが安定したということだと思って欲しい
* 正直まだ安定していない。正式なリリースにはあと２ヶ月位かかる
自社開発、パートナーだけ使ってもらっている
* 今後は2.5D→３Dまでサポートしたい。それは秋くらいにリリース（cocos3d）

###■cocos2d-x v3.0系のロードマップ
* 2014 jan beta0
* 2014 feb 3.0 final
* 2014 mar 3.1 ここで3d extensionが提供される。

>cocos2d-x v3系の紹介に多く時間を割かれていました。
>中国語、英語交じりで同時通訳がうまくいかず、分からない部分も多かったのですが、
>今後も急ピッチで機能実装、開発ツールの両面でcocos2d-xの環境が良くなっていくことが感じられました。

## cocos2d-x パネルトーク
##ファシリテーター：清水さん　登壇者：前田さん 田村さん 杉山さん

###■お題１（前田さん）
* クロスプラットフォーム、実際のところどの程度までが実現できているでしょうか？

→ iOS、Androidでは最適。今後、PCゲームやLinux、Windows（windows8/Phone）などでも対応が今後は可能
マイクロソフトはopentechという会社を通じてcocos2d-xをサポートしている。

→ブレイブ、両対応で運用している。iOS６月、Android１０月、移植は２ヶ月で終わった。
Andoridでは課金、ファイルIO、Webビュー、通信周りをサポートして１ヶ月。
あまり移植を考えていなかったのでもっと効率は高くできるはず。
（WebViewは共通化するベストプラクティスがすでにある）
課金部分はどうしても両方書かなくてはならない。

* Pluginなどはないの？　AssetStoreみたいな。
→中国ではgooglePlayがないという背景があり、全てに対応することが難しいので個別実装となっている。
　中国では課金系のテストが出来ないのも問題。

###■ お題２（杉山さん）
* 今後のバージョンアップにおいて互換性は考慮されないでしょうか？

→2.0,2.1.2.2はバージョンアップ対象、3.0は非互換

v2系からv3系のアップグレードしないほうがいい。
3.0は新しいゲームに使うべき

新しい機能はWebサイトに公開しているので以前のバージョンにもマージして欲しい(コミュニティへの参加）

###■お題３（田村さん）
* plug-inやextensionが転がっているが、そういった拡張のインタフェース策定、統一化などの予定はありますか？

→自分たちの拡張を整理しているのに注力している段階
Unityのプラグインは大したことないものだ。

###■お題４（清水さん）
* CocoStudioはオープンソース化する予定はありますか？

→オープンソース化するのは構わないが今は中でガリガリいじりたい時期。
例えばデザイナ向けのツールはオープンソース化しない、という可能性はある。


###■会場からの質問
* 課金周りのプラグイン soomlaは取り込まれないのか？
→知っているがテストできないので分からない。

* スタートアップ時期にどっちでいくか。2.2.1か3.0でいくか迷っている。
→3.0で行くべき

* メモリ周りの質問 objective-c likeのメモリ管理から3.0で変えるか？
→変えない。でも新しい仕組みはいれるかも。

* 導入しやすさの面でcobot2d(?)を使ったのだが。
→インストーラーは作ってる。1月に公開（pythonスクリプト）
　Androidの環境が大変。cocosの環境は簡単なんじゃない？

> 多くの質問がUnity陣営との比較としてのスタンスに自然となっているような印象を受けました。
> 課金周りの問題は中国国内でテストができないという残念な話も多かったので、早く日本にも支社ができてその辺がサポートされると良いですね。