「弾幕の器」の経過など

攻略動画

iOSのバージョンアップはまだ審査待ちです。いつも通りなら月曜くらいに承認される
と思います。今回の追加では少し難しい敵がいるので攻略動画を幾つかyoutubeにアップ
しました(以下は巡洋艦「潮凪」)。
youtubeで「弾幕の器 攻略」で検索すると動画が見つかると思います。
自力で攻略方法を見つけたい方はスルーしてください。

 

iOS版リリースから約1ヶ月が経過

日本ではAndroidよりもiOSのユーザー数のほうが多いそうなので、弾幕の器も
iOS版の方がAndroid版よりも多くダウンロードされました。
予想よりも差は大きく1日あたりのダウンロード数で約2倍の差があります。
—————————————————————
・iOS版:3/4〜4/4で2,480(1日あたり約80)
スクリーンショット 2015-04-05 2.33.12
・Android版:2/22〜4/4で1,784(1日あたり約44)
スクリーンショット 2015-04-05 2.42.46
 

広告の表示回数

インストール数は上記のように大きな差があるのですが、広告の表示回数は
Android版をリリースしてから2倍くらいになっています。つまり
Android版のユーザーはiOS版のユーザーよりもたくさん遊んでいることになります。
※iOS版でのアンインストール数は分からないので正確な比較はできないのですが…
スクリーンショット 2015-04-05 2.50.48
このことから(ゲームの種類にもよると思いますが)Android版はダウンロード数が
少なくても疎かにしてはいけないと言えます。
 
 

広告と評価

Android版の広告表示にあたり、予想ほど評価は下がりませんでした。しかし
これは広告を表示する前にすでにユーザー数が頭打ちになっていたためで
初めから広告を出していたら悲惨な結果になっていたと思います。
androidAd
iOS版では最初から広告を表示しているものの評価は低くありません。
これはユーザーが広告に寛容なのと、前作の「弾幕の光」で慣れてしまっている
部分があるのだと思います。
 

今後の広告表示

そもそも私は「ゲームがある程度すすんでから広告を出す」ことを考えていました。
しかし、このスタンスで「脳トレ15パズル」がリジェクトされたので、面倒になって
「常に広告を表示する」ようにしました。
→参考:脳トレ15パズル – リジェクトされる
 
この問題は審査員にきちんと説明すれば承認して貰えると思うので次回のアプリでは
広告について以下の様な仕様にしようと思います(自分用のメモ)。
———————————————————-
●初期のステージでは「無条件に広告を表示しない」
●ステージが進んでからは広告を表示するが以下の様な配慮をする
 ・広告を表示するステージに初めて来た時に「広告の選択」をできるように
  ダイアログをだす。選択肢は以下の2つ。
  →ゲーム中にバナー広告を表示する
  →ゲーム終了後にインターステイシャル広告を表示する
 ・上記ダイアログには「アプリの継続的なバージョンアップと新作の制作のため
  広告表示にご理解ください」的なお願いを記述する。
———————————————————-
広告を多く出しても評価が下がらないような手法を色々模索していこうと思います。
 
 

次回の更新はiOSもGW前に

次回の更新(敵を20追加)はゴールデンウィーク前に行いたいと思います。
iOSの方にもそのスケジュールで届けるためには4/20位までには申請しないと
いけないので早めに作業を進めようと思います。
 
 
 

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

感度設定の追加

スマホの弾幕ゲームでは感度(スワイプ量を増幅する仕組み)を設定できるように
するのが普通なのだそうなので付けてみた。ついでに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版と
同じように広告が出るようになります。
 
 
 

弾幕ゲーム第2弾:Android版申請してみた

ver1.0の敵は40種類

