あるゲーム体験版の“ボス超硬化バグ”と“謎のノイズバグ”が、「同じ原因だった」との報告。過去にもいろんな開発者を悩ませたとある罠
弊社アクティブゲーミングメディアのパブリッシングブランドPLAYISMは11月7日、『グレイシャード』の体験版を配信した。対応プラットフォームはPC(Steam)。今回、本作の体験版における一風変わったバグの事例を、開発者である渋谷啓氏が紹介している。同氏によれば一部言語のユーザーから報告されたオーディオのバグ修正が、「敵の体力が11倍になる」まったく別のバグの解消に繋がったという。
『グレイシャード』は、6500万年後の地球を舞台にする、海中アクションアドベンチャーゲームだ。渋谷啓氏による個人開発スタジオStudio Snowblindが開発を手がけている。本作の世界では、大氷河期が訪れ地球全体が凍結していた。主人公となるグレイは、高度な知性と特異な代謝を発展させ、氷下の海に適応した鳥類の末裔であるトゥアイ種と呼ばれる生物だ。本作にてグレイは、突如訪れた永遠の冬に対する脅威に立ち向かう。
戦闘においては海中での立体的な立ち回りが求められる点が特徴で、サメをはじめとするさまざまな海中生物と戦うこととなる。また海中には暗闇に包まれた場所もあり、コンパニオンキャラであるプイが発行器官で辺りを照らしてくれる。プイに餌を与えて育成する要素もあり、協力しながら冒険を繰り広げるのだ。
きっかけは“ノイズ”バグ
先日11月7日には、Steamにて本作の無料体験版が配信開始。渋谷氏の公式Xアカウントによれば順調にSteamのウィッシュリスト数も増えているそうで、幅広いユーザーにプレイされている模様だ。そして今回同氏は、本作における一風変わったバグ修正にまつわるエピソードを紹介している。
渋谷氏によれば、ことの発端となったのは“オーディオにノイズが生じる”とのバグ報告だという。このバグは特定の言語圏だけで発生していたそうだ。そして調査の結果、このバグの原因はオーディオ周りのシステムではなく、データの「小数点」の扱いにあったという。
渋谷氏によると本作の効果音は、マスターデータ管理(一元管理)されており、距離減衰やピッチの振れ幅は数値としてJSONスプレッドシートにて定義されているとのこと。一元管理されたデータから必要なデータを解析・変換(Parse/パース)して、プログラム上で利用する方式のようだ。つまりゲーム中に遠くで発生した効果音の聴こえ方を変化させる際などに、そうしたデータを取り出して利用しているのだろう。
そして問題を引き起こしていたのは、スプレッドシート上で小数点を含めて定義された効果音データだったそうだ。たとえば0.9~1.1というピッチ幅をもたせたデータの場合、特定の地域ではなぜか小数点を無視してパースされ9~11倍のピッチで効果音がゲーム中で実行されていたとのこと。該当する場面では「本来の約10倍のピッチ(周波数)」で超高速の効果音が鳴るため、これがプレイヤーからノイズのように認識されていたようだ。
さらに渋谷氏によれば、同じ地域のユーザーからは「敵がとても硬い」との報告もあったという。報告された動画を見ると敵のHPが、およそ10倍になっていたとのこと。同氏は先述の“ノイズ”のバグの原因を踏まえて敵のHPについてのデータをチェックしたところ、原因を特定。該当する地域の本作では、敵のHPがなんと11倍になっていたそうだ。
このためたとえば体験版において最初に戦うボスである「統べるグエド」のHPは本来ゲージ1本であるところが、19本分に増加。約2万のHPを誇る“ラスボス級”の存在になっていたという。
“カンマとピリオドの罠”
ではなぜ、データの小数点が無視される現象が発生したのか。この原因は「ピリオド( .)」と「カンマ(,)」の、ゲームプログラム内での扱いの違いにあるとみられる。日本や米国を含む多くの国では、小数点の区切りは「.(ピリオド)」だ。一方で今回問題が報告されたというドイツ語やポーランド語のほか、フランス語などでも小数点は「,(カンマ)」と表記される。このためプログラムが実行されるOSの言語などに応じて、ゲーム内データの「.(ピリオド)」も同様の扱われ方となり無視されるケースが発生。結果的にデータの小数点に「,(カンマ)」を用いないと正しい数値が認識されない不具合が生じるようだ。
ちなみに過去には、別のゲームの開発者からも同様の不具合が発生したという報告がおこなわれてきた。たとえばアドベンチャーゲーム『ファミレスを享受せよ』のSteam版では、フランス語環境でゲームが起動しなくなる問題が一時発生(関連記事)。またモバイル向け音楽ゲーム『TAKUMI³』では、ベトナム語環境でゲームが起動しないという不具合が発生していた。ベトナムでも、数値におけるカンマとピリオドの扱いが日本などと逆である。そのため今回の『グレイシャード』のように、たとえば「1.234」との数値が「1234」と間違って解釈され、巨大な誤差がゲームの挙動に反映されてしまうといった不具合が起こっていた(関連記事)。
それぞれ修正に至っているものの、特にグローバル展開されるゲームにおいて“カンマとピリオドの罠”はしばしばゲーム開発者を悩ませる問題のようだ。データ上で小数点が付けられたさまざまな数値に影響する問題とみられ、今回の『グレイシャード』では「オーディオのノイズのような音」と「異常に体力の高い敵」という一見何の関連もなさそうなふたつの問題が、共通の原因で一部言語圏にて発生していたかたち。すでに渋谷氏は原因を特定しており、ドイツ語やポーランド語環境で発生する不思議なバグは体験版の段階で修正されることだろう。
『グレイシャード』は、PC(Steam)向けに2025年配信予定。そして体験版は現在配信中だ。なお、今回本作の公式Discordサーバーが開設されており、今後の開発の参考にするため、体験版のフィードバックを寄せてほしいと呼びかけられている。