はじめに
初めまして!
AIQVE ONE Advent Calender 16日目を担当します@bluekumaと申します。
この記事では、当たり判定のテストの必要性について簡単な仕組みを元にざっくり解説していきたいと思います。
当たり判定と見た目は関係性がない
当たり判定のテストと言われると、
壁や建物などに向かって走る!
全てのボタンとその周囲をタップする!
など沢山あります、だけどそのほとんどは目で見れば そこに壁がある、建物がある、ボタンがある
などそこが判定のある範囲だとわかるのに、わざわざ操作してテストすることに意味があるのか?といった疑問を持つ声も少なからずあるようです。
しかし、実際に「必要なテスト」です!
その理由は、「当たり判定と見た目は関係性がない」からです。
当たり判定の仕組み
どうして関係が無いのかをゲームエディターの「Unity」で作成するゲームを元に見てみます。
下に当たり判定のバグが発生した状態のボタンを用意しました。
バグ内容は「タップ操作に対して、見た目より明らかにボタンの反応する範囲(当たり判定)が広い」ことです
では、このButtonオブジェクトの情報をUnityで見てみます。
右上の赤枠内が見た目の設定を行える場所
右下の赤枠内が当たり判定の設定を行える場所
になっておりそれぞれ設定できる内容が別になっています。
これが、見た目と当たり判定は関係性が無い理由です。
この右下の設定値次第で、見た目より大きくすることも小さくすることもできます。
また、バージョンなど環境によりますがUnity上でも当たり判定の範囲は数値でしか確認できず、見た目ではわかりません
ゲーム上でも通常、当たり判定は見えないので、実際に操作を行って当たり判定を確かめるというテストが必要になります。
他にも、当たり判定の範囲だけでなく
そもそもの当たり判定のあるなしもUnityでは、クリック1回で切り替えることができます
右下のチェックボックスがそれにあたり、この何気ない場所にある小さなチェックのあるなしで当たり判定を簡単につけたり消したりできます。
開発者の誤操作でこのチェックボックスが外れてしまうとボタンはタップしても反応しなくなってしまいます、、、
そして、これらの設定はボタンや建物など一つ一つに設定がされており、
一つが大丈夫だから、他も大丈夫とは限らないので、あらゆるボタンや建物など個々のテストが必要です。
開発者は自分で確認をしていないのか?
では、バグがあった際は、開発者は自分で確認(テスト)していないのか?
といわれるとそうではありません!
Unityの場合、Unityプレイヤーというすぐに動作をチェックできる機能があり、
開発者はそこで確認を行っていて、実装した・バグを修正した、と判断しているケースが多いです。
しかし、あくまでPC端末のUnityプレイヤーという環境上での動作であり、実機(スマホやゲーム機)で実行している訳ではないため、バグによっては確認しきれず残ってしまうことがあります。
PCディスプレイの大きさとマウスで操作する場合、違和感はないが
スマホだと画面が小さく正確なタップも難しいので違和感が大きくなるなどです。
こういったUnityプレイヤーとスマホでの動作の違いが開発者の時点でバグに気づけない理由でもあります。
他にもバグ(エラー)によっては、Unityでは発生しても処理が続行されるが、スマホだと処理が続行されずに止まってしまい進行不能になるといったものがあったりと、、、
バグの原因はとても複雑で数えきれないほどあり、今回の例はかなり初歩的なものですが、テストを行う理由としては充分だと思っています。
なので、
このバグはプレイすればすぐにわかるのになぜ?
バグを修正したと言われたのに治っていない!
と思うことがあるかもしれませんが、開発者は嘘をついているわけではないですし、全く確認をしていない事もありませんのでごく普通にバグがあったよと教えてあげてください!