機能的には全て完成(最初のリリースでは敵の種類は40、最終的には100)したので
GooglePlayに申請しました。今回は時間が足らず広告を追加できなかったのですが
次回更新時に広告を追加する予定です。
スマホのGooglePlayで「弾幕」と検索すると25番目くらいに出てきます。
danmaku02store
このゲームは初心者向けの弾幕ゲームですが、幾つか難しい敵がいるので
ちょっと攻略方を。今回のリリースの中で最難関の1つ巡洋艦/波型/藤波です。
この敵は高速で移動してたくさんの弾を出すのですが、プレイヤー機を避けて
弾を出すので動かないだけで勝つことができたりします。

更新の度に「build_native.py」

以前の記事の通り、私の環境で何故か修正が反映されません。前回の調査で
binフォルダを削除すれば更新が反映されるのを確認したのですが、今回のような
複雑なアプリではエラーになってしまいました。ですがbuild_native.pyなどで
追加される5つのフォルダ全てを削除しbuild_native.pyからやり直すとエラーも無く
更新が反映されました。プログラム自体はxcodeの完成させてあり、この操作は
Androidアプリを作成する時だけなので意外と面倒は少なかったです。
  

Androidでtweet

広告は間に合いませんでしたが、tweetの機能は間に合いました。
tweet機能はiOSよりもAndroidのほうが簡単でした。参考にしたのは以下のサイト。
→参考:Cocos2d-x 3.0からツイートする
→参考:cocos2d-xでiOSとAndroidの処理を分ける
→参考:上記の続き:cocos2d-xでツイート機能を実装
一番上のを参考にしたのですが「AppActivity.java」のソースでエラーが
出てしまうので、その部分を最後の参考リンクの処理に書き換えて対応しました。
 
次はiOS側でtweetと広告を設定してAppleの方に申請を出したいと思います。
 
 
 

再挑戦:cocos2d-xでandroid

androidの問題はまとまった時間を使わないと解決できなさそうなので
先週末と今週末を利用して対応しました。なんとかなりそうです。 
 

ワークスペースを変更

eclipseは最新のlunaにきめて、設定を再度見直しました。が…やはりエラーに。
半年の間に新たな情報がネットにないか探したところ、workspace内のメタデータ
が壊れている可能性があるから、workspaceを変更すればエラーを回避できる
可能性があるとの記事を発見!
実際にworkspaceを変更したらエラーを回避してビルドに成功!
 
しかしアプリは起動せず強制終了に。しかし以前のブログ記事にあった
「libcocos2dx」のリンク設定の変更で解決。でもって
自分用にeclipseのプロジェクト作成の流れをメモ。
———————————————————–
・cocos2dxでプロジェクトを作成
・proj.android内のbuild_native.pyを実行してビルドに必要なファイルを生成
・eclipseに読込
・読み込んだプロジェクトの「libcocos2dx」のリンク切れを修正
———————————————————–
上記でアプリをビルドして実機上で機能するアプリが作成できる。
 
 

新たな問題:修正が反映されない

しかしcppファイルを変更しても、アプリに反映されないという別の問題に遭遇。
「Hello World」の文字すら変わらない…。メニューから「clean」を実行しても
改善されない。ネットで探しても同じ問題に遭遇している人はいなさそう…。
 
なので自力で問題点を探ってみた。 
—————————————————-
・ビルドしたアプリが上書きされずに残っているのでは?
・build_native.pyを実行する前に変更しておくとok
・build_native.pyを実行すると作成されるファイルを確認
—————————————————-
まずプロジェクトを作成した直後の「proj.android」内の構成は以下の通り
スクリーンショット 2015-01-28 0.14.31
でもって「build_native.py」を実行すると以下3つのフォルダが追加される。
スクリーンショット 2015-01-28 0.16.50
このうち重要なのはたぶん「asset」フォルダ。ここにiOS側のプロジェクトから
画像素材などがコピーされてくる(てかiOSと共通の場所ではないことにビックリ)。
 
でもって、さらにビルドするとさらに2つフォルダが追加されるのを発見
スクリーンショット 2015-01-28 0.18.30
上記のうち「bin」フォルダ内にアプリっぽいのがあるので
これを削除してからビルトすると反映されている!
ネット上には発見できない問題と解決法なのでちょっと不安だけど解決できそう。
 
