SlideShare a Scribd company logo
1 of 61
Download to read offline
-Cocos2d-x3.5での開発事例-
株式会社トランスリミット
Cocos Talks #5 (2015/07/23)
アジェンダ
会社概要 ゲーム概要 開発環境
物理ゲームの
開発
その他
苦労したこと
まとめ
会社紹介
提供サービス
1300万DL 100万DL
アジェンダ
開発環境
物理ゲームの
開発
その他
苦労したこと
まとめ
ゲーム概要会社概要
ゲーム概要
今度は描く脳トレ!
BrainDotsの遊び方
線を描いて
ぶつける
BrainDotsの遊び方
BrainDotsの遊び方
ペンの種類は30種類以上
300以上のステージ
プレイ動画共有
ユーザーのプレイ動画
俺のプレイ動画
グローバルで流行ると…
自己紹介
川端 和樹
(Kawabata_Lemon)
株式会社トランスリミット
2015年度新卒入社
@Kawabata_Lemon
クライアントサイドエンジニア
アジェンダ
物理ゲームの
開発
その他
苦労したこと
まとめ
開発環境ゲーム概要会社概要
開発環境
開発期間は2ヶ月ちょっと
基本的な機能 ブラッシュアップ
社内ライブラリの開発も並行して実装
開発環境
Cocos2d-x
Translimit-core(社内ライブラリ)
ゲーム部分(BrainDots)
SNSシェア、通信処理、プレイ録画、
広告、サウンド、暗号化、課金、ローカライズ
開発環境
物理エンジン
Cocos2d-x 3.0から標準実装されている
物理エンジンを使用
こちらは使わず。
開発環境
->当初は最新だった3.6をベースに開発開始
当初は最新版であったCocos2d-x3.6で開発開始したが…
ピクつき問題に遭遇した
開発環境
->試しにCocos2d-xのcpp-testで3.5と3.6で
試してみると3.5なら発生しないことが発覚
_人人人人人人人人人人人人人人人人人_
> Cocos2d-x3.5にダウングレード <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
動画共有
EveryPlayを使用
->Cocosのオーディオが録音できない(Android)
->Cricket Audio Engineを導入
アジェンダ
その他
苦労したこと
まとめ
開発環境ゲーム概要会社概要
物理ゲームの
開発
物理システムを使った開発
PhysicsWorld
PhysicsBody
PhysicsShape
PhysicsContact
PhysicsJoint
Cocos2d-xの物理エンジン(Chipmunk)
が提供するもの
->重力とかを持つ物理世界
->オブジェクトの剛体
->剛体に含まれる単位図形
->オブジェクトとの衝突イベント
->物体を世界に繋ぎとめるもの
描いたものに剛体を与える
PhysicsShapeで作成できる図形
Circle Box Polygon
この図形のみで描いた物に剛体を作る
描いたものに剛体を与える
タッチした点を保存
onTouchBegan,onTouchMoved
描いたものに剛体を与える
図形を図形で結ぶ
手を離したタイミングで..
onTouchEnded
最適化が必要だった
この工程だと追加された点に合わせて図形が
めちゃ増える
iPod Touch 4Genで重くなるくらい
剛体の計算が辛くなった
ましてやAndroidなんて…(ボソッ
剛体を減らすような工夫が必要でした。
最適化1
図形の描画はするけど剛体は追加しない
見た目
剛体
なんか違和感
最適化2
四角形を追加する最低距離を長めに取る
あんまり長く取り過ぎたら違和感
最終的に
中間の丸をすべて取り除く
結果として剛体は約半分に
->Androidのミッドレンジ端末でもまあまあ動く
ギミックの開発
スイッチとレーザー
ベルトコンベア
動くオブジェクト
ピン
物理のイベント
onContactBegin
onContactSeparate
onContactPresolve
onContactPostSolve
物体がぶつかり合う時にはイベントが発生する
衝突したとき
離れたとき
衝突中
衝突後
ベルトコンベア
上に乗っているオブジェクトを加速(減速)
ベルトコンベア
ベルトコンベアに乗ったら配列に追加
Updateで配列中のオブジェクトをベルトコンベ
アの速度になるように調整する
onContactBegin
ベルトコンベア
ベルトコンベアに離れたら配列から外す
onContactSeparate
スイッチとレーザー
T
ノード(スイッチ)が他のノード(レーザー)
に影響を与える
スイッチとレーザー
T
レーザーを先に生成して
スイッチを生成
スイッチとレーザー
T
ボールとスイッチがぶつかったら
onContactBegin
スイッチとレーザー
T
レーザーを消す
動くオブジェクト
Action(MoveByとか)で移動するオブジェクト
剛体もついてくるためアニメーションさせるだけで
簡単にリフトなどが実装できた
ピン(PhysicsJoint)
オブジェクトを空間内に止めるためのオブジェクト
ボールが上に乗ると
ピン(PhysicsJoint)
オブジェクトを空間内に止めるためのオブジェクト
重みで回転する
動くオブジェクトとピンの
注意点
PhysicsJointも、剛体のrunActionもPhysicsWorld
が存在しない状態で生成すると落ちる
onEnterTransitionDidFinish()->オブジェクトの
でピンを追加するようにしたり、runActionを開始
アジェンダ
まとめ
開発環境ゲーム概要会社概要
物理ゲームの
開発
その他
苦労したこと
苦労したその他の点
Androidで画面が黒くなる
AndroidでClippingNodeが効かない
Androidで
画面やオブジェクトが黒くなる
現象は2つのパターンがあった
1.動画広告から戻ってきた時にラベルやスプライトが
真っ黒になる
2.RenderTextureで生成したテクスチャが
バックグラウンドからもどると…
1.動画広告から戻ってきた時にラベルやスプ
ライトが真っ黒になる
原因:動画広告のコールバック時にはOpenGLの
Contextが存在していなかった
Cocos
Java
動画広告
Cocos
Java
Callback
解決策
JavaからうけたコールバックをCocosの
Scheduler処理で実行するようにした。
Director::getInstance()->getScheduler()->
schedule(CC_SCHEDULE_SELECTOR(Callback::doCallback),
this, 0, false);
// Cocosのスケジューラで実行するためOpenGLの復帰後に必ず実行される
2.RenderTextureで生成したテクスチャが
バックグラウンドからもどると真っ黒になる
ゲーム内で使用する方眼紙の背景は
RenderTextureで動的に生成している。
(端末によって解像度が違うため)
->内部でキャッシュ機構を作って解像度ごと
にテクスチャをマッピングして持っておくよ
うに実装した。
2.RenderTextureで生成したテクスチャが
バックグラウンドからもどると…
ところがバックグラウンドに入って戻ってく
るとそのテクスチャが解放されて真っ黒に
原因:AndroidのOpenGLの挙動でバックグラウンド時
に入った際、一旦テクスチャ情報がリセットされていた
画像ファイルから作られたテクスチャ類は復活されるが
動的に生成したテクスチャは復活されない
->結局、必要な方眼パターンを初回時に
RenderTextureですべて生成し画像ファイルで保存
して使うようにした。
解決策
AndroidでClippingNodeが効かない
解決法
1.AppActivity.javaの設定をいじる
2.RenderTextureのオプションを設定
@Override
public Cocos2dxGLSurfaceView onCreateView() {
// ClippingNodeのバグ対応
glSurfaceView = new Cocos2dxGLSurfaceView(this);
this.hideSystemUI();
glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
return glSurfaceView;
}
RenderTexture::create(paddedSize.width, paddedSize.height,
Texture2D::PixelFormat::RGBA8888, GL_DEPTH24_STENCIL8_OES);
アジェンダ
開発環境ゲーム概要会社概要
物理ゲームの
開発
その他
苦労したこと
まとめ
まとめ
物理ゲームは楽しいけどパフォーマンス的に
制約が求められることになるため
グローバルで作るのはなかなか難しい
->剛体をいかにして減らすかなどの最適化が
必要となる。
まとめ
クロスプラットフォームゲームエンジン
とはいえ
Android(iOS)にしか起こらない問題は
付きまとう
->OS固有のみならず、端末固有の問題など
それもまた最適化が必要となるため
完全にすべての端末に対応することは難しい。
まとめ
それでもやっぱり便利ではあるので
Cocos2d-xはオススメです。
->中のコードも見える
->必要に応じてカスタマイズもできる
アジェンダ
開発環境ゲーム概要会社概要
物理ゲームの
開発
その他
苦労したこと
まとめ
世界に響くサービスを作りたい
エンジニア/デザイナー募集中!
https://www.wantedly.com/projects/21002
ご清聴ありがとうございました

More Related Content

What's hot

怖くないブランチ開発外部公開用
怖くないブランチ開発外部公開用怖くないブランチ開発外部公開用
怖くないブランチ開発外部公開用
CROOZ, inc.
 
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みモバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
MorioImai
 
5年後のデータサイエンティスト
5年後のデータサイエンティスト5年後のデータサイエンティスト
5年後のデータサイエンティスト
Drecom Co., Ltd.
 

What's hot (20)

CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方
 
Unityで本格戦国シュミレーションRPG 開発
Unityで本格戦国シュミレーションRPG 開発Unityで本格戦国シュミレーションRPG 開発
Unityで本格戦国シュミレーションRPG 開発
 
Flow in VR Funhouse MOD Kit
Flow in VR Funhouse MOD KitFlow in VR Funhouse MOD Kit
Flow in VR Funhouse MOD Kit
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
GTC 2016 基調講演からディープラーニング関連情報のご紹介
GTC 2016 基調講演からディープラーニング関連情報のご紹介GTC 2016 基調講演からディープラーニング関連情報のご紹介
GTC 2016 基調講演からディープラーニング関連情報のご紹介
 
FINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてFINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについて
 
Cocos2d-x勉強会 2014/10/05
Cocos2d-x勉強会 2014/10/05Cocos2d-x勉強会 2014/10/05
Cocos2d-x勉強会 2014/10/05
 
位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
 
Cocos2d-xを用いた "LINE タワーライジング" の開発事例
Cocos2d-xを用いた "LINE タワーライジング" の開発事例Cocos2d-xを用いた "LINE タワーライジング" の開発事例
Cocos2d-xを用いた "LINE タワーライジング" の開発事例
 
怖くないブランチ開発外部公開用
怖くないブランチ開発外部公開用怖くないブランチ開発外部公開用
怖くないブランチ開発外部公開用
 
「釣り★スタ」でのCocos2d-JSを使ってのアプリアップデート事例 (2)
「釣り★スタ」でのCocos2d-JSを使ってのアプリアップデート事例 (2)「釣り★スタ」でのCocos2d-JSを使ってのアプリアップデート事例 (2)
「釣り★スタ」でのCocos2d-JSを使ってのアプリアップデート事例 (2)
 
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
 
消滅都市 Cocos2d-xでの演出・UIあれこれ
消滅都市 Cocos2d-xでの演出・UIあれこれ消滅都市 Cocos2d-xでの演出・UIあれこれ
消滅都市 Cocos2d-xでの演出・UIあれこれ
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
その後のDeNAのネイティブアプリ開発 #denatechcon
その後のDeNAのネイティブアプリ開発 #denatechconその後のDeNAのネイティブアプリ開発 #denatechcon
その後のDeNAのネイティブアプリ開発 #denatechcon
 
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みモバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
 
5年後のデータサイエンティスト
5年後のデータサイエンティスト5年後のデータサイエンティスト
5年後のデータサイエンティスト
 

Similar to Braindots-開発秘話- Cocos2d-x3.5 開発事例 -

変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
俊仁 小林
 
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
dena_study
 
N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...
N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX  ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX  ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...
N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...
日本マイクロソフト株式会社
 
【クラウドゲート】事業紹介(2012年12月)
【クラウドゲート】事業紹介(2012年12月)【クラウドゲート】事業紹介(2012年12月)
【クラウドゲート】事業紹介(2012年12月)
Junpei Kawabata
 
【クラウドゲート】事業紹介(2012年12月)
【クラウドゲート】事業紹介(2012年12月)【クラウドゲート】事業紹介(2012年12月)
【クラウドゲート】事業紹介(2012年12月)
Junpei Kawabata
 
開催趣旨・00年代イントロ・パネルディスカッション資料
開催趣旨・00年代イントロ・パネルディスカッション資料開催趣旨・00年代イントロ・パネルディスカッション資料
開催趣旨・00年代イントロ・パネルディスカッション資料
IGDA Japan
 
XNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところXNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところ
IGDA Japan
 

Similar to Braindots-開発秘話- Cocos2d-x3.5 開発事例 - (20)

3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメ3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメ
 
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話Cocos2d-xとSpriteStudioを使った音ゲー開発のお話
Cocos2d-xとSpriteStudioを使った音ゲー開発のお話
 
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
 
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
 
強化学習技術とゲーム AI 〜 今できる事と今後できて欲しい事 〜
強化学習技術とゲーム AI  〜 今できる事と今後できて欲しい事 〜強化学習技術とゲーム AI  〜 今できる事と今後できて欲しい事 〜
強化学習技術とゲーム AI 〜 今できる事と今後できて欲しい事 〜
 
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
 
N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...
N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX  ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX  ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...
N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...
 
Cocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみましたCocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみました
 
Androidアプリ開発を楽にするために
Androidアプリ開発を楽にするためにAndroidアプリ開発を楽にするために
Androidアプリ開発を楽にするために
 
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
 
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingRegional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
 
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作
 
Game Development and Automation @ Agile Sapporo 2018 #1
Game Development and Automation @ Agile Sapporo 2018 #1Game Development and Automation @ Agile Sapporo 2018 #1
Game Development and Automation @ Agile Sapporo 2018 #1
 
【クラウドゲート】事業紹介(2012年12月)
【クラウドゲート】事業紹介(2012年12月)【クラウドゲート】事業紹介(2012年12月)
【クラウドゲート】事業紹介(2012年12月)
 
【クラウドゲート】事業紹介(2012年12月)
【クラウドゲート】事業紹介(2012年12月)【クラウドゲート】事業紹介(2012年12月)
【クラウドゲート】事業紹介(2012年12月)
 
TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料
TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料
TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料
 
開催趣旨・00年代イントロ・パネルディスカッション資料
開催趣旨・00年代イントロ・パネルディスカッション資料開催趣旨・00年代イントロ・パネルディスカッション資料
開催趣旨・00年代イントロ・パネルディスカッション資料
 
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
 
土下座パラダイスはこうして生まれた
土下座パラダイスはこうして生まれた土下座パラダイスはこうして生まれた
土下座パラダイスはこうして生まれた
 
XNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところXNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところ
 

More from 和樹 川端 (8)

Nightmarejs
NightmarejsNightmarejs
Nightmarejs
 
Cocos2d xでぬるぬる動くビルダー機能実装
Cocos2d xでぬるぬる動くビルダー機能実装Cocos2d xでぬるぬる動くビルダー機能実装
Cocos2d xでぬるぬる動くビルダー機能実装
 
オブジェクト指向
オブジェクト指向オブジェクト指向
オブジェクト指向
 
Enchantjs
EnchantjsEnchantjs
Enchantjs
 
cocos2dxことはじめ(2.2.5)
cocos2dxことはじめ(2.2.5)cocos2dxことはじめ(2.2.5)
cocos2dxことはじめ(2.2.5)
 
Nodejs
NodejsNodejs
Nodejs
 
Java2cpp
Java2cppJava2cpp
Java2cpp
 
Adinnolab
AdinnolabAdinnolab
Adinnolab
 

Braindots-開発秘話- Cocos2d-x3.5 開発事例 -