「弾幕の器」iOS版のバージョンアップ申請完了

弾幕の器 version Up

今回のバージョンアップでの変更点は以下の4点です。
————————————————————–
・敵の種類を20追加。
・操作時の感度を変更できるようにしました。
・BGMとSEの音量を個別設定できます。
・あたり判定のエリアを4px(半径2px)小さくしました。
————————————————————–
スクリーンショット 2015-03-29 21.06.49
 

攻略のヒント

追加する敵は少しずつ強くしていく予定です。このアプリでは真正面から戦わなくても
攻略法を見つけると簡単に倒せる敵がいます。サンプルとしては以下の戦艦「十勝」。
敵本体や砲塔にはあたり判定が無いので、弾幕の薄いところに陣取り、そこから
hit and awayです。

 

Android版早くも伸び悩む!

Android版は広告を表示しないうちから伸びが止まりました…。
ダウンロード数は1500を越えましたが半分の方がアンインストール。実数は800弱。
スクリーンショット 2015-03-29 21.06.00
ここ3日間はユーザー数が増加していません…。
スクリーンショット 2015-03-29 21.06.15
コメントをみると結構高評価なのですが何でだろう。
でも次のバージョンで広告入れたら評価は下がるのでしょうね…。
ともあれAndroid版も早々にバージョンアップできそうでうす。
 
 
 

弾幕の器:感度設定を追加

感度設定の追加

スマホの弾幕ゲームでは感度(スワイプ量を増幅する仕組み)を設定できるように
するのが普通なのだそうなので付けてみた。ついでにSEとBGMの音量調節も。
 
動画では感度を3.0(スワイプ量の3倍移動する)に設定しました。
タブレットなど大きな画面で遊ぶ場合は大きめにした方が操作しやすいと思います。

 

cocos2dではまとめてフェードできない!

このアプリではメニューや説明画面の切替はシーンを切り替えて対応していたのですが
設定画面はSpriteを利用してメニューに重ねる形にしました。
シーンの方が簡単なのですが、Spriteの方が応用が利きそうなので練習です。
 
しかし躓きました。spriteに透明度の設定が効かずフェードしないのです。しかし
getOpacityで透明度を確認すると設定した値になっておりSprite自体はきちんと
透明度が設定されているようです。
 
googleで調べてみると、cocos2d-xではSpriteやLayerに透明度やフェードを設定
しても子ノードには効かないそうです。FlashやJavaScriptと比べると扱いにくい
仕様です…。以下のリンクの通りsetCascadeOpacityEnabledを利用すれば子要素は
一緒にフェードしてくれるそうですが、孫要素以降の子孫要素には対応していない
ようなのでリンク先にあるような再帰処理のコードを書かないといけません…。
→参考;cocos2d-xで子Nodeが一緒にフェードしてくれない件

でもテキストには効かない

しかしsetCascadeOpacityEnabledが効かない要素がありました。説明画面では
自作のbitmapフォントを作成し、これを利用しているのですが、これに効きません
調べるとリッチテキストにはフェードが効かないバグがあるようです。
→参考:RichText ignores fade actions
 
上記リンク先にはv3.3で解決された様なことが書いてありますが、いまから
3.3に移行するのは大変(私が利用しているのはv3.2)なので、
今回はフェードを諦めました。
 
シーンにしておけば楽にフェードできたのに、Spriteを利用したばかりに
かえって演出の幅を狭めることに…。しかし良い勉強になりました。
 

AndroidアプリにNendの広告を

AndroidにNend

iOSへのNend広告の導入は簡単だったのですがAndroidへの導入は大変でした。
マニュアルに間違いはないのですが少々言葉足らずの気がします。
ある程度Javaに詳しいなら対処法も簡単なのでしょうがcocos2d-xを利用すると
ほとんどJavaを学ぶ必要がないので色々躓きました。なのでメモ。
 

eclipseの割り当てメモリを設定

