RPGツクールMVでのiPhoneアプリ化ではまったこと

こんばんは。
あそです。

ようやくコエヲタヨリニ。のiOS版が審査を通りました!
リジェクト回数7回!!8回目の申請でようやく通りました。

koetayo_banar.png

↑iOSの方は無料なので、ぜひこちらからDLください!↑

さて、コエヲタヨリニ。iOS版もRPGツクールMVで製作しておりますが、
そこではまったことを1つ記載しておきたいと思います。

それは、アップルへ審査提出した後に発生しました。

「RPGツクールMVでデフォルトで入っているシステム画像が、
存在しなくて読み込めないエラーが発生して、アプリを起動できない」

で、2回リジェクトを食らいました。

勿論、こちらではちゃんと動作確認をしましたし、読み込めないというシステム画像も
ちゃんと入っています。

ツクールMVデフォルトのシステム画像で、1回目のリジェクトは「Balloon.png」が無いエラー
2回目は「Window.png」が無いエラーでした。

しかもこれ、7回リジェクトを食らったうちの、2回目と4回目で発生しているんです。
なぜか1回目と3回目は大丈夫でした。

ツクールデフォルトのシステム画像は、コアスクリプト等から読み込みの命令が出てるようなので、
コエヲタヨリニ。ではデフォルトの画像は使用していないので、画像そのものを無くしてしまえたら
よかったのですが、そういう訳にもいきません。

考えた結果、アップルの審査時には「ファイル名の大文字・小文字の識別が上手くいかない場合が
あるのではないか?」と結論付けました。

RPGツクールMVのデフォルトの画像素材は、大文字と小文字の英語が入っています。
これが、こちら側の環境だと大文字と小文字を識別して、ちゃんと読み込みが行われるが、
アップル側に出すと、上手く識別しない場合がある。のではないかと考えました。

なので、画像素材のファイル名を小文字だけにして、スクリプト側も小文字だけにしました。
すると、アップルからの「画像素材が読み込めないエラー」でのリジェクトも無くなりました。

RPGツクールMVでアップルへ審査を出し、同じようにシステム画像の読み込みエラーで
リジェクトされてしまったという方は一度お試しいただければ幸いです。

これが正しいかどうかの検証のしようが無いので、真相は分からないのですが……。
スポンサーサイト

脱出ゲーム コエヲタヨリニ。の攻略情報

こんばんは。
あそです。

Android版 コエヲタヨリニ。絶賛公開中です!

koetayo_banar.png


iOSは……審査で止まってます……すみません。

既にプレイいただいた方や全てのエンドをご覧いただいた方もいらっしゃり、
ありがとうございました。

コエヲタヨリニ。ですが、基本的にはヒントを見れば進めるようになっていますが、
下記にその他の攻略情報を記載しておきたいと思います。

■マルチエンドについて

コエヲタヨリニ。ですが、ゲーム中の選択肢と信頼度によってエンディングが分岐し、
合計4つのエンディングがあります。

特に
・信頼度が高いときのエンド
・信頼度が低いときのエンド

の2種類が中々、1度目のクリアでは見れないエンドになっているのではないでしょうか。
信頼度が低いときのエンドはとにかく嫌われることをしまくれば、
たどり着けるエンドなのですが、

信頼度が高いときのエンドが、難易度が高いと思います。
下記に信頼度を高めるためのヒントを記載いたします。

●なるべく最短でクリアする
間違えた選択をしない。ゲームオーバーにならない。
ということです。

●電話の相手が応答しなくなっても、声をかけ続ける
相手の携帯電話のマイクが壊れて、向こうの声は聴こえませんが、
こちら側の声は相手に伝わっています。
必死で声をかけ続けましょう。

●ステージ12でタップ回数を残してクリアする
タップ回数を残してクリアすればするほど信頼度があがります。
※ヒントを見てタップ回数を増やすと無効になります。

以上になります。

ここで、ステージ12が中々、一発でクリアできないという方のために
攻略法を記載しておきます。

ステージ12ですが、「運」ではなく「100%」クリアできるようになっています。
タップ回数ですが、1歩進むために3回までタップできるように回数設定しています。

■1度目のタップ
エリアの中央をタップする
    ↓
すると、「右上のエリア」なのか「左上のエリア」なのか
「右下のエリア」なのか「左下のエリア」なのかが分かります。

■2度目のタップ
判明したエリアの中央をタップする
    ↓
仮に「左上!」といわれた場合は「左上のエリアの中央」をタップします。
すると、正解が分かります。

