- 《ROCKET》,又名《Lunar Lander》(《登月艙》)
- 製作者:Jim Storer
- 發佈日期: 1969年秋 (FOCAL原版);1970年1月 (《DECUS程序指南》(DECUS Program Guide);1972 (《EDU速報》(EDU newsletter));1973 《電子遊戲經典101》(101 BASIC Computer Games)
- 編碼語言: FOCAL (1969); BASIC (1972)
- 平臺: PDP-8
開場白:
1969年7月20日,阿波羅11號的登月艙“老鷹”(Lunar Module Eagle)降落在月球表面,落地過程驚險異常。在燃料告急的情況下,駕駛員阿姆斯特朗(Neil Armstrong)突然遭遇預料之外的岩石和隕石坑,他堪堪避過它們,勉強找到一處平面降落,這時的LEM早已偏離預計的降落地點。這架精貴的宇航器最終安穩地落在月球土地上之時,燃料箱中只剩個位數秒的燃料。同一時間的馬賽諸塞州,17歲的Jim Storer在電視前忘神地目睹了全程。那年秋天,他向老師提出一個項目,要用到Lexington高中的PDP-8電腦——他準備製作一部遊戲,重現LEM登月的過程。
PDP-8,由迪吉多公司推出的一款迷你電腦,第一款成功商品化的迷你電腦,個人電腦的先驅。
Storer沒有給遊戲起正式的標題,但程序名恰好符合運行系統對文件名的六個字符的限制——“ROCKET”。程序使用了39行FOCAL代碼,十分緊湊,FOCAL
這個語言的設計初衷就是為了方便學生編程,但它在與同類語言BASIC的競爭中迅速敗下陣來,因為後者的語法更清晰。玩家在遊戲中接收一排排數據,一次一行,顯示出經過的時間、高度、速度和模擬登月艙的燃料使用情況,每一回合,程序需要經過運算,給出最右一項的數字,表示著下一個10秒內要消耗的燃料量。
玩家需要在通過分時系統在電傳打字機上游玩《ROCKET》,機器的打印速度很慢,並且每輪都要花上幾秒時間才能計算出最後那個新的燃料消耗率,所以的確會給人一種在實時登月的錯覺。當時阿波羅計劃仍然是社會熱點話題,所以那時候的玩家很容易便能自行想象出來自那種指揮中心的指示和航天術語交織在一起的背景聲,屏幕上的數字立即生動起來,彷彿真在進行一場刺激的外太空探險,就像電視上正在重播的那樣。
要贏下這個遊戲還是很難的,玩家面臨的挑戰和宇航員阿姆斯特朗當時面臨的非常相似,當然,肯定也簡化了許多:玩家必須在燃料耗盡之前控制住登月艙的落體速度,安全落地。如果玩家太過小心,月球的引力會讓落體速度逐漸增加,超過引擎的控制範圍。如果玩家太激進,那麼燃料可能提前耗盡,登月艙會令人絕望地墜落在月表。兩種情況都會導致悲劇。
與《俄勒岡道》以及其他同時期的遊戲類似,《ROCKET》本質上是一個數學性的模擬器。但這幾乎完全由加速度、慣性和力組成的冰冷嚴峻的數學造成的戲劇感,指向了人類史上一個重要的篇章。
儘管核心流程完全由數字主導,但Storer為了激發玩家的想象,設計了恰到好處的文字構架,讓玩家感覺自己的打字機彷彿的確連接著某個遠程控制中心。遊戲以指揮中心呼叫登月艙開場,而玩家選擇退出時,程序則禮貌地結束於指揮中心通話完畢。另一個帶著人文關懷的設計是,如果落月任務失敗,登月艙墜毀,那麼程序會用撞擊速度折以一定比例換算成衝擊坑的深度,當作小小的安慰,以免玩家在公用的臨時“計算實驗室”裡丟了面子:總之,它讓失敗變得可以被打趣和吹噓。
程序用到的數學是很準確的。Storer在老師和工程師父親的幫助下,只用了寥寥數行精簡的 FOCAL 代碼便實現了用於計算加速和力的方程式。FOCAL 是門從未在 PDP 生態之外流行過的過渡性語言,它的一些特性(諸如單個字母既可當作變量名,也可以當作函數的縮寫)混合上本來就令人頭皮發麻的微積分方程式,讓《ROCKET》的源代碼如同天書,只有接受過相關訓練的人能夠理解:
1970年初,Storer把他的程序交給了 DEC,就是他學校裡那臺PDP-8的生產廠家,DEC將他的程序收錄進了面向消費者的目錄,即《DECUS 程序指南》(DECUS是“DEC用戶聯盟”(DEC Users' Society)的縮寫 )。《ROCKET》完美趕上了兩股時代思潮的交匯:阿波羅計劃與計算機。Storer的程序在其後的 18 個多月裡被無數次克隆、調整、改進和重構,1972 年初的《DECUS指南》給它寫的推薦詞是“出類拔萃的阿波羅模擬遊戲,幾乎接入過全國上下的所有分時系統”。這些同類的阿波羅模擬程序有些是獨立製作的,有些則完全重寫自Storer。但令人吃驚的是,有很多則是赤裸裸地對原版ROCKET的山寨,這很大程度上是因為在1972 年,ROCKET登上了讀者眾多的《DECUS指南》。
1969 年,教育心理學博士候選人 David H. Ahl進入DEC,主管教育類市場部門。冗長的《DECUS 程序指南》收錄著很多教師和學生可能感興趣的程序,但這些程序被上百個頂著諸如 "PDUMP——基於 DOS 的寄存/核心轉儲"或者"核心加載至 MAINDEC TAPE"這樣聽著有趣、實則令人乏味的工具類和演示類程序淹沒。Ahl的倡議之一就是建立一個專門面向教育用戶的免費新聞速報,他稱之為 EDU。
他為其策劃了滿滿當當的內容,包括將計算機引入課堂的教學計劃、建議和成功案例。每期都刊出一個列表,收錄一些用 BASIC 編寫的程序,而 BASIC 則是DEC為他們的教育平臺一步步確定下的語言標準,為的是讓用戶們可以在大型機上打字和運行程序。但這意味著 Ahl 需要在短時間內編寫或者收集很多有趣的 BASIC 程序。除了鼓勵通過郵件投稿代碼之外,Ahl 還遍歷了包括 DECUS在內的很多有趣的源碼合集,來尋找適合刊在EDU上的程序。東翻西倒之後,他找到了一個1964年的名為《蘇美爾遊戲》(The Sumerian Game)的實驗性教學程序,曾由DEC的一位同事用 FOCAL重新編寫過。Ahl再次將程序移植到 BASIC,並給它取了一個6 個字符的名字——HMRABA,或者Hamurabi,而它則註定將成為計算機遊戲史上的又一傳奇。
Hamurabi
Ahl 也發現了 Storer的登月程序,同樣將其移植到BASIC。Ahl的版本保留了原程序的核心理念,潤色了文字使其更易於理解,並精簡了一些複雜特性,但也丟失了原版的一些魅力:那份彷彿在直接和指揮中心對話的幻想元素已經不存。不得不說 Ahl 為程序添加了一些他自己的幽默感,如聲稱 LEM 的機載電腦之所以出現故障,是因為“它不是電(Digital)做的”【指DEC(Digital Equipment Corporation)公司】。大概是為了教學用時更清晰直白,Ahl又做了一些簡化,Storer原版成功著陸後會收到6種不同評價,而 Ahl 的移植版只有 3 種。
Ahl的修訂版於1972年初登上EDU,當時EDU的讀者群正爆炸性地增長。上一年秋天,第一期速報發佈時,只有300名訂閱者;但到了1972年底,它的讀者已超過20000人。隨著微型計算機的價格走低,以及私人和政府為計算機進入學校而撥出的大量贈款,學校對計算機相關內容的需求有了前所未有的增長。Ahl對《ROCKET》的宣傳使它有了更多的用戶,並帶來了新一波的模仿、克隆和重製之作。
1972年後半年,隨著阿波羅任務的結束,Ahl向DEC提出,想要挑選出EDU和《DECUS程序指南》中的最佳程序,把它們編成一本書。這就是1973年的《BASIC計算機遊戲101》,後來成為早期計算機歷史上最有影響力的書之一。這本書後來的再版,《BASIC計算機遊戲》,成為史上第一本銷量超過一百萬冊的計算機書籍。書中收錄了Ahl的移植版《ROCKET》,以及另外兩個版本:一個由Eric Peters設計,增加了一個簡單的ASCII圖表,以顯示登月艙的高度;另一個是由William Labaree II設計的更復雜的版本,除了推力之外,玩家還可以控制燃油時間和角度。Ahl在為該書撰文稱,《ROCKET》是當時“最受歡迎的電腦遊戲之首”。到了20世紀70年代末,隨著個人電腦革命的開始,成千上萬的孩子和成年人在自己的家用電腦上輸入ROCKET,想要體會阿姆斯特朗那段驚險刺激的著陸歷程。1979年,雅達利公司發佈了一個名為 "登月艙 "(Lunar Lander)的圖形版本,這個名字代表了受《
ROCKET》啟發的整個遊戲子類型,並進一步鞏固了ROCKET在計算機歷史上的地位。
雖然在 "文字遊戲 "的背景下討論《ROCKET》可能顯得很奇怪,因為其輸出文本主要是數字,但是,它成功捕捉到了戲劇情景的臨場性,甚至比《俄勒岡道》中的文字還要有效。在《ROCKET》裡,玩家不像玩以前的大多數遊戲那樣,站在上帝視角觀察一切,在幾周或幾個月的漫長時間裡做一些事不關己的決定;進入了《ROCKET》的玩家將成為熱鍋上的的宇航員,響個不停的電報機打印出來的數字迅速減小,讓人抓耳撓腮。遊戲鼓勵玩家想象自己就在那登月艙裡,從這一秒到下一秒,全盤決定著這位虛擬英雄的生死。這是一種令人上癮的沉浸感,未來的無數遊戲都會努力在此基礎上進行再創造和改進;《ROCKET》也是最早做到這一點的文字遊戲:讓玩家在千鈞一髮的危機時刻當中,扮演一位孑然一身的主角。
Jim Storer本人建立了一個網站,收集各類有趣的ROCKET相關信息,還有一份1969年的源碼;也可以在這裡直接遊玩重製版。
本文作者:Aaron A. Reed,撰稿人,推特@aaronareed,已取得翻譯轉載授權,原文鏈接
翻譯:@觀樂 @丁Ding (感謝@丁Ding協助翻譯!)