Nendに限らずAndroidで広告を利用する場合は「google play services」という
ライブラリを導入しなければならないそうです。しかし私の環境でこれを
導入すると、ビルド時に必ずフリーズするのです。しかし、
少しプログレスバーが動くことがあるので長時間放置して様子をみたところ…
「Unable to execute dex: Java heap space」というエラーが出た!
メモリ関連のエラーっぽいので他のアプリを終了してもう一度試すと次は
「Unable to execute dex: GC overhead limit exceeded」というエラーが出た。
意味が分からないのでググってみるとこれもメモリ関係のエラー。
→参考:[エラー]Unable to execute dex: GC overhead limit exceeded
リンク先のように割り当てメモリを変更しようにもMacでは「eclipse.ini」が
見つからず混乱。しかし以下のサイトの情報により、アプリ内にバンドル
されていることを知りました。
→参考:Eclipse 4.4 Luna の日本語化 (Mac | OS X 10.9)
 
通常Macではメモリ管理はOSで行うのですが、eclipseの場合はアプリ自身で
管理しているため、このような処置が必要なようです(他のアプリを終了しても
意味が無いようです)。設定は最小メモリ使用量を512MBにして最大を1024Mに
しました(元々は最小が40MB,最大が512MBの設定だった)。
————————–
-Xms512m
-Xmx1024m
————————–
この設定に変更したらビルドできるようになりました。もしかして更新が正常に
されないのもメモリのせいかな?と思っていたのですが、相変わらず更新は
正常にされません…。
 

build_native.py実行時に失敗(fail)する場合