■正解の場所をタップ

これの繰り返しでクリアできるようになっています。
ただ、このやり方ですと、タップ回数は残り1回でクリアとなります。
信頼度はあまりあがりません。

偶然にも1回目や2回目で正解をタップできれば、その分貯金ができますので、
タップ回数を多く残してクリアしようと思うと、運が必要になります。

以上となります。
ご参考になれば幸いです!
ぜひ、信頼度が高いときのエンドを目指していただけるとうれしいです!

RPGツクールMVでのAndroidアプリ化のこととか

こんばんは。
あそです。

ブログを書いてませんでしたね……。
アプリ化作業に追われ、ようやくコエヲタヨリニ。のAndroid版を出すことが
できました!!

koetayo_banar.png

↑ダウンロードは無料なので、ぜひぜひDLしてください↑

※iOS版は審査待ちから動いてくれません……。
 すみません、もう少々お待ちください。

さて、コエヲタヨリニ。ですが、RPGツクールMVで製作しています。
ツクール初のマルチプラットフォーム対応で、スマホにも出力可能ということで、
期待も大きかったのですが、

「RPGツクールMVではスマホアプリにするための下準備ができる」
ぐらいで考えておいた方が良いかなと思いました。

ゲーム自体はRPGツクールMVで作れますが、
そこからAndroidやiPhoneアプリにしようと思うと、結構な作業があります。

作業に当たってはcretia studio様のブログをかなり参考にさせていただきました。

http://studio.cretia.net/
↑サイトはこちら↑

特に困ったのはAndroidアプリ化についてでした。
下記に記載していきたいと思います。

私はプログラミング等の知識はほぼ無いので、
説明が間違っている場合もあるかもしれません。
その際にはご指摘等いただけると幸いです。

AndroidはOSのバージョンや機種ごと、
はたまたAndroid5.0から実装されている「AndroidシステムのWebView」によって
挙動がかなり変わってきます。

私がRPGツクールMVで製作したゲームをAndroid化するにあたって
試した手法は次の3通りです。
※ツクールのバージョンは1.3.5です。

■RPGツクールMV公式通りのやり方(Python版のCrosswalk10)
■Cordova+Crosswalk23
■Cordoba+AndroidのWebView56

以上の3通りです。
このやり方にはそれぞれメリット・デメリットがありました。

まず、
■RPGツクールMV公式通りのやり方(Python版のCrosswalk10)
ですが、
全体的に少し重たくなります。
(画像処理及びBGMやSE等)
BGMは1秒ぐらいの遅延が発生したりするので、
イベントによっては、「ここからBGMを鳴らして盛り上げるぜ!」という時に
BGMが後から流れてくる情けないことになってしまいます。

また、広告を入れたり、スマホ自体のネイティブな機能を使うのは
かなり難しそうです。
(詳しく調べてないので、できるかできないか分かりません)

ただ、動作的には少々重たいものの、安定はまだしてるほうだと思います。
というのもCrosswalkというWEBブラウザエンジンを同梱してアプリ化するので、
どのスマホでも同じ動きをしてくれる。というのがメリットだそうなので、
安定してくるのかなと思います。
AndroidOSも4.0から対応してるようです。
※ツクールMVはAndroidOS4.4から対応としています。

■Cordova+Crosswalk23
これめっちゃ苦戦しました…。
Cordovaはモバイルアプリケーションのフレームワークだそうで、
Androidアプリ化するための手法の1つのようです。

Cordova自体にWEBブラウザ機能は無いので、
スマホ本来のWEBブラウザ機能を使うか、他のWEBブラウザ機能を同梱して
アプリ化するかになります。
ここでは、Crosswalkを同梱してアプリ化しました。

が、CordovaのCrosswalkはバージョンがいくつも存在していて、
バージョンによって挙動が変わります。
最新版は23になります。

昔のバージョンで安定したのがあるようなのですが、
現在はAndroidのセキュリティの関係上、19以上のバージョンしか入れることが
できないようです。
(海外のフォーラムを漁って得た情報なので、真偽は分かりません。
 もしかしたら入れる方法があるのかもしれませんが、
 私は見つけることが出来ませんでした)

そして、このCorsswalkのバージョンによる挙動ですが、
まず19~22までのバージョンは音が鳴りません。
webaudioにバグがあるとか何とかで、まったく音が鳴ってくれません。

なので、音を使うゲームに関しては最新版の23しか入れることが
できないんですね。
18以下のバージョンでは音が鳴るようなのですが、
cordovaに蹴られて入れられませんでした。