本来は諸ファイルはビルドの際に更新されるようです。以下のサイトの21ページ
ではassetフォルダ内のファイルがビルド時に更新されると記載されているし…
私の環境だけの問題なのだろうか?
→参考:Cocos2d-x 3.2 Eclipseを利用したAndroid開発環境の構築
 

まずはゲームの流れを完成させよう

問題解決の糸口が見つかったけれど、とりあえずメニューからゲームの流れを
完成させてからAndroidへの移植作業に入ろうと思う。とはいえ、今回のアプリで
iOSとAndroidで分けて書くのはtwitterの起動部分だけだと思うので、それほど
大変ではなさそう。
 
 
 

アプリ開発の年間収支

必要経費すら回収できず

AppleのdeveloperProgramに加入してから1年が経過したので収支を確認。
人件費を抜いても約8千円の赤字という結果に…。

経費:45,600円

内訳は以下の通り。別件で購入していたMac本体やAndroid2.3検証機、iPodTouchは含まず
—————————————————————
・Nexus7(Android4.4実機検証用)-28,700円
・Apple developer Program 年会費-8,400円
・google developer Program 登録費-2,500円
・itunesカード(開発の参考にアプリを購入したいので)-3,000円
・google playカード(開発の参考にアプリを購入したいので)-3,000円
—————————————————————

利益:38,066円

内訳は以下の通り。
—————————————————————
・jQuery問題集(iOS)-9,870円
・jQuery問題集(Android)-1,890円
・広告収入-26,306円
—————————————————————
 

今年は

1年を振り返りアプリで利益を出すことは難しいと感じました。
しかし作成してみたいアプリ(ゲーム)のネタは、まだ1年分くらい残っているので
のほほんと続けていきたいと思います。本年もよろしくお願いいたします。
 
 
 

シミュレーションの続きとリワード広告に関するメモ

シミュレーションゲームの経過報告

切りの良いところまで終わったので、動画をyoutubeにアップしてページを更新しました。
来週は「弾幕系ゲーム」の新規作成に入りたいと思います。
→参考:jQuery入門講座-サンプル「番外編」

 
 

リワード広告の規制が緩和?

6月くらいにAppleがアプリのリワード広告の取締を厳しくしたのですが
それが緩和されているような記事を見つけたのでメモ。
→参考:GameCast様「Apple、リワード広告への審査強化を撤回。
 

リワード広告のメリット

私が利用しているインターステイシャル広告は「弾幕の光」のように
サイクルの早い(プレイ時間の短い)アプリでは有利なのですが、
現在作成している「ファミコンウォーズ系」のようなアプリには不向きです。
なので、リワード広告の報酬として新しいマップや兵器が追加されるような
仕組みにしたいのです。
 

リワード広告を扱っている会社

iOSのタワーディフェンス系のアプリで有名な「ディフェンスウィッチーズ
では3つのリワード広告があるのですが会社が分かったのは以下の2つ。
→参考:AppDriver
→参考:Tapjoy
tapjoyは本社がアメリカなので英語圏の市場にも強いそうです。
→参考:人気アプリ「にゃんこ大戦争」を支える「Tapjoy」とは
 

アプリ:うにょ占い

うにょ占い

先週申請していた「うにょ占い」が審査を通って無事アップされました。
→app store:うにょ占い
 

Android版も

久しぶりのAndroid版作成なので時間がかかるかと思いましたが、サクッとできたので
こちらもアップしました。「7ならべ占い」も合わせて作成しました。
→google play:うにょ占い
→google play:7ならべ占い
 

googleでギャンブル扱い…

「7ならべ占い」と「うにょ占い」はgoogleで「ギャンブルのテーマが含まれる」として
コンテンツレーティングが変更されました…。全然ギャンブルは関係ないのですが
デザインがポーカーぽかったのですかね?
とはいえ下から2番目のレーティングですし、他のカードゲーム系のアプリも同じ
レーティングになっているので「まぁいっか」という感じです。
ちなみに文面は以下の様な感じ。
———————————————————————-
Google Play チームによる定期的な審査の結果、アプリ 7ならべ占い(パッケージ ID jp.designdrill.nana)の最低コンテンツ レベルが Low Maturity (2) に変更されましたのでお知らせいたします。

