コロッサル・ケーブ・アドベンチャー
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/09/09 08:14 UTC 版)
歴史
ウィル・クラウザーは、ARPANET(インターネットの前身)の開発にも関わった Bolt, Beranek & Newman のプログラマだった。クラウザーはケイビングを得意とし、ケンタッキー州マンモス・ケーブ国立公園でケイビングを行った経験を生かし、娘のためにこのゲームを作った[5]。
クラウザーは1970年代初めにマンモス・ケーブ国立公園の洞窟群を探検し洞窟の地図を作成しているが、ゲームはテキストベースであり、1975年から76年ごろに作った[2][6]。現実の洞窟とは異なり、ゲームでは斧を投げつけてくるドワーフや魔法の橋などファンタジー要素が盛り込まれている。
最もよく知られているバージョンは、スタンフォード大学のコンピュータでこのゲームを見つけた大学院生ドン・ウッズがクラウザーの許可を得て改良・拡張したバージョンである[7]。ウッズはトールキンの大ファンで、エルフやトロールといったファンタジー要素をさらに追加した。
ロバータ・ウィリアムズとその夫ケンがそのゲームを見つけた当時、似たようなゲームは他になく、彼らはアドベンチャーゲームを開発販売する会社オンラインシステムズ(後にシエラ・オンラインに改称し、さらにシエラエンターテインメントとなった)を創業。まずグラフィックスを加えたアドベンチャーゲーム「ミステリーハウス」を開発し、その後20年に渡ってゲームソフトウェア市場で活躍することになった。
技術
クラウザーの最初のゲームはFORTRANで書かれた約700行のコード[8]とそれとは別の700行のデータで構成されており、BBNのPDP-10で動作した。マップは79地点で構成されていて、それぞれにテキストが対応していて、139語の語彙、旅程表、各種メッセージなどがデータに含まれている。PDP-10では、ゲームデータを全てメモリ上にロードしてプログラムを実行する。そのため磁気コアメモリを60kワード(約300kB)必要とし、128kワードしか磁気コアメモリを搭載していないPDP-10システムにとってはかなり大きな負荷だった。
ウッズの改良版もPDP-10向けにFORTRANで書かれている[9]。コードは約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 のページ[10]に、不完全ながら各種バージョンとそれらの関係が示されている。
クラウザーの最初のバージョンが発見されるまで[11]、ウッズが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つまでセーブ可能である[12]。
デイヴ・プラットの550点版には様々な新機軸が導入されている。FORTRANやCで直接プログラミングするのをやめ、プラットはアドベンチャーゲームを記述する A-code という言語を開発し、ゲームをその言語で書き直した。A-code のソースを FORTRAN 77 (F77) で書かれた "munger" というプログラムで前処理し、A-code からテキストデータベースおよびトークン化された擬似バイナリに変換する。それらをF77で書かれた実行エンジン "executive" と共に配布した。またゲームにランダム性を導入し、プレーヤーの選択に対する応答に幅を持たせ、滅多に発生しないイベントを導入したりしている。
- ^ Crowther, 1976; Crowther & Woods, 1977.
- ^ a b Jerz, Dennis (2007) Somewhere Nearby Is Colossal Cave: Examining Will Crowther's Original “Adventure” in Code and in Kentucky, Digital Humanities Quarterly
- ^ Montfort, Nick (2003). Twisty Little Passages: An Approach To Interactive Fiction. Cambridge: The MIT Press. ISBN 0-262-13436-5
- ^ Mel Park. Bev Schwartz meets the real Bedquilt
- ^ Rick Adams. “Here's where it all began…”. The Colossal Cave Adventure page. 2012年5月10日閲覧。
- ^ 1972年に遡るとする説があるが、本作がD&Dからの影響を受けていることから、1974年より古いことはありえない
- ^ “L’avventura è l’avventura » Interactive Fiction? I prefer Adventure”. Avventuretestuali.com. 2012年1月29日閲覧。
- ^ オリジナルのソースコードはこちら
- ^ ウッズ版のソースコードはこちら
- ^ Russel Dalenberg (2004年3月20日). “Adventure Family Tree” (ASCII Art). 2012年5月11日閲覧。]
- ^ “Adventure: Crowther's original source code found; photos from inside the real Colossal Cave”. 2012年5月11日閲覧。
- ^ “IBM Archives: Product fact sheet”. 03.ibm.com (1981年8月12日). 2012年1月29日閲覧。
- ^ Peterson, Dale: "Genesis II: Creation and Recreation with Computers", (1983)
- ^ Inform Designer's Manual, Graham Nelson, 2001 edition, 375-382
- コロッサル・ケーブ・アドベンチャーのページへのリンク