ゲームでバグが増えたのは技術の進歩が原因?
美しいビジュアル・壮大な世界・自由度の高さ・数年おきの次世代機の発表などなど…。
昨今のゲームは一昔前に比べてかなりの発展を遂げています。
今の時代に生まれて人では、カクカクのポリゴンが動いただけで大騒ぎしていた時代があったとは思わないでしょう。
しかし昔からゲームをしている身として、いくつか感じていることがあります。
それがゲームの細かなバクの発生率の高さ。
昔もそれなりに見られたものですが、「こんなのも直してないの?」と思われるバグも多いです。
問題は、システム的に完成している大人気シリーズのゲームでも見られること。
今回はこういったバグがなぜ減らないのか個人的に考察してみました。
バグの原因とデバッグ
ゲームプログラムを書いていた経験がある身としては、バグというのはどんなゲームでもかならず出ます。
まずバグといっても、システム的に壊れるようなものは稀で、むしろゲームがプログラム通りに動いた結果起こるものです。
プログラムというのは並行して処理するようなものでは無く、一本道で順々に処理していきます。
そのため「プログラマーがイメージした通り」にプログラムが動けば問題ありません。
むしろ「データが破損する」みたいなバグは、余程おかしなプログラムにしない限り発生しません。
・無限ループするプログラム
・プログラムコードの規格を超える
分かりやすいバグの種類としてはこんな感じ。
「無限ループ」というのは、ループを停止するプログラムを書き忘れることで発生します。
ゲーム中には条件をクリアするまで、一瞬で繰り返すようなプログラムがいくつもあります。
例えば「アイテムポーチの中を1画面に全て表示」といったもの。
これは「アイテムポーチの一番下になったら止まる」というプログラムを書かないと、いつまで経っても終わりません。
そのため画面がフリーズしたようになり、バグとなります。
「プログラムコードの規格」というのは数値で見ると分かりやすいです。
例えば、プログラムには「100」といった小数点がない数値専用のコードと、「10.35」といった小数点アリの数値を扱うコードと分かれてます。
しかし小数点を扱えない数値に小数点アリの数値を入れてしまうと、小数点以下が切り捨てられたりします。
こうして微妙な誤差が出ていき、最終的に大きな差となってバグとして現れもします。
こうしたプログラムを書いてしまうとエラーとなり、ゲームがフリーズすることも多いです。
しかしどうしても見落としがあったり、特定の条件下でしか発現しないバグなどもあります。
これをゲーム発売前に発見する作業が「デバッグ」と呼ばれるものです。
ゲームの規模にもよりますが、デバッグ作業では数人~数十人で実際に作ったゲームをプレイし、バグやプレイ上の不具合が無いか調べます。
本来ならこのデバッグで普通にプレイする上で発生しそうなバグは軒並み修正されます。
しかしゲームの攻略サイトで目にする、いわゆる「バグ技」といった面倒な手順を踏まないと発生しないバグもあります。
こうしたバグは通常のプレイスタイルでは発見しにくいものが多いので、どうしても残ってしまうのは仕方ないと思うこともあります。
ただ近年は「なんでこんなバグや不具合が残ってるんだ」と感じることも多いです。
その理由は単純にデバッグ不足が原因ですが、中には「技術の進歩」という、ある種皮肉な原因もあります。
ではどうして技術の進歩がデバッグ不足や、バグや不具合の増加につながるのか?
デバッグ不足の理由
さきほども述べたように、デバッグ不足はゲーム機やソフトなどの発展によっても増えています。
大まかな点が「ゲーム規模の拡大」と「通信技術の進歩」の2点です。
ゲーム規模が多くなる=バグも増える
デバッグが不足する主要因として「時間」と「経費」が挙げられます。
デバッグは基本、ゲームが完成した後の最終段階で行います。
しかしデバッグするにしても、ゲームの発売日まで短い時間で確保しなければいけませんし、その間の給料も発生します。
これを嫌う会社も多いかと。
単純にゲームの内容・規模が多くなれば、必然とプログラム量も増えていきます。
つまりその分バグが発生する可能性も高くなります。
昔のファミコンのような、それこそ「スーパーマリオ」のようなドット絵の横スクロールのゲームでは、そこまでプログラムを必要としません。
敵のAIも「特定の動きを繰り返す」「自キャラが敵キャラに近づいたら動く」といった、そこまで複雑なプログラムは必要ありません。
しかし今は「よりリアルに」を追求したようなゲームが多く、NPCにも「自分で考え、行動する」という高度なAIが使われることも珍しくありません。
中には「学習して行動パターンを変える」といったAIが使われることも。
他にもより利便性を良くしたり、ゲームのやりこみ要素を増やしたりと、ゲームシステム自体が昔に比べてはるかに肥大化しています。
しかしゲーム規模が増えるということは、プレイ時間も当然増えていきます。
ファミコン時代では僅か数時間でクリアが珍しくなかったですが、今では数十時間が普通です。
そんなクリアするだけで膨大な時間がかかるのに、より綿密にデバッグ作業をするのは至難の業です。
デバッグ要員を増やせば良いですが、それだとその分経費がかさみます。
デバッグ不足の純然な問題として、こうした点があります。
アップデートでバグを修正
最近はアップデートでバグを修正することも多くなりました。
2000年代のPS2時代ではゲームをネットにつなぐだけでも一苦労でしたが、2010年代のPS3といったハードからは普通にネットにつないだ状態です。
これのおかげで、バグが発覚しても後から修正できるようになりました。
こうした通信技術の発展は明確なメリットになりますが、これが会社側の怠慢に繋がっているとも思います。
要は「バグがあってもあとから直せる」と、デバッグ作業自体をおろそかにしている節が見られます。
「ストーリー上でバグが多発する場面がある」といった致命的なものから、「ロード時間がやたら長い」といったプレイ上不都合なものまで多岐に渡ります。
しかも早期に解決するのではなく、アップデートで修正されるのは早くとも発覚してから1か月は経った後。
それまで不具合に悩まされることになります。
一か所だけの、それも特に問題の無いバグならともかく、ロードのように頻繁にあるものや、ストーリーイベントでフリーズするとなると致命的です。
ぶっちゃけ実機のゲームハードにソフトを入れてゲームをプレイすれば、誰でも気付くようなバグが増えてます。
そんなバグすらも放置しているため、デバッグ作業していないと言われることもあります。
「プレイヤーをデバッグ要員としてしか見ていない」なんて言葉もあるくらいです。
デバッグ不足によるバグは、プレイヤーだけでなく会社側にも損害が出ています。
バグを修正するということは、修正するためのプログラマーが必要です。
しかしゲームが販売された後、プログラマーは次のゲーム企画へと参加するものです。
それが遅れる・中断されることになります。
バグ修正は直接的には利益を生まず、新しいゲーム(商品)の開発が遅れることは、会社側にとっては無利益といえます。
バグを直さないとゲームが売れず会社の評判が落ち、バグを直していると将来の収益が遅れる。
こうした不都合が会社側にも発生しています。
アップデートバグ
アップデートによる修正・追加などがされ始めてから増えたのが、アップデートが原因でバグが増えたというもの。
バグをアップデートで直す、といってもそんな簡単なものじゃありません。
ゲームが発売された後のバグというのは、プレイヤーにしてみれば欠陥商品を掴まされたようなもの。
あまりにヒドイようなら会社の信用問題にもなりますし、最悪消費者庁にも連絡されかねません。
そのため可及的速やかにバグを修正する必要があります。
しかし急いで該当箇所のバグを直したとしても、そのデバッグをしっかりする時間がありません。
このデバッグというのはバグの該当箇所を含めたゲーム全体のデバッグです。
単純なバグならともかくゲームシステムに食い込んだバグだと、その部分のプログラムを修正(変更)すると別の影響がゲーム全体に波及することがあります。
それが時々聞く「アップデートしたらゲームがフリーズするようになった」という話。
これは本来ゲームの発売前のデバッグすべきこと。
バグを直した結果致命的なバグが発生するのでは意味がありません。
こういった話を良く聞くため、私は新発売のゲームを敢えて期間を置いて様子見するようになりました。
…まあ仕事でゲームをする時間が無いのも理由ですが…。
技術が進歩しても、結局は人
ゲームに関わらず技術が進歩したとしても、それを使って何かを作るのは結局は人です。
人の手ではどうしても不完全になる部分もありますし、会社などの都合によるものも多いでしょう。
ゲームの規模が大きくなるにつれ、バグといった問題が表面化しにくくなるもの分かります。
そういったものに対処するのにネットを介したアップデートは必要でしょう。
しかし誰でも分かるようなバグを放置したまま発売するのは勘弁してほしいです。
デバッグ作業で誰でも必ず出くわす場面で発生するようなバグは、最低限取り除いてから販売してください、切実に。