こんにちは。
大虎工房です。
今回は、1.0.3で発生した不具合の原因というか仕組みを書いていこうと思います。
不具合をこんなに詳細に書いていいのかどうか、ちょっと悩んだのですが、個人開発だしやりたいように記事にすることにしました。
1.全国COM戦をやってるとカットインでタイマーが停止してしまう
2.全国マッチングコンプリートしてからマッチングが完了すると、自分とマッチングしてしまう
3.全国マッチング完了後、ゲーム終了時にシーケンスが進まない
この3つでした。
なかなか多かったですねorz ごめんなさい。
1.(タイマー停止)に関しては、全国で裏マッチしていて、マッチング人数が増えたときに対処出来てなかったのが原因です。
カットイン処理はすべてのプレイヤの再開リクエストを受信することで、画面のポーズが解除されるという仕様になっています。
ルームマッチなどで、対人マッチングしている場合は上図のようなやりとりで、正常に解除される仕組みになっていました。
次に全国対戦で裏でマッチングしているときのCOM戦です。
この場合も再開リクエストがルーム人数とリクエストの数が一致するので、正常にタイマーが解除されます。
裏マッチで別のプレイヤとマッチングしている場合でも同様に上図のようにルームの人数は2人になり、それぞれのプレイヤがGameの内部で再開リクエストをやり取りします。
しかし、対人マッチしている時と違い、再開リクエストが通信されていません。
なので、来るはずのない再開リクエストを延々と待ち続けてタイマーが停止するというのが原因でした。
これを解決するために、COM戦では再開リクエストを待つ人数を強制1人にしました。
COM戦なので、ルームに何人居るかは問題ではなく、かならずローカルから一つ再開リクエストが通知されれば正常動作するように変更しました。
これで、正常に裏マッチングができるようになりました。
2.(ドッペルゲンガー)に関しては、全国で裏マッチ処理はマッチングタイムアウト処理を設けていたが、実はタイムアウト以降もマッチングが受け付けられていたのが原因でした。
タイムアウト以降にマッチングした場合、最初にCOM戦をプレイしていた人(以下Aと呼称する)は1.のようにタイマーが停止してしまいます。
そして、新しくマッチングしたプレイヤ(以下Bと呼称する)は一定時間後にマッチングコンプリートの表示がされます。
しかしAのマッチング時間は切れているため、マッチング画面へ画面遷移せず、タイマーが停止したゲーム画面になっています。
一方BはAのマッチング準備を待つべく、延々とマッチング画面で待機します。
この時、Aがタイマー停止によってゲーム進行不可能と判断し、アプリを終了すると、Bのマッチングは進みます。
ただし、本来入るはずだったプレイヤの枠を埋めるため、自分自身をマッチング対象としてしまいます。
これがドッペルゲンガーの正体です。
こちらに関しては、マッチング時間を適切に設定すると同時に、マッチング待機時間にもタイムアウト設定を設け、またマッチング人数が減ってしまったときにはマッチング不成立の画面を表示するように変更しました。
ドッペルゲンガーが発生した場合、ゲーム終了フラグを受け取れず進行不能になる
また、対人マッチが発生していても、マッチング待機中にプレイヤが抜けた場合も同様に進行不能になります。
これはドッペル発生によりゲーム終了フラグの数がマッチング人数と合わなくて進行しないという不具合です。
ゲーム中の切断であればCOMに切り替わるのですが、それ以前の切断だとこのようになります。
こちらの対応策はマッチング待機中にプレイ人数が減った場合は、マッチング不成立として扱うように変更しました。
で、今回のVerUpに関して、なぜチェック漏れしてたかというと…
そもそもマッチング台数を確保できてなかったこと。
そして、マッチングタイムアウト以降の動作チェックがシナリオから抜け落ちていたため
と、いうのが原因でした…orz
総じて、通しプレイが不足していたため、テストケースのシナリオがスコーンと抜けてしまってたため発生した問題でした。
それで、今後どうしていこうか考えるのですが、ある程度通しプレイに時間を割くとして、それ以上にプログラムの変更によるテストシナリオをイメージできるようにすることで、対応していくようにしようと思っています。
そんな感じで、せっかくのバージョンアップで、盛り上がっていこうというタイミングでの不具合ということで、ご迷惑をおかけしてしまいました。
それでも着いてきてくれたユーザさんには感謝しかありません。
今後もアプリをよりよくしていくために精進していきますので、どうか白の少女をよろしくお願いします。
それでは~
おまけ(初見さん向け)
白の少女とは
ここからWebサイトに飛べます。
ダウンロード
PC版