コンテンツ レベルの変更の理由: Google Play コンテンツ レーティング ポリシーへの違反

定期的な審査の結果、Google ではアプリにギャンブルのテーマが含まれていると判断しました。アプリのコンテンツ レーティングはこのコンテンツを反映するように変更されました。

コンテンツ レーティングがこれ以上変更された場合は、違反しているそれ以外のアプリの削除を含め、管理上の措置をとらせていただく場合があります。

違反はすべて追跡されます。深刻な違反があった場合や、違反を繰り返した場合は、それがいかなる性質の違反であってもデベロッパー アカウントが停止され調査が行われます。また、関連する Google アカウントが停止される場合もあります。

Google Play ユーザーに正確なコンテンツ レーティング情報を提供できるよう、ご協力のほどよろしくお願いいたします。

Google Play チーム
———————————————————————-
以上
さて、来月からはcocos2d-xの勉強に入るぞ!
 
 
 

cocos2d-xの本を買ってみた

ゲームが作りたい

クイズやパズルなど動きが少ないものはjQueryでも作成できるのですが、もっとアクション性
のあるゲームを作ってみたくなりました。
ゲーム作成用のフレームワークはUnity(3Dゲーム)とcocos2d(2Dゲーム)が有名なのよう
ですが、私が作成したいのは2Dゲームなのでcocos2dを学ぼうと思います。
ということで以下の2冊をアマゾンにて購入。
cocos
→AMAZONリンク:cocos2d-xによるiPhone/Androidアプリプログラミングガイド
→AMAZONリンク:cocos2d-x入門
なんだかAMAZONレビューが微妙な感じなのですが、AMAZONの内容紹介が丁寧だったので
何となく購入。まだ1ページも読んでいません。
現在はjQueryでウノっぽいゲームを作っているので、それが完成してからcocos2dの勉強を
始めたいと思います。
 
 

7ならべ占い

先週、アプリの申請をした「七並べ占い」が無事審査を通りました。下の画像をクリック
するとアプリの説明ページが開きます。
スクリーンショット 2014-07-13 0.43.37
 
しかしながら面白くありません…。実は占いのモチーフをUNOにしようと考えていたのです
が、UNOはルールが7ならべよりも複雑で思考ルーチンが大変なため、以前作成したことの
ある7ならべに日和ってしまったのです。
カードのデザインがUNOっぽいのは、そういう経緯があったからです。
 
あと以前の記事で、ドロップシャドーをかけると画像が歪むと書きましたが
cssのfilterではなくbox-shadowにしたら治りました。box-shadowでは透明pngの
形ではなく矩形にしかエフェクトがかからないのですが…。
よく見ると角丸の部分にエフェクトがかかっていないことが確認できます。
 
 

でもUNOもできたよ

しかし「7ならべ」は面白くないし、逃げていては技術も習得できないのでUNOっぽいゲーム
も作成します。というかゲームの流れは概ね完成しました。
でもって、テストプレイをしながら思ったわけです。UNOって友達とワイワイ楽しむから
面白いのであって、コンピュータ相手に遊んでも、ちっとも面白くないと…。
 
ということで、cocos2dで良くあるスマホゲーム(カジュアルゲームというジャンル
らしい)を作りたいなと、思ったわけです。
 
 
 

2048リリース完了

iOS版がやっと受け入れて貰えました。
CSSアニメを利用しているので古い機種でもアニメはスムーズだと思います。でも、
パネル絵が切り替わる部分(背景位置の移動)や新しいパネルの追加(showメソッド)
はcssアニメではないので、その部分はすこし重いかも。比較してCSSアニメの軽さを確認
してみてください。無料です。

ゲームの遊び方は説明サイトを見てください。
→SmartPhoneApp:練金パズル2048