弾幕の器2:Hellモードを追加予定

英語版は不調

弾幕の器の英語版はリリース後の10日でiPhone版300、Android版100位しかダウンロードされていません。しかも大半が日本からのダウンロード。
なので弾幕の器2の英語版のリリースは見合わせることにしました。英語版の弾幕の器2は「兵装を無くした高難易度バージョン」になる予定でした(これは兵装の説明を英語で記述するスキルを私が持っていないため)。
 

弾幕の器2に追加

英語版はボツになりましたが、代わりに日本版に「兵装を無くした高難易度モード」を追加することにしました。来年早々の最終バージョンアップに搭載する予定です。
 
実際にテストプレイでは兵装無しでも攻略できるかを確認しています。動画では戦艦「クヤム」を兵装無しで攻略しています。弾幕の器2は初代よりも難易度が低く、上級弾幕プレイヤーの方にはもの足りない思いをさせてしまっていると思いますが、今しばらくお待ちください。

 
 
 

cocos2d-x:当たり判定のすり抜け対応

処理に余裕がありそうなので

弾幕の器2は先週までの更新でも、iPhone3GS(iOS6)相当の環境でも処理落ちが発生していません。なので当初は対応予定ではなかった「対惑星レーザーのすりぬけ対応」をしたいとおもいます。この処理は当たり判定を正確に行えるのですが、負荷が高いため避けていました。
 

すり抜ける原因は

言葉だけでは説明しにくいので図にしました。以下の通りです。
crossing1
crossing2

動画で確認


〜1:00@レーザーをすり抜ける
〜2:17@すり抜け対策をしたが爆発位置がずれる
〜最後@交点を求めて、そこで爆発するようにした
 

弾と弾のすりぬけは大変

弾の場合は移動するので対惑星レーザーと同じようには処理できない。が60fps(1/60秒)の世界では同じように扱っても問題ないようにも感じる。いずれにしろ弾幕の器では弾に対するすり抜け対応はしない予定です。
crossing3
crossing4
 

参考リンク

このような処理は方程式を解くよりもベクトル的に処理した方が軽い。なのでgoogleで「内積 外積 交差」と検索すると資料がたくさん出てくる。
→参考:google検索「内積 外積 交差
→参考:交差判定について
 
今回は爆発位置を求めるために「交点」を求める必要がありました。
→参考:交点座標

ついでにjavaScriptのサンプル。
→参考:線分交差判定
 
Unityは有料のゲームエンジンということもあり、このようなすり抜けに対する処理も持っています(でも弾幕ゲームのように処理の軽さを必要とするものにはcocos2d-xの方が適しているように思います)。
→参考:google検索「unity 当たり判定 すり抜け
 
 

更新状況

巡洋艦のデータが完成

今週は巡洋艦のデータが完成。今回の巡洋艦では時間内のクリアは比較的簡単化もしれませんが、細かい攻撃が多いためノーダメージでのクリアは難しいかもしれません。
 
最後のアンタレスは攻略しやすい砲塔から撃破していくと、回避不可能な攻撃が発動して詰んでしまいます。とはいえ分かりやすい「詰み」方なので「どの砲塔の撃破」を急がなければならないかはすぐに分かると思います。

来週は少し忙しくて時間が取れないのですが、戦艦のデータ作成を完了させたいです。
 
 
 

Admobメモ

英語圏用の広告

私が利用している広告はNendなのですが、これは外国向けではありません。なのでGoogleの提供しているAdmobを利用したのですが、いろいろ躓いたのでメモ。
AdMobのインターステイシャルは動画やサウンド付きのものがあり、広告データがNendよりも多め…。
 

iOSでの利用

参考になったのは以下のサイト。
→参考:Cocos2d-xにAdMob (インタースティシャル) を導入する方法 – iOS編
しかし1回目しか広告を表示してくれない。Nendの広告導入で似たような現象を経験していたので、同じ方法で回避することができました。ポイントはゲームを開始する時に毎回広告データをロードするようにすること(参考サイトでは起動時に1回だけのロードでした)。

基本的にxcode5には対応していない

xcodeにAdmobを組み込むと「GADInterstitial.h」でエラーが発生する。どうやらマクロが設定されていないのが原因。調べるとxcode5には対応していないようで、以下のサイトに回避方法が。
→参考:NS_DESIGNATED_INITIALIZER expected : (colon)

