【れたす】のつぶやき (最新)

ゲーム開発の『バグ』~

「それがどうした!」と開き直って、健康に生きるぞ(1)

今は、ぼちぼちデータベースの仕事をしているが、人生の青年期にはゲーム開発をしていた。

私は、ゲーム開発黎明期(1980年代初頭)から、まず個人で独学でパソコン用のゲーム作りを始めた。当時は、ゲームの作り方というような情報はほぼなく、苦労した。

そのころの話は、こちらに少し書いてある→『ゲーム開発昔話』

個人の芸(技術)でゲームを作っていたころのゲーム開発は、『徹夜につぐ徹夜』という感じで、体力的にも精神的にもキツイときがあるわけだったが、若かったし、楽しかった。

パソコンのゲームをカセットテープで売っていた童話的な時代は、数か月~数年かかって、数千本~数万本(時に十数万本)売れる程度だったが、ファミコン以降は、販売本数が初期ロットで数万から数十万になる。

私は任天堂の『バレーボール』の原作ゲームを作った縁で、任天堂のゲーム開発に参加した経験があり、任天堂ブランドとなると、最初から数十万の製品を作る。

任天堂や大手ゲーム会社の場合は、大人数でバグ取りもしてくれるし安心なのであるが(…それでもバグは出るが)、そういう環境を離れて、小さなゲーム会社でゲーム開発をし始めてからは、ゲーム開発作業とともに『バグ取り作業』も『作業主力』としてしなければならず、それが苦痛だった。

今はオンランでゲームを販売できるが、大昔のファミコンなどはカセットROMであった。
これは原価が高い。そして製造した製品のプログラムやデータの書き換えができない。

となると、『致命的なバグ入りの製品』を初期ロットで数万~数十万個製造してしまうと、販売できなくなり回収となるため、数億円の投資が捨て金になり、莫大な損害が出る。

だから、自分が開発に関係したゲームが市場にでるときは、私のような脳天気で楽天的な人間でも、心配で胃がおかしくなるんである。

ゲームバブル期(どんなクソゲーでも作れば売れるので、ゲームと無関係な会社が、不動産投機みたいに2流以下のゲーム開発者を雇って乱造した)には、クリスマス商戦などで、
「どこどこの会社はファミコンソフト(カセット)を百万本作ったけど、バグで販売停止になったらしい。つぶれるなぁ」
というような話(噂)を、何度か聞いた。

だから、そのころの私は、自分たちが作ったゲームの発売日になると、それからしばらく心身の不調を感じるのだった。
「致命的なバグが出たら、どうしよう」
という心配である。

(この話、つづく) ↓(下にスクロール)

<スポンサーリンク>


ゲーム開発の『バグ』~

「それがどうした!」と開き直って、健康に生きるぞ(2)

そもそものこと、ゲームに限らず、業務ソフトだろうが、ロケットを制御するプログラムだろうが、プログラムをすればバグは必ず出る。
よほどコード数の少ないプログラムであれば別だが、ある程度以上の規模のものになると、もはや人智ではバグを防ぐことはできない。

デバッグ作業でも、バグを完全には取り除けないので、もはやバグは、使用者に見つけてもらうしかない、くらいに思っていないと、開発者は精神をやられると、経験として、私は思う。

ただ、使用者が見つけた(遭遇した)バグが致命的なものであれば、巨大な信用低下や金銭的損失が出るわけで、納品前、発売前に金と人数をかけて必死でディバッグをするのである。

バグというのは、大きく二つに分けられる。

<1>プレーヤー(使用者)が普通に正しい操作をしているにもかかわらず不具合が生じるような、『プログラムやデータの構造的な誤り』が原因であるもの

<2>プレーヤー(使用者)の予想外の様々な操作に対応できず(全てに対応できるわけはないので)、そのためプログラムの構造に問題はなく、正しく動作しているのだが、『外部的な要因で不具合が生じる』もの

後者の(2)としては、JAXAの天体観測衛星【ひとみ】(2016年2月打ち上げ)が、わかりやすい。
打ち上げ~軌道投入まで成功して、いったん正常に動作していた衛星に、『ありえない制御指示データを送った』ことで、世界中の研究者がその観測データに期待していた高価な衛星が、宇宙ゴミになってしまった事故である。

【ひとみ】に搭載されたコンピュータのプログラムは正常であった。
正常であったから『地上から指示された間違った指示値』に従い、『その通りに姿勢制御用エンジンの噴射をした』ら、衛星が大破してしまったのであった。