classesフォルダ内に記述したソースにエラーがあるとbuild_native.pyを実行時に
failとなり正常にビルドされない。なのでxcode上でビルドしてClassesフォルダ内
にエラーが出ないことを確認してから再度build_native.pyを実行時すると良い。
——————————————————————-
xcodeでNend関連のclassファイルを追加しているのでbuild_native.pyを実行
するまえにjni/Android.mkを変更しておく必要がある。
——————————————————————-
xcodeでエラーが出なくてもbuild_native.pyが失敗する場合がある。この様な
場合はプリコンパイラ(#if)などでAndroid側でしか処理しない所を疑う
——————————————————————-

AndroidManifest.xmlが2つある

AndroidManifest.xmlは「proj.android」フォルダ直下にあるだけでなく
「bin」フォルダ内にもある。とりあえず両方とも同じように修正しておく。
 

更新時の注意

私の環境ではclassesのソースを修正したらbuild_native.pyからやり直さないと
更新が反映されません。この時に削除される「libs」フォルダにはnend広告に
必要な「nendSDK-2.5.3.jar」ファイルが含まれているのでeclipseで読み込む前に
libsフォルダにnendSDK-2.5.3.jarを追加しておく。
 

AndroidにNend広告を

cocos2d-x用のマニュアル「nendCocos2d-x_Module_Guide.pdf」の補足メモ

javaパッケージの導入:p16

javaパッケージは階層も大切なのでファイルを直接導入するのではなく
netフォルダを導入しパスが「net.nend.NendModule」となるように導入する
このとき「NendInterstitialModule.java」だけがエラーになるが現時点では
エラーが出るのが正常。p18のAppActivity.javaの修正によりエラーは修正される。
スクリーンショット 2015-03-01 19.44.57
 

AppActivity.javaの修正:p18〜p21

マニュアルのソースをコピーすると大量のエラーが出るが、これは必要な
ライブラリをインポートしていないため。エラーが出ないように最低限
インポートするのは以下の通り(これをAppActivity.javaに加筆)。
—————————————————————
import net.nend.NendModule.NendInterstitialModule;
import org.cocos2dx.lib.Cocos2dxActivity;
import android.os.Bundle;
import android.content.Context;
import android.view.KeyEvent;
—————————————————————
この処理によって前述のNendInterstitialModule.javaのエラーは消える。
 
こうして何とかAndroidにもNendの広告を表示することができるように
なりました。ということでAndroidでは次に敵を追加するタイミングでiOS版と
同じように広告が出るようになります。
 
 
 

「弾幕の器」iOS版も無事リリース

iOS版もリリース

iOS版も無事リリースされました。下図のように「弾幕」で検索すると7番目に
出てきます。Androidよりも競争が少ないのでいきなり10位以内です。
というか前作の「弾幕の光」が「弾幕」での検索2位になっているのにビックリ。
これに伴いwebページも作成しました。
→参考:iPhoneWave「弾幕の器」
写真
※写真はクリックで拡大

Android版の経過報告

Android版をリリースしてから2週間がたちました。ダウンロード数はこれまでの
Android版アプリの中で最多を記録したのですが、予想外にアンインストールも
されています。jQuery問題集Lite版よりも生存率が低いです…。
uninst
しかし2週間でjQuery問題集Liteの1年の成績を越えたのは純粋に嬉しいです。
検索も新着が優先されるようで前回の25番から8番にまで上がっています。
rank

コメントを参考に

コメントに「感度」を調節できるようにして欲しいとあったので次回は「感度」を
調節できるようにしたいと思います。今は指を移動させたのと同じだけ自機が移動
しますが、指の移動距離の2倍移動したりできるようにします。
これはタブレットなど大きな画面で遊ぶ場合に便利な機能で弾幕ゲームTOPの
弾幕デス」にも搭載されている機能です。
 

前作のアンインストール率も凄いと思う

iPhoneではアンインストール数は分からないのですが、広告を表示した回数は
取得できるので大体予想できます。ズバリ「平均1日でアンインストール
されていると予測できます。なぜなら「弾幕の光」は今でも一日平均で40くらいは
インストールされています(下図-クリックで拡大)。
スクリーンショット 2015-03-06 23.27.11
しかし広告の表示数(インプレッション)は以下の様に横ばいです。
スクリーンショット 2015-03-06 23.30.52
アンインストールされなければインストール数は累積されインプレッションも
右肩上がりになるはずなのに、そうはなっていないので…。
とはいえ、4つしかステージがないシンプルすぎるコンテンツなので
それは仕方がないことと割り切っています。しかし今回の「弾幕の器」は
色々頑張って少しでもアンインストールされないように頑張ろうと思います。
 
 
前回までの難航していたAndroidでの広告表示は無事成功しました。しかし
まだ記事をまとめることができていないので来週にしたいと思います。
 
 
 

弾幕ゲーム第2弾:iOSも申請完了

戦艦「薩摩」の攻略動画

「弾幕の器」は初心者向けの弾幕ゲームですが、ちょっと難しい敵もいるので攻略方法を
紹介。戦艦「薩摩」は超接近戦で簡単に攻略することができます。戦艦は接近戦に弱い
艦艇が多いです。

Macの申請も完了

先週iOSの申請も済ませました。却下されなければ来週中にもAppStoreに掲載されると
おもいます。Macの申請も4ヶ月ぶりなので少々躓いたのでメモ。
スクリーンショット 2015-03-01 18.37.28

アーカイブできない

命名ミス:iTunesConectではアプリのIDをbullet02と登録しXcodeでは
danmaku02としていた。今後気を付けよう。
 
アイコンミス:アーカイブ時に「invalid image path〜」とエラーになった。
原因はiOSフォルダ内の「Info.plist」においてアイコンへのパスが間違っている
ため。このアイコンの設定はcocosの初期設定の画像に作成したデータを上書きした
だけで実機やシミュレータ上でも正常に表示されていたのですが「Info.plist」の
設定を確認すると拡張子pngが抜けていました。
なので拡張子pngを追加して、ついでに必要のないiPad用のアイコンを削除し
「Info.plist」で利用していないアイコンデータの項目を削除したらアーカイブを
通るようになりました。
→参考:google検索「xcode archive Invalid Image Path
 

iPhone6Plusのスクリーンショット

iPhone6Plusのスクリーンショットは実際の解像度よりも高い画像を用意しないと
行けない。実際の解像度は1920×1080しかしスクリーンショットとして用意する
のは2208×1242→参考:スクリーンショット作成の注意点
 

Androidの広告でトラブル

iOSの広告はすでに経験済みで簡単に設定することができたので、勢いに乗って
Androidの設定もしたらビルドできなかった。しかし週末を捧げることで少し
進展したので来週末にまとめようと思います。