具体的にはGADInterstitial.hの上部で以下の処理を追加する。
—————-
#ifndef NS_DESIGNATED_INITIALIZER
#if __has_attribute(objc_designated_initializer)
#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
#else
#define NS_DESIGNATED_INITIALIZER
#endif
#endif
—————-
サイトには他にも以下の1行が記載されていたけれど、これは利用しなくても機能したので無視してみました。
—————-
– (instancetype)initWithDelegate:(id )delegate __attribute__((objc_designated_initializer));
—————-
 
 

Android版

Android版で参考になったのは以下のサイト。
→参考:Cocos2d-xにAdMob (インタースティシャル) を導入する方法 – Android編
 
参考サイトではiOS同様に、アプリ起動時に1回のみ広告データをロードしてるのですが、Android版では問題なくゲーム終了時に広告を表示してくれました。しかし異様にロード時間が長い…。
 

読込の工夫

読込が長いのはgoogle公認らしいです。以下のサイトで対策を紹介していました。
→参考:google「インタースティシャル広告の導入における推奨事項
あと以下のページもメモ。
→参考:google「インタースティシャル広告
 

Android 4.0以上が基本

AndroidへのAdMobを導入する場合はAndroidManifest.xmlを編集する必要があるのですがandroid:configChangesの設定でエラーが発生してしまいます。調べるとandroid:configChangesのscreenSizeとsmallestScreenSizeはAndroid4以降にしか対応しておらず、Android3以下をターゲットにしているとエラーになるそうです。
しかしターゲットをAndroid4以降に設定してもエラーが消えない…。さらに調べるとcocos2d-xではproject.propertiesの設定も変更しないとダメなようです。
→参考:AndroidでAdmobを使用してエラーが出る場合の対処法
 
 

感想

Nend広告はcocos2d-x用のsdkを用意されているため広告に関する処理をまとめることができるのですがsdkの導入が少し面倒です。AdmobはiOSとAndroidを個別に対応しないといけないのですが、sdkの導入は楽です。
 
 
 

今週の更新状況

Appleの審査が早かった

今回のverUpをアップルに申請したのが10/31日。申請を通過したのが11/5日。これまで審査の通過には10日くらい必要だったのが、今回は半分の5日。申請しているアプリが少なかったのでしょうか?
 

駆逐艦のデータ作成

今週は英語版の弾幕の器のデータを調整していたので、駆逐艦分のデータしか作成できませんでした。

 
 
 

弾幕の器2:Android版のverUp

何も無いところで転ぶ

Android版の作成はいつも何かしらのトラブルに遭う。前回から特に何も変更していないのに。今回出たのは「Serializing CDT Project settings.. 」のエラー
 
ググると以下のサイトがヒントになりそうですが、コメントにてトラブルも報告されている。
→参考:Cocos2d-xでのアプリ開発中に発生するEclipseでのエラー解決方法

なので問題の「.cproject」ファイルは削除せずに「.cproject2」と名前変更してビルドし直しました。結果としてはエラーを回避できました。コメントにあるような問題も発生しませんでした。
 
しかし新しい「.cproject」は生成されませんでした。参考サイトによるとこれはプロパティの「C/C++ Build」の環境設定のようなのですが、無くても大丈夫なものなのかしら?。
あと実機の認識が解除されていたのですが、usbを指し直したら認識されました。
 
実機にて動作確認をしたら問題は特になかったのでGoogleにアップしました。
明日の朝くらいにはリリースされると思います。

 
 
 

弾幕の器2の更新状況

ぎっくり腰

10年前の発症時と異なり現在は自宅事務所で通勤が無く、生活の中に階段の上り下り(10年前は2階に住んでいたので階段が辛かった)もないため経過は順調だった…ので油断して入浴時に足先を洗う時「ぎっくり」してしまった。そして翌日、腰痛で布団から起き上がるのに10分を要する状態(腰を曲げずに起き上がるのは難しい)まで悪化…。
幸い10年前に利用していたベッドが残っているので翌日からベッドを利用することに。段差があるので布団よりも起き上がりやすい。
そういえば10年前も痛みが引いた後も腰に負担をかけないように2,3ヶ月は慎重に暮らした記憶がある。
 

AppleにverUp申請

そんなこんなで仕事机から容易に移動できない状況だったため、予定よりも早くverUp処理が完了し、土曜日にAppleに申請を出しました。リジェクトされなければ11月の9日か10日くらいにはリリースできると思い­ます。Androidは11/6までにはリリースできると思います。
スクリーンショット 2015-11-01 23.58.30
 

積層砲塔の体力ゲージ

予定よりも早く追加データが完成したので、予定になかった「積層砲塔の体力ゲージ問題」解決しました。動画の通り砲塔が重なっていると体力ゲージが分かれて表示されるようになっています。