敢えて童話風に言うと、『エンジン噴射で、ちょっと姿勢を変えて、太陽電池パネルを太陽の方向に向けてね』と指示するつもりが、『フィギアスケーターみたいに高速回転してね』という指示(誤った数値で指示)をしたので、スピンがかかりすぎて太陽光パネルなどが吹き飛び、衛星が壊れたのであった。

プログラムの構造だったり、データの不備だったり、原因は様々あるが、必ずバグは出る。
いくらデバッグをしても、バグは発見されず、残る。

だから、人工衛星の制御プログラムであっても、バージョンアップされ、その都度通信で更新されているだろうし、Windowsのバグなどの大部分は『こっそり』とアップデートで修正されている(はず)。

デバッグしても発見されないバグは、『こういう条件とこういう条件とこういう条件が揃ったときだけ出る』のであって、だから発見しにくい。
よって、デバッガーは、『普通ならしない色々なおかしな操作』をすることが仕事なのである。

(この話、つづく)↓(下にスクロール)

<スポンサーリンク>


ゲーム開発の『バグ』~

「それがどうした!」と開き直って、健康に生きるぞ(3)

プログラムを開発しているとき(コードを書いているとき)、夢中になって数時間、キーボードを叩き、数十ページのコードを書いてしまうときがある。
10分くらいのつもりが、数時間経過しており、自分でも驚く。

だが悲しいことに、そもそも、よほど緻密で天才的な頭脳でないかぎり(…たぶんそうであっても)、こういう感じでプログラムを書いて、それを実行(動作させてみる)と、まず『吹っ飛ぶ(暴走する)』。

プログラムのどこかで無限ループに入ってしまい、フリーズして、うんともすんとも言わなくなるときもあれば、画面が消えてシステムがリセットされたりもする。

最初のうちは、慌てふためくが、何年かプログラムを書いていると、
「おっ、出た出た。(バグが)出ないわけないよな」
くらいのものである。

もっと言えば、
「この段階(開発時)でバグってくれてよかったぜ!」
という感じだ。

恐ろしいのは、
「おっ、ちゃんと動いてるじゃん」
と1万回正常動作しているのに、1万1回目の動作の時に、プログラムが暴走することである。
その1万1回目の動作が、顧客のところで起こるのが悪夢である。

だから開発中に、どんな恐ろしいバグが出ようと、まあいいんである。
修正する苦労を思うと、決して良くはないが…。

デバッガーというか、シュミレーターのない時代の『バグの個所特定や、そのバグを引き起こしているプログラムの構造解明』の恐ろしいほどの辛苦は、それだけで1話になるからここでは触れないが、自分の作ったプログラムが吹っ飛んでモニターが真っ暗(真っ青)になったときの、
「おおおっ!」
というため息に中に『気楽さ』がなければ、開発者の精神がやられてしまう。

製品発売後のバグより、開発中のバグなんてのは、『どうってことない』のだが、それでも数日も寝ないで調べても原因がわからないことも多く、夜中に大声で独り言を喚いたり、笑ったりするようになる。

自分では気づいていなかったりすのだが、私のようにずっと自宅で仕事をしていると、妻が朝、
「夜、叫んでたよね」
と、教えてくれる。

そのようにして、とてもややこしいバグの構造が発見できたとき、
「げげっ! そういうことかよぉ!」
と、思わず嬉しくなり、
「このパズル的なバグ構造はレポートにして発表したいぞ!」
とか興奮気味に思ってしまうのだが、同時に、御ましなバグ入りのプログラムを書き、そのバグ修正に数日もかかった自分の『頭の出来のずさんさ』が悲しくなるわけでもある。

映画やテレビドラマで、天才ハッカー少年が、
「あと30秒で地球が消滅するぜ!」
などと焦らせられながらも、異常な速度のタイピングで解除プログラムを書きあげてしまい、残り1秒でエンターキーを押し地球を救う、というような場面を見るたび、
「あのスピードで書いたコードにバグはないのかよぉ」
と突っ込みたくなるんである。

(この話、つづく)


< ジャンル別振分をした過去の文章 ↓ >
①日常 & Etc ②スポーツ & 文化
③つぶやき ④動植物 & 食べ物
⑤方向音痴 & 山歩 ⑥IT& 科学とか
HOME



<スポンサーリンク>