Windows 10 Mobile のアプリケーションは起動に20秒以上かかると起動せずに落ちる

Windows 10 Mobile のアプリケーションで起動時にファイル操作を「同期処理」であれこれやっていて結構時間がかかっているのですが、Visual Studio からデバッグ実行している限りでは問題なく動作し、W10M から単体でアプリケーションを起動すると、起動が完了する前に落ちてしまいます。

最初この現象の理由がわからずデバッグ実行での確認もできないので悩んでいました。例外をキャッチしてログを出すようにもしていたのですが、何でもないような処理のところでプログラムが落ち、例外もまったく発生しませんでした。

しかし、何回かやっているうちに気づいたのですが、ログの出力時間を確認したら最初のログの時間と落ちるタイミングの時間の差が20秒であることに気づきました。試しに Task.Delay.Wait で待機させるようにしたらもっと前の処理で落ちることを確認できました。

Windiws Phone 7 か 8 あたりでも、処理に時間がかかって UI? に処理を戻さないとアプリケーションが落ちるという話は聞いたことがあるのですが、このことをしばらく思い出せなくて盲点でした。デバッグ実行では落ちないし、例外も発生しないので気を付けなければいけませんね。

余談ですが、ファイルアクセス処理はファイルがあるかどうかのチェックだけでも1回あたり1秒ぐらいかかるので非同期処理のほうがいいですね。


Windows 10 & Windows 10 Mobile 向けのゲーム作ります

※あれ? 前にも同じようなこと書いてなかったけ? と思われた方もいるかもしれませんが、書いたかどうかも忘れてしまったぐらい時間がたってしまったのでとりあえず書きます。

最近日本でも Windows 10 Mobile の端末が増えてきたので、それに乗っかる形でなんかゲームでも作ってみようかと思います。

実は Windows 10 Mobile で動くゲームは、以前 Windows 8 向けのゲーム「エイッとウォーズ」なるものを作った後、Windows Phone に移植しているので、完全に初アプリ(ゲーム)というわけではありません。

ただ、エイッとウォーズはもともと Windows 8 のアプリコンテスト向けに作っていたものだし、実質3日ぐらいで作ったものなので自信作、といえるものではありません。それに Windows タブレット向けに作ったものなので、Windows Phone での操作には若干難があります (まあ、一応普通にクリアする分にプレイはできますが)。なので今回はもう少し作りこみをしたレベルでのゲームを作ろうかと思っています。

で、ゲームの内容とかタイトルが気になる方もいるかもしれませんが、実はほとんど決まっていません。市販のゲームの告知とかだと、大抵はゲームタイトルやロゴ、場合によっては開発中イメージなんかが出てくると思いますが、今回作ろうとしているゲームは、考えている内容が本当に問題なく作れるかどうかの調査の段階から始めているので、そこをクリアしないとタイトルとか決めてもしょうがないかなー、と考えてました。

一応ふわっとした感じではイメージしているのですが、まだきちんとまとめていないので、タイトルとかイメージはおいおい紹介していきたいと思います。

現在プログラムの構築のほうは実は完全に0というわけではなく、いろいろテストしながら作りこんでたりしてます。

ブログを見ていただいている方なら知っていると思いますが、ゲーム制作の内容を動画で撮ってニコニコ動画のほうにアップしています。まあこの動画は他の人に見せるため、というよりかは備忘録的な感じで作っているので内容はぐだぐだなのですが、それでも見てみたいという方がいればご覧ください。現在25回分は上げていたかと思います。

ゲームのデモも、開発中の段階ですが、ホームページのほうに上げたりしています。こちらも段階的に上げていくつもりです。(Silverlight 版です)

もともと Windows 10 や Mobile 向けに作っていたわけではないので、タッチ向けにどうもっていくか、子画面のレイアウトとかどうするか、など課題はまだまだ多いです。

ある程度検証とかが終わり動くものができてきたら、タイトルとかコンセプトとか作りこんでいく予定です。コンセプトなんかは本来一番最初に考えるべきものなんですが、ゲーム内容を発表した後にプログラム作ってみたら実はできませんでした時間が足りませんでした、なんてことにもなりかねないので(実際なる)、そこらへんはできるものからやっていきます。個人開発だし特に周りに影響することもないですからね。

今後の方針なのですが、ゲーム制作動画のほうはあまり更新しない予定です。何個か機能ができたらそれらを簡単に紹介していくような動画になると思います。

代わりに進捗のほうをブログのほうで週一ぐらいで書いていこうかなと思っています。文章を作るのに時間がかかってゲーム制作が遅れるのもあれなので、キャプチャ1~2枚と文章をちょろっとというような感じになると思います。

Twitter のほうも動画紹介ぐらいにしか使っていなかったので、こちらでもちょくちょく書いていこうかなと思ってます。

ということで一応こんな感じでゲーム制作をやっていくつもりです。またなんか決まったらブログに書いていきます。


Windows Phone 用ゲーム「エイッとウォーズ」をKATANA01で動かしてみた

初の Windows 10 Mobile 端末として KATANA01 を2週間ぐらい前に購入しました。現在スマフォは MADOSMA を使っているのですが、唯一の Windows Phone 8.1 としてこのまま残す予定なので、実際に Windows 10 Mobile でテストする際は KATANA01 を使っていくつもりです。

Twitter でもちょろっと post しましたが、KATANA01 は Windows 10 Mobile 端末の中でも最低限スペックであるため(一応国内では)、これで問題なくアプリやゲームを動かせればほかの端末でのパフォーマンスチェックはすべてクリアできるので、開発にとってはかなり役立ってくれるはずです。(もちろん端末固有の機能があれば別途調査はしないといけないですが)

で、せっかく Windows 10 Mobile を入手したので、なんか動かしたいなと思ったのですが、そういえば以前に、Windows 8.1 向けに作ったゲーム「エイッとウォーズ」を Windows Phone 8.1 に移植して公開したものがあったのでためしに動かしてみました。

KATANA01 をほぼ購入状態のままエイッとウォーズをインストールして起動させてみたのですが、なぜかタッチが反応せず、ゲームが進めない状態に。ほかのアプリは動いいているので、もしや MonoGame が正常に動かないんじゃと思い、ためしに Windows 8.1 UAP を新規で作成したプロジェクトに Mouse や Touch の制御を追加して実行してみたら案の定反応せず。

割と困っていたのですが、そういえば先日 Windows 10 Mobile のアップデートが出ていたので、一応更新をかけて再起動してみました。そうしたらなぜか正常に動かすことができました。

DSC01800_2

原因が単に OS の再起動だけだったのか、電話の更新によるものだったのかはわかりませんが、とりあえずめでたしです。もしエイッとウォーズをダウンロードして動かない方がいらっしゃれば電話の更新をしてみてください。

で、実際に MonoGame Windows 8.1 UAP で作られたゲームなのですが、問題なく動作しています。とりあえず最初のステージから最終ステージまで一気に遊んで確認しました。パフォーマンスも特に問題なく。

DSC01803_2

以前にブログで MADOSMA にインストールして試してみたとき、タッチしまくると画面がフリーズするという現象がありましたが、KATANA01 ではその現象は再現しませんでした。もしかしたら Windows 01 Mobile の影響かもしれません。

とりあえず、MonoGame Windows 8.1 UAP のプロジェクトなら Windows 10 や Windows 10 Mobile でも動かせることが分かったので、ひとまず安心して制作を行うことができます。

(相変わらず Windows 10 UAP のプロジェクトのテンプレートがバージョン不一致で作れないので MonoGame プロジェクトのメンバーの方々なんとかお願いします)