コロッサル・ケーブ・アドベンチャー
Colossal Cave Adventure
『コロッサル・ケーブ・アドベンチャー』(英: Colossal Cave Adventure)は、アドベンチャーゲームというジャンル名の由来となっているコンピュータゲームである。他に、ADVENT、コロッサルケーブ、アドベンチャーという名でも知られている。プログラマでケイビング愛好家のウィリアム・クラウザーが設計したゲームであり、ケンタッキー州マンモス・ケーブ国立公園の洞窟群の一部であるコロッサルケーブを舞台のベースとしている。コロッサルケーブにはいくつも入口があり、その1つがベッドキルト (Bedquilt) と呼ばれている。クラウザーは非常に忠実に現実の洞窟を再現しており、このゲームをプレイした洞窟探検家は、初めてベッドキルトからコロッサルケーブに入ったとしても、容易に洞窟を辿っていけるという。
ウィル・クラウザーは、ARPANET(インターネットの前身)の開発にも関わった Bolt, Beranek & Newman のプログラマだった。クラウザーはケイビングを得意とし、ケンタッキー州マンモス・ケーブ国立公園でケイビングを行った経験を生かし、娘のためにこのゲームを作った。
クラウザーは1970年代初めにマンモス・ケーブ国立公園の洞窟群を探検し洞窟の地図を作成しているが、ゲームはテキストベースであり、1975年から76年ごろに作った。現実の洞窟とは異なり、ゲームでは斧を投げつけてくるドワーフや魔法の橋などファンタジー要素が盛り込まれている。
最もよく知られているバージョンは、スタンフォード大学のコンピュータでこのゲームを見つけた大学院生ドン・ウッズ (プログラマ)がクラウザーの許可を得て改良・拡張したバージョンである。ウッズはトールキンの大ファンで、エルフやトロールといったファンタジー要素をさらに追加した。
ロバータ・ウィリアムズとその夫ケン・ウィリアムズ (ゲーム開発者)がそのゲームを見つけた当時、似たようなゲームは他になく、彼らはアドベンチャーゲームを開発販売する会社オンラインシステムズ(後にシエラ・オンラインに改称し、さらにシエラエンターテインメントとなった)を創業。まずグラフィックスを加えたアドベンチャーゲーム「ミステリーハウス」を開発し、その後20年に渡ってゲームソフトウェア市場で活躍することになった。
クラウザーの最初のゲームはFORTRANで書かれた約700行のコードとそれとは別の700行のデータで構成されており、BBNのPDP-10で動作した。マップは79地点で構成されていて、それぞれにテキストが対応していて、139語の語彙、旅程表、各種メッセージなどがデータに含まれている。PDP-10では、ゲームデータを全てメモリ上にロードしてプログラムを実行する。そのため磁気コアメモリを60kワード(約300kB)必要とし、128kワードしか磁気コアメモリを搭載していないPDP-10システムにとってはかなり大きな負荷だった。
ウッズの改良版もPDP-10向けにFORTRANで書かれている。コードは約3000行、データは1800行に増えている。マップ140地点、語彙293語、オブジェクト53点、旅程表、その他のメッセージなどがデータに含まれている。クラウザーのバージョンと同様データは全てメモリ上にロードするが、プログラムを工夫することで必要な磁気コアメモリを42kワードに減らしている。
FORTRANのコードはPDP-10特有の特徴を最大限に活用している。PDP-10のワード長(整数長)は36ビットであり、7ビットのASCII文字を1ワードに5文字格納できる。FORTRANではこのような5文字の文字列同士を整数として比較することができ、このゲームで認識する語彙は先頭5文字だけを比較して判別されていた。また、PDP-10のオペレーティングシステム (OS) には実行中プログラムの磁気コアメモリ上のイメージをセーブ/リストア/リスタートする機能を持っており、これがアドベンチャーゲームでのセーブ/リストア機能の原点となった。この場合セーブされるのはサスペンドしたプログラム全体であり、一部データだけという最近の実装とは異なる。このようにPDP-10固有の特徴を活用しているため、他のプラットフォームへの移植は難しかった。
その後このゲームはC言語やFORTRANといった汎用プログラミング言語で実装されるのではなく、Z-machineなどインタラクティブフィクション専用エンジンをターゲットとして実装されるようになった。
コロッサル・ケーブは様々なバージョンがリリースされてきた。一般に単に「アドベンチャー」と題することが多く、それに何らかのタグを付与することも多かった(例えば、「アドベンチャーII」、「アドベンチャー550」、「アドベンチャー4+」など)。大きな数字が付与されている場合、そのゲームでの最高得点を意味している。ウッズが改良を行った最初のバージョンで初めて得点システムが導入されており、「アドベンチャー350」とも呼ばれている。ラッセル・ダレンバーグの Adventure Family Tree のページに、不完全ながら各種バージョンとそれらの関係が示されている。
クラウザーの最初のバージョンが発見されるまで、ウッズが1977年に拡張したバージョンが最初だと見られていた。ウッズは得点システムを加えており、最高得点は350点だった。その後のバージョンではさらにパズル的要素が加えられていき、最高得点は1000点やそれ以上になっていった。マルチプレーヤー版のコロッサル・ケーブもある。
1977年、ランド研究所のジェームズ・ジログリーはウッズとクラウザーの許可を得て、数週間を費やしてFORTRANからUNIX上のC言語に移植を行った。これはBSDのディストリビューションの一部となっていた。2012年現在、FreeBSDではportsのgames/bsdgamesに含まれており、Linuxのディストリビューションの多くでは "bsdgames" というパッケージの一部として含まれている(コマンド名は "adventure")。
1970年代末にはプライムコンピュータのスーパーミニコンピュータにも移植されている。OSはPRIMOS、使用言語は FORTRAN IV である。1978年末にはIBMのメインフレームにも移植された。OSはVM/CMS、使用言語はPL/Iである。
1980年、マイクロソフトは Apple II Plus 向けやTRS-80向けの「アドベンチャー」をリリースした。また1981年には IBM PC 向けの最初の MS-DOS 1.0 上で動作する「アドベンチャー」をリリースした。5.25インチのフロッピーを媒体とし、そのディスクから直接ブート可能となっており、DOSからその中身を見ることができないようになっていた。このバージョンでは130の部屋、15の宝物、40のアイテム、12の解くべき問題が含まれている。フロッピー上に2つまでセーブ可能である。
デイヴ・プラットの550点版には様々な新機軸が導入されている。FORTRANやCで直接プログラミングするのをやめ、プラットはアドベンチャーゲームを記述する A-code という言語を開発し、ゲームをその言語で書き直した。A-code のソースを FORTRAN 77 (F77) で書かれた "munger" というプログラムで前処理し、A-code からテキストデータベースおよびトークン化された擬似バイナリに変換する。それらをF77で書かれた実行エンジン "executive" と共に配布した。またゲームにランダム性を導入し、プレーヤーの選択に対する応答に幅を持たせ、滅多に発生しないイベントを導入したりしている。
デール・ピーターソンによれば、ドン・ウッズは1990年代中ごろまでこのゲームのバージョンアップをリリースし続けていたという。クラウザーからウッズが開発を引き継いだころ、他のプログラマもそれぞれ独自に開発を継続した。
デイヴ・プラットの550点版のコロッサル・ケーブはオリジナル版以外では最も有名で、その後の派生バージョンの起点ともなった。例えばマイケル・ゲッツのCP/M用581点バージョンなどがある。また、舞台も洞窟から火山や地下墓地の迷路などに変えられたり、プレーヤーが "plugh" と入力すると溶岩の上の空中に吊るされた椅子にプレーヤーが転送されるといった仕掛けも登場するようになった。バイキングが撮影した火星の写真が360度に描かれている部屋とか、魔法の絨毯といったそれぞれのバージョン独自の趣きが加えられている。
グラハム・ネルソンの Inform Designer's Manual ではこのゲームを1980年代のアドベンチャーゲームの3部構成のさきがけだとしている。3部構成とは、「ゲームの地下世界の閉所恐怖症的感覚と深さを強調する効果を持つ」地上でのプロローグ、「現実世界からファンタジー世界へと移行する」中間部分、そして結末「マスターゲーム」である。