2015年11月22日日曜日

Cocos2d-xでの複数解像度ディスプレイへの対応方針 その1

過去にいくつかAndroidアプリを作って来ましたが、あまりちゃんと理解していなかった解像度についてCocos2d-xでゲームを作成するにあたり正確に理解する必要が出てきたのでその内容をまとめる。

ちなみに、以前の理解レベルは、

ん、解像度?dpで指定しとけばいいんでしょ?アイコンサイズもとりあえずxhdpiのサイズまで用意しておけばいいんでしょ?


というレベル・・・。

因みにこの話の結論(方針)としては、

  • iOS端末をベースとした低解像度から高解像度の画像をいくつか用意する
  • 動作デバイスの解像度に応じて用意したうちの最適なものを利用する
  • 選択した画像のアスペクト比とデバイス画面のアスペクト比が合わない場合はデバイスに応じて縦に合わせるか横に合わせるかを決める

になります。


さて、ここからが本題。まず解像度という言葉であるがWikipediaによると、

画面解像度(がめんかいぞうど、Display resolutionScreen resolution)とは、慣用的にコンピュータ等のディスプレイに表示される総画素数を指す。

この、総画素数は縦と横のピクセル数を掛け合わせたものになる。
また、総画素数が高くても実際に表示するディスプレイのサイズが大きければ1インチ辺りの画素数が少なくなるため粗い表示になる。
つまり、一般的に”高解像度=美しい”という理解がされているがこの高解像度の背景には今までと同じ画面サイズだけど解像度が上がったんだよという前提がある。
具体的な例で言うとAppleが出したRetinaディスプレイがわかり易いあれは今までと物理的に同じ画面サイズであるが、1インチ辺りの画素数が二倍になりましたよ、だからこれまでよりも綺麗に見えますよという話。

ほうほう、ではiOSではどんな解像度のデバイスがあるのかなと調べてみたところ
端末ピクセルデバイスディスプレイサイズ
iPhone,3G,3GS320x480320x4803.5
iPhone4,4S640x960640x9603.5
iPhone5,5s,5c640x1136640x11364
iPhone6,6s750x1334750x13344.7
iPhone6 Plus,6s Plus1242x22081080x19205.5
iPad,2768x1024768x10249.7
iPad Mini768x1024768x10247.9
iPad 3,4,Air,Air2 1536x20481536x20489.7
iPad Mini 2,3,41536x20481536x20487.9
iPad Pro2048x27322048x273212.9
と、かなり たくさんバリエーションがあることがわかった。
ゲームアプリの背景画像を綺麗に見せたい場合は上記表の2列目の解像度と同じ画像を用意すれば良いが、それはかなり大変。

ましてやAndroidの場合も全てのデバイスの解像度の画像を用意するのはほぼ不可能なので、iOSの代表的な解像度に対応を行いその他についてはこちらのブログでも紹介しているやり方で対応をすることにする。

ひとまず今回は以上。




2015年11月15日日曜日

Cocos2d-xで使うNDKはr9dにする



Cocos2d-xでアプリ開発をしようとして次のコマンドを実行してビルドしたところ

$cocos compile -p android --android-studio


エラーが!!


Android NDK: ERROR:/Users/hoge/android-ndk-r10/sources/cxx-stl/gnu-libstdc++/Android.mk:gnustl_static: LOCAL_SRC_FILES points to a missing file

Android NDK: Check that /Users/hoge/android-ndk-r10/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/thumb/libgnustl_static.a exists or that its path is correct

なんだよファイルはあるだろと確認したところ
r10dではgccのバージョンが4.9となっておりそのためファイルが無いとエラーになっていました。

r10dでビルドする方法を調べてみたところ、公式のフォーラムでr9dを使った方が良いとの情報がありました。

おとなしくr9dを使うことにします。

2015年11月14日土曜日

AdSizeにSMART_BANNERを設定する際の注意点

Androidのアプリに広告を乗せる場合、画面の大きなタブレットと小さな画面のスマートフォンの両方に表示することを考慮しなければいけない。

通常のスマートフォンに表示する標準のバナー(幅320x高さ50)は当然スマートフォンには丁度良いがタブレットの場合はかなり小さく見えてしまう。

そんなときに嬉しいのがスマートバナーである。
スマートバナーではAdView側で現在動作している端末の画面サイズを見て適切なバナーを自動で切り替えてくれる。
そんな素晴らしい設定ではあるが一つ注意がある。

公式の注意書きにもある通り、

AdViewは表示できる十分なスペースが無い場合は何も表示されない。
従って、実装は次のようにxml上でAdViewを表示する領域のサイズを自動で切り替えられるようにすると良い。


参考URL: 超簡単!xmlファイルの変更だけでできるAndroidのタブレット対応