cocos2d-x画像の表示と解像度

Pocket

くまのがっこう神経衰弱バトル

様々なディスプレイのサイズに合わせてゲームをつくるのにはどうしたらよいのでしょうか。書籍などには様々な設定方法とその表示結果が紹介されていますが結局どれを選択したらよいのか?できるだけ手間をかけずに対応したかったので以下の条件でいろいろ試しました。

  • ゲーム画面のデザインが簡単
  • プログラムへの画像の組み込みが簡単
  • 解像度に関係なく用意する画像は1つにしたい
  • スマホだけ考えてタブレットの画質は考慮しない

その結果、ゲーム画面は以下のルールで作成することに決めました。

  • ゲーム画面は640 x 1136 pxで設計
  • 画像の座標は640 x 1136 pxの中央を原点とする
  • ゲームの操作は中央を原点とした640 x 960 pxの範囲内にする

このルールで作られた画像をResolutionPolicy::NO_BORDERでディスプレイにフィットさせて表示しています。

game_display

実際にこの条件で作った画面をiPhone 4, iPhone 5s, nexus 5で表示してみて操作と画質に問題がないと判断してこの仕様に決めました。iPhone 4をサポートしていることもありますがiPadで操作できないとappleの審査でリジェクトされるのでゲームの操作は640 x 960 pxの範囲内で可能にしています。

AppDelegate.h

AppDelegate.cpp

画像の位置は画面の中央を原点にしてデザインしています。

game_design

画面のデザインもプログラムへの画像の組み込みも中央が原点の方が直感的に解りやすいのでこの方法に決めました。

プログラムで画像の座標を指定するときは中央が原点の座標を画面の原点へ変換する関数を使用しています。左端と右端を原点とした座標の変換も実装しています。

HelloWorldScene.h

HelloWorldScene.cpp

 

sample1私たちはこのような方法でゲームをデザインしています。

Pocket

cocos2d-xビルドと実行

Pocket

くまのがっこう神経衰弱バトル

開発環境ができたらさっそくhelloプロジェクトを作ってビルドして実行ですね。

iOSの場合はMacにケーブルでiPhoneを繋いでXcodeのRunでビルドと実行ができるので簡単です。

Androidはeclipseを使用せずにコマンドだけを使って開発しています。

キーストアをリンクする方法:proj.androidフォルダーの中のant.propertiesに以下を追加

google-play-serviceをリンクする方法

 

Pocket

cocos2d-x開発環境

Pocket

 くまのがっこう神経衰弱バトル

パソコン

私は以下の理由でMacBook Airを使用しています。

  • Macが好きだから(´・ω・`)
  • Xcodeが使いやすいから(cocos2d-xとの相性も良いです)
  • そもそもiPhoneのゲームを作るためにはMacが必須だから

参考書

私はこの3冊で学びました。あとはネットでググってひたすら調べました。
cocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Android

Cocos2d-xスマートフォン2Dゲーム開発講座 Cocos2d-x 3対応 (Smart Game Developer)

開発のプロが教える Cocos2d-x逆引きガイドブック

cocos2d-x

くまのがっこう神経衰弱バトルを作り始めたときに最新だったver 3.5を使用しています。インストールは本をみながらやったら問題なくできました。お使いになるバージョンに合わせてドキュメントや本を見ながら。

  • cocos2d-x 3.5
  • android-ndk-r10d

検証用の実機

  • iPhone 5s (iOS 8)
  • iPod touch 5 (iOS 9)
  • iPhone 4 (iOS 7)
  • iPod touch 4 (iOS 6)
  • Sony Xperia SO-05D (Android 4.0.4)
  • GALAXY Note SC-05D (Android 4.1.2)
  • Nexus 5 (Android 5.1.1)

中古で安いものを見つけて買い揃えました。OSのバージョンにより挙動が変わる事もあるので出来るだけ網羅的に持っていた方が良いとおもいます。古い機種のiPod touch 4 (iOS 6)だとメモリが256Mしか無いのでキャッシュの管理をしっかりしないとmemory warningが出て落ちてしまいます。cpuも非力なので画像の数を押さえないとFPSが20まで落ちて表示がガタガタしてしまいます。また古いOSで動いても新しいOSだとdepuricatedになってエラーになることもあるので最新のOSも持っていた方がよいです。

といいながらiPhone 6+では一度も確認したことがありません。Android 6もまだ触ったことないけど大丈夫かな…

Pocket