で、この23のバージョンも問題があります。
それは、アプリがバックグラウンドにいっても音が鳴り止まないことです。

ユーザーがプレイしている間、BGMが鳴っているとします。
「ちょっと休憩しようかな」
「人が来たからちょっと中止しよう」
として、ホームボタンや電源キーを押してスマホをスリープ状態にしたとしても、
BGMが鳴り止まないのです。

これは結構致命的な問題かと思います。
どうもvisibilitychangeが発火してないくさいです。
Cordovaの機能で
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
を実装すれば、効いてくれたのですが、
まれに失敗することがあり、信頼性に欠けました。

あと、BGMの遅延がひどいです。
2~3秒ぐらいのラグはある気がします。
その他は安定していて、Android4.0等からでも動くので、
このオーディオ周りの不具合を直すことが出来れば、
一番良い選択肢なのですが……。

ちなみにCrosswalkの開発は23で終わりらしいので、
もう改善されることは無いのかもしれません。

■Cordoba+AndroidのWebView56
今回、コエヲタヨリニ。はこれを採用しました。
Cordovaでアプリ化しますが、WEBブラウザの機能は、
ユーザーのスマホに入っているもの(WebView)を使用します。

が、このWebViewですが、バージョンによって動作が変わります。
最新版は56になります。
ユーザーがWebViewをアップデートしているかどうかは、そのユーザー次第です。
それで挙動が変わってしまうのです。

色々なバージョンを試してみたのですが、
46ぐらいまでであれば、まぁまぁ大丈夫な動きをします。
※46で大体1年半ぐらい前のバージョンっぽいです。

しかし、それ以前のものになってくるとBGMの遅延や
ホーム画面に戻ってもBGMが止まらない。広告が出ない等の不具合が出てきます。

最新版の56であれば、BGMの遅延もほぼなく、安定しているのですが、
ユーザーが最新版にしてくれているとは限りません。
なので、自分のスマホのバージョンを46まで落とし、46でも動作するようにしました。

それが、ゲームを始めた瞬間に行われる「ロード」の正体です。
Webviewが56の最新版であれば、BGMの遅延はほぼ無いので、事前のロードは必要ないのですが、
WebViewが古いバージョンの人のために、ゲーム開始時にBGMをプリロードするように
しています。

が、最新版の56であれば問題ないのかというと、そうでもありませんでした。
WebViewの最新版である56では、タッチの挙動が変わったようで、
1回タッチすると、何回もタッチしたという結果が返ってきてしまいます。

RPGツクールMV上では、タッチしただけなのにメニュー画面が開いたり、
セーブしようとすると連続タッチされて、ファイル1しか選べ無かったりと、
まともにプレイできる状態ではありませんでした。

これは、コアスクリプトの
document.addEventListener('touchstart', this._onTouchStart.bind(this));
となっている箇所を
document.addEventListener('touchstart', this._onTouchStart.bind(this), {passive: false});
とすることで解決しました。
同じような症状をお持ちの方はお試しください。

たぶんchromeでプレイする場合も同じ症状が出るんじゃないでしょうか。

これで、一番安定するものを見つけることができたのですが、
この手法はAndroid5.0以上しか対応していません。
WebViewはAndroid5.0から現れたものなので、それ以前のものは
OSの中に入っているwebkitを使うようなのですが、
それがwebaudioには対応していないので、音が鳴りません。
できれば、Android4.4何かにも対応させたかったのですが、
私の技術と頭ではこれが限界でした。


まとめになりますが、
■RPGツクールMV公式通りのやり方(Python版のCrosswalk)
 一番無難な選択肢だが、広告を入れたりするのが難しい

■Cordova+Crosswalk23
 オーディオ周りの不具合が何とかできれば一番いいんだけど…

■Cordoba+AndroidのWebView
 ユーザーがWebViewを最新版の56にしてればパフォーマンス最高!
 でも、Android5.0以上しか対応できない。


ちなみに、crosswalkにするとパフォーマンスが向上するという記事が検索すると出てきますが、
昔の話のようです。

下記はBGM4曲のプリロードタイムを計測したものですが、
●cordova+crosswalk23
   18秒
●cordova+webview56
   6秒
と3倍の差が出ました。

てな感じでした。
知識も無い素人の書いたものなので、誤り等あるかもしれません。
その際にはご指摘やアドバイスをいただけるとうれしいです!

最後に、このアプリですが、トリアコンタン様のピクチャのボタン化プラグイン
大活躍してます!たぶんこのプラグインが無かったら作れてなかった……。