SlideShare a Scribd company logo
1 of 50
Androidクラスタの私がcocos2d-xで
マルチディスプレイ対応をしてみた
                    2012/6/30
              さいたま開発勉強会 vol4
                    @f_megmeg5
自己紹介

@f_megmeg5

iPhoneアプリもAndroid
アプリも作っている

ゲームよりもツール系が
得意
cocos2d-xで遊び始めたきっかけ


周りのiOS開発者の方々がcocos2dで楽
しそうに遊んでいた

でも、私はAndroidにどっぷりだから
Androidでcocos2dやりたい!
cocos2d-xで遊び始めたきっかけ


cocos2d-androidがあるならこれを使
えばいいじゃない!

http://code.google.com/p/cocos2d-
android/
cocos2d-xで遊び始めたきっかけ




 全く更新されていない
cocos2d-xで遊び始めたきっかけ




  (´・ω・`)
cocos2d-xで遊び始めたきっかけ

気を取り直して、cocos2d-android-1
もあるじゃない!

https://github.com/ZhouWeikuan/
cocos2d
http://code.google.com/p/cocos2d-
android-1/
cocos2d-xで遊び始めたきっかけ




 全く更新されていない
cocos2d-xで遊び始めたきっかけ




(´;ω;`)
cocos2d-xで遊び始めたきっかけ



もうAndroidクラスタはcocos2dに触れ
ないの?

Javaで書くなということなの?
cocos2d-xで遊び始めたきっかけ

@yoichinejiさん

cocos2d-xがあるじゃない

cocos2d Advent
Calendar 2011で記事書い
たから見てよ
cocos2d-xで遊び始めたきっかけ

cocos2d-xって何?

cocos2dを継承してC/C++で書いてい
くよ!

iPhone/Androidで動くよ!

法人化しているから、更新も早いよ!
cocos2d-xで遊び始めたきっかけ




  Javaで書けないけど
    これしかない
cocos2d-xで遊び始めたきっかけ




けど、NDKかー

C/C++わかんないよー
cocos2d-xで遊び始めたきっかけ


cocos2d Developers Japan
http://www.facebook.com/groups/
309695229106927/
ここで紹介された記事を読んで、これ
ならできるかも…
実際に遊んでみた

このように紹介されていた
実際に遊んでみた



やってみて悪戦苦闘した様子をブログ
にまとめてるよ!

http://megmegfive.blogspot.jp/
実際に遊んでみた




動いた動いた(∩´∀`)∩
実際に遊んでみた

REGZA phoneでの表示がおかしい
実際に遊んでみた

試しにGalaxy Nexusでもやってみよう
cocos2d-xで遊び始めたきっかけ




   表示が全然違う!?
Android 用のマルチディスプレイ対応




何故このように表示が異なるの?
Android 用のマルチディスプレイ対応


原因

  Androidはディスプレイサイズが様々

  Androidは画面のアスペクト比も様々

  そんでもってdpiも端末毎に異なる
Android 用のマルチディスプレイ対応


CCSprite* pSprite =
CCSprite::spriteWithFile("HelloWorld.png");

pSprite->setPosition( ccp(size.width/2, size.height/2) );

// add the sprite as a child to this layer
this->addChild(pSprite, 0);
Android 用のマルチディスプレイ対応



座標はともかく、パーツ類のCCSpriteの
スケールが考慮されていない

これじゃあ表示がおかしくなっちゃうね
Android 用のマルチディスプレイ対応




じゃあスケールで誤摩化そう!
Android 用のマルチディスプレイ対応

スケールの基準

Androidのmdpiを基準にする

  長辺:480px

  短辺:320px

  iPhoneとここは一緒
Android 用のマルチディスプレイ対応
const float DEFAULT_WIDTH = 480.0;
const float DEFAULT_HEIGHT = 320.0;
float WIN_SCALE;
CCSize size = CCDirector::sharedDirector()->getWinSize();

!   //倍率を取得する
!   float kw=size.width/DEFAULT_WIDTH;
!   float kh=size.height/DEFAULT_HEIGHT;
!   if(kw>=kh){
!   ! WIN_SCALE = kh;
!   } else{
!   ! WIN_SCALE = kw;
!   }
Android 用のマルチディスプレイ対応


  本当はスケールの値は別途他のクラス
  で持つのが良い?

  実際のスケールの組み込みはEclipse
  で上で見せます
実際に遊んでみた

REGZA phoneでスケール調整したもの
実際に遊んでみた

試しにGalaxy Nexusでもやってみよう
Android 用のマルチディスプレイ対応




    わりといい感じ
Android 用のマルチディスプレイ対応


  本当はスケールの値は別途他のクラス
  で持つのが良い?

  実際のスケールの組み込みはEclipse
  で上で見せます
まとめ


スケール計算を簡単にすませるならこ
の方式になると思う

アスペクト比が一定の方が画面として
作りやすい
まとめ



凝った背景にしないのであれば、背景
のみ全画面で出して、他の部分をス
ケール計算ですませるのが良いかも
cocos2d-xをやってみて



Eclipseでcocos2d-xをやるなら、補完
がないのでDash片手に行うしかない

Xcodeなら補完が効くので便利
cocos2d-xをやってみて

Xcode4で新規プロジェクトを作ると
ディレクトリ構成がcocos2d-xで推奨さ
れている構成と異なるから、Android
向けにビルドパスの修正が必要になる

地味に面倒
cocos2d-xをやってみて

XCodeでcocos2dに慣れてからやれば
良かったかも

C++の知識が無いからサンプルの見よ
う見真似で誤摩化しているから、ちゃ
んと勉強しないといけないかも
結論




頑張るしかない
おわり
おまけを話す時間ある?
おまけ




アプリのテスト
おまけ


AndroidならJUnitとかMonkeyとかを
使う

ごめんなさい使ったことがないです

基本人力です
おまけ


誰かにテストしてもらう

TestFlight(iPhone)を使ったりOTAと
して配布してテストを行ってもらうこと
が多い
おまけ


テストやアプリを使っていて気付いた
こと

 連打対策が弱いことがある

 同時押し対策が弱いことがある
おまけ




この辺りはちゃんとケアしてあげる

けっこう突っ込まれるところ
おまけ




バグを見つけるために、他に何かコツ
はある?
おまけ




運
おまけ


バグ発見は運や才能だと偉い人が言っ
ていました

バグ報告してくれるユーザーやテスター
を労ってあげましょう
おまけ




おわり

More Related Content

What's hot

cocos2d-xにおけるBox2Dの利用方法および便利なツール
cocos2d-xにおけるBox2Dの利用方法および便利なツールcocos2d-xにおけるBox2Dの利用方法および便利なツール
cocos2d-xにおけるBox2Dの利用方法および便利なツールTomoaki Shimizu
 
cocos2d-x 開発の効率化
cocos2d-x 開発の効率化cocos2d-x 開発の効率化
cocos2d-x 開発の効率化Akihiro Matsuura
 
Cocos2d-x(JS) ハンズオン #11「2D物理エンジン」
Cocos2d-x(JS) ハンズオン #11「2D物理エンジン」Cocos2d-x(JS) ハンズオン #11「2D物理エンジン」
Cocos2d-x(JS) ハンズオン #11「2D物理エンジン」Tomoaki Shimizu
 
Cocos2d-x(JS) ハンズオン #13「SNS対応(Twitter, Facebook)」
Cocos2d-x(JS) ハンズオン #13「SNS対応(Twitter, Facebook)」Cocos2d-x(JS) ハンズオン #13「SNS対応(Twitter, Facebook)」
Cocos2d-x(JS) ハンズオン #13「SNS対応(Twitter, Facebook)」Tomoaki Shimizu
 
Cocos2d-x 3.2 Eclipseを利用したAndroid開発環境の構築
Cocos2d-x 3.2 Eclipseを利用したAndroid開発環境の構築Cocos2d-x 3.2 Eclipseを利用したAndroid開発環境の構築
Cocos2d-x 3.2 Eclipseを利用したAndroid開発環境の構築Tomoaki Shimizu
 
cocos2d-xとCocos Code IDE
cocos2d-xとCocos Code IDEcocos2d-xとCocos Code IDE
cocos2d-xとCocos Code IDETomoaki Shimizu
 
Cocos2d-xのかんたんな紹介
Cocos2d-xのかんたんな紹介Cocos2d-xのかんたんな紹介
Cocos2d-xのかんたんな紹介Tomoaki Shimizu
 
CocosBuilderとcocos2d-x JSB
CocosBuilderとcocos2d-x JSBCocosBuilderとcocos2d-x JSB
CocosBuilderとcocos2d-x JSBTomoaki Shimizu
 
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」Tomoaki Shimizu
 
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!Tomoaki Shimizu
 
Cocos Code IDEを使ってみた
Cocos Code IDEを使ってみたCocos Code IDEを使ってみた
Cocos Code IDEを使ってみたTomoaki Shimizu
 
CocosBuilderを利用した開発の進め方
CocosBuilderを利用した開発の進め方CocosBuilderを利用した開発の進め方
CocosBuilderを利用した開発の進め方Tomoaki Shimizu
 
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門Kohki Miki
 
Cocos2d-x(JS) ハンズオン #05「Cocos StudioとCocos2d-x (JS)との連携」
Cocos2d-x(JS) ハンズオン #05「Cocos StudioとCocos2d-x (JS)との連携」Cocos2d-x(JS) ハンズオン #05「Cocos StudioとCocos2d-x (JS)との連携」
Cocos2d-x(JS) ハンズオン #05「Cocos StudioとCocos2d-x (JS)との連携」Tomoaki Shimizu
 
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築についてMacでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築についてTomoaki Shimizu
 
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築についてTomoaki Shimizu
 
Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06
Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06
Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06Yahoo!デベロッパーネットワーク
 

What's hot (20)

cocos2d-xにおけるBox2Dの利用方法および便利なツール
cocos2d-xにおけるBox2Dの利用方法および便利なツールcocos2d-xにおけるBox2Dの利用方法および便利なツール
cocos2d-xにおけるBox2Dの利用方法および便利なツール
 
Cocos2d-x 3D Extension
Cocos2d-x 3D ExtensionCocos2d-x 3D Extension
Cocos2d-x 3D Extension
 
cocos2d-x 開発の効率化
cocos2d-x 開発の効率化cocos2d-x 開発の効率化
cocos2d-x 開発の効率化
 
Cocos2d-x(JS) ハンズオン #11「2D物理エンジン」
Cocos2d-x(JS) ハンズオン #11「2D物理エンジン」Cocos2d-x(JS) ハンズオン #11「2D物理エンジン」
Cocos2d-x(JS) ハンズオン #11「2D物理エンジン」
 
Cocos2d-x(JS) ハンズオン #13「SNS対応(Twitter, Facebook)」
Cocos2d-x(JS) ハンズオン #13「SNS対応(Twitter, Facebook)」Cocos2d-x(JS) ハンズオン #13「SNS対応(Twitter, Facebook)」
Cocos2d-x(JS) ハンズオン #13「SNS対応(Twitter, Facebook)」
 
Cocos2d-x 3.2 Eclipseを利用したAndroid開発環境の構築
Cocos2d-x 3.2 Eclipseを利用したAndroid開発環境の構築Cocos2d-x 3.2 Eclipseを利用したAndroid開発環境の構築
Cocos2d-x 3.2 Eclipseを利用したAndroid開発環境の構築
 
cocos2d-xとCocos Code IDE
cocos2d-xとCocos Code IDEcocos2d-xとCocos Code IDE
cocos2d-xとCocos Code IDE
 
Cocos2d-xのかんたんな紹介
Cocos2d-xのかんたんな紹介Cocos2d-xのかんたんな紹介
Cocos2d-xのかんたんな紹介
 
Cocos2d-x(JS)の紹介
Cocos2d-x(JS)の紹介Cocos2d-x(JS)の紹介
Cocos2d-x(JS)の紹介
 
CocosBuilderとcocos2d-x JSB
CocosBuilderとcocos2d-x JSBCocosBuilderとcocos2d-x JSB
CocosBuilderとcocos2d-x JSB
 
Cocos2d xのススメ
Cocos2d xのススメCocos2d xのススメ
Cocos2d xのススメ
 
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」
 
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
 
Cocos Code IDEを使ってみた
Cocos Code IDEを使ってみたCocos Code IDEを使ってみた
Cocos Code IDEを使ってみた
 
CocosBuilderを利用した開発の進め方
CocosBuilderを利用した開発の進め方CocosBuilderを利用した開発の進め方
CocosBuilderを利用した開発の進め方
 
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
 
Cocos2d-x(JS) ハンズオン #05「Cocos StudioとCocos2d-x (JS)との連携」
Cocos2d-x(JS) ハンズオン #05「Cocos StudioとCocos2d-x (JS)との連携」Cocos2d-x(JS) ハンズオン #05「Cocos StudioとCocos2d-x (JS)との連携」
Cocos2d-x(JS) ハンズオン #05「Cocos StudioとCocos2d-x (JS)との連携」
 
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築についてMacでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
 
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
 
Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06
Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06
Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06
 

Similar to Androidクラスタの私がcocos2d-xでマルチディスプレイ対応してみた

Cocos2d-x勉強会 2014/10/05
Cocos2d-x勉強会 2014/10/05Cocos2d-x勉強会 2014/10/05
Cocos2d-x勉強会 2014/10/05Yasuhiro Matsuda
 
Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Masayuki Abe
 
IEとメモ帳でかんたんゲーム開発
IEとメモ帳でかんたんゲーム開発IEとメモ帳でかんたんゲーム開発
IEとメモ帳でかんたんゲーム開発amusementcreators
 
Developer Summit 2014, 13-C-4 セッション
Developer Summit 2014, 13-C-4 セッションDeveloper Summit 2014, 13-C-4 セッション
Developer Summit 2014, 13-C-4 セッションJun Hosokawa
 
HTML5でハイブリットなアプリ開発をアレしてみた件
HTML5でハイブリットなアプリ開発をアレしてみた件HTML5でハイブリットなアプリ開発をアレしてみた件
HTML5でハイブリットなアプリ開発をアレしてみた件Tatsuo Kurita
 
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうGo mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうTakuya Ueda
 
Delphi のひみつ!(2015/01/29 CROSS 2015)
Delphi のひみつ!(2015/01/29 CROSS 2015)Delphi のひみつ!(2015/01/29 CROSS 2015)
Delphi のひみつ!(2015/01/29 CROSS 2015)Jun Hosokawa
 
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Takuya Ueda
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたKohei Kadowaki
 
Unityを使ったVRアプリ作成入門 ABCD2015金沢編
Unityを使ったVRアプリ作成入門 ABCD2015金沢編Unityを使ったVRアプリ作成入門 ABCD2015金沢編
Unityを使ったVRアプリ作成入門 ABCD2015金沢編kinneko
 

Similar to Androidクラスタの私がcocos2d-xでマルチディスプレイ対応してみた (10)

Cocos2d-x勉強会 2014/10/05
Cocos2d-x勉強会 2014/10/05Cocos2d-x勉強会 2014/10/05
Cocos2d-x勉強会 2014/10/05
 
Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )
 
IEとメモ帳でかんたんゲーム開発
IEとメモ帳でかんたんゲーム開発IEとメモ帳でかんたんゲーム開発
IEとメモ帳でかんたんゲーム開発
 
Developer Summit 2014, 13-C-4 セッション
Developer Summit 2014, 13-C-4 セッションDeveloper Summit 2014, 13-C-4 セッション
Developer Summit 2014, 13-C-4 セッション
 
HTML5でハイブリットなアプリ開発をアレしてみた件
HTML5でハイブリットなアプリ開発をアレしてみた件HTML5でハイブリットなアプリ開発をアレしてみた件
HTML5でハイブリットなアプリ開発をアレしてみた件
 
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうGo mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
 
Delphi のひみつ!(2015/01/29 CROSS 2015)
Delphi のひみつ!(2015/01/29 CROSS 2015)Delphi のひみつ!(2015/01/29 CROSS 2015)
Delphi のひみつ!(2015/01/29 CROSS 2015)
 
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
 
Unityを使ったVRアプリ作成入門 ABCD2015金沢編
Unityを使ったVRアプリ作成入門 ABCD2015金沢編Unityを使ったVRアプリ作成入門 ABCD2015金沢編
Unityを使ったVRアプリ作成入門 ABCD2015金沢編
 

Androidクラスタの私がcocos2d-xでマルチディスプレイ対応してみた

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n