ロボット少女は夢を見る - 制作記その63- 国境を超えたバグ
第63回目の記事は変わったバグがあったお話です。
先週はSteamNextフェスにて、
多くの方にプレイしていただき本当にありがとうございました。
ウィッシュリスト登録してくださった方も多く、とても嬉しかったです!
そしてデモ版を遊んでいただいた事で不具合報告もいただけました。
とてもありがたい事です。
そんな中でちょっと面白い(面白くない)不具合があったのでそのお話です。
まずその不具合なのですが、最初の報告から不穏でした。
「起動→Unityロゴから真っ暗になって進まない」
これの何が恐ろしいかと言いますと、
例えば
「装備画面で特定の操作をしたら、外せない装備が外せてしまった」
という不具合なら
不具合の発生方法、具体的な症状が分かるため修正がしやすいです。
ですがこの不具合は起動すらしていないのです。
しかも一部の数少ないプレイヤーにしか起こっていないようで、当然私の手元でも起こりませんでした。
再現不能…これ以上に恐ろしい不具合はありません。
そこでこの不具合に対して最初に行った対応は
「外部ファイルにエラーログを出力する仕組みを組みこむ事」
でした。
ゲーム画面が真っ暗でも
ゲーム内部では何かが起こっているはずです。
その何かをテキストで出力する仕組みを作ることで
今後同じような進行不能エラーが起こっても
「とりあえずログを確認しよう」
と対応できるようになります。
これによってどのようなエラーが起こっているか分かりました。
それが
「FormatException: Input string was not in a correct format.
System.Number.ParseSingle 」
というエラーです。
エラーから検索して原因を調査したところ
要は文字列→数値への変換がうまくいっていない様でした。
これ自体はそんなに珍しいエラーではありません。
ちょっとした入力ミスで起こりうるエラーです。
問題は「起こるプレイヤー」と「起こらないプレイヤー」がいる事です。
数値入力のミスならプレイヤー全員に起こらないとおかしいのです。
では今回の不具合の原因は何だったのか?
答えは
「国によって少数の表し方が異なる」事です。
日本では1の半分を少数にすると
「0.5」と表記します。
ところが国によっては
「0,5」と表記します。
何が違うの?と思うかもしれませんが、
0と5の間の点が異なります。
たったこれだけの違いです。
プログラムはたったこれだけの違いでエラーを起こして動かなくなってしまうのです。
いやーこの不具合の存在自体は知っていたのですが、
実際に自分のゲームで起こしてしまうとは思いもしませんでした。
今回、SteamNextフェスで
海外ユーザー含む多くの人に遊んでいただいた事で気づくことができました。
様々な環境でのテストプレイの重要性…それを学ぶことができて本当に良かったです。
そして海外から遊んで、
不具合報告までして下さったプレイヤーさんには感謝です。
不具合はどこから出てくるか分かりません。
今後も多くの方に遊んでいただけるよう
頑張ってゲームを作っていきたいです。
それでは、また次回!