一個沒有所謂“老游戲情懷”的人,做了一個供老玩家懷舊的網站。
編輯丨劉淳
紫菜從沒想到,因個人興趣做著玩的DOS游戲網站,本來計劃放個把月就撤下,最終會在玩家當中引發這么大的關注。
“沒想到反響這么大,原本想頂多就兩三百星,現在已達到了3000多星。”在將網站丟到GitHub——世界上最大的代碼存放網站和開源社區上后,項目一路走紅,登上了官方每日更新的“趨勢榜”,被幾千名用戶“點星”表達喜愛之情——3000多星可能聽起來不是特別多,但這個數字在GitHub上已經足夠熱門了。
經過一輪媒體曝光傳播后,網站訪問量還在迅猛爬升,平均每天超過1萬人次,9月6、7日這兩天,更是達到了5萬人次的峰值。
盡管之前心里也有一定預期,這個結果還是讓紫菜“受寵若驚”。
這是一個匯集了中文DOS老游戲的站點。它沒有明確的名字,只是簡單叫做“中文DOS游戲”,或者大多數時候,你只能看到一個作為網站Logo的手柄圖標。紫菜在GitHub已有項目的基礎上,將中文DOS游戲封裝成網頁應用。相比各類模擬器、虛擬機,這個網站的特別之處在于,玩家只需打開網頁點擊某款游戲,便可以直接在瀏覽器里開始游玩,沒有安裝、配置的一套流程,支持存檔,非常方便。
因為在瀏覽器上玩游戲實在非常方便,不少玩家將紫菜的網站視為“摸魚”利器
網站首批上線近40款游戲,在導入貼吧網友整理的合集后,總數量超過了1800款,其中有東方武俠題材,如《仙劍奇俠傳》《軒轅劍》,也有歐美模擬游戲,如《模擬城市》《瘋狂醫院》,還有日式策略,如《大航海時代》《三國志》。這些曾經的經典有的自帶原生中文,有的是優秀的漢化版。
能在瀏覽器上方便地玩到中文DOS老游戲——這讓網站甫一上線便流傳開來,并收獲到了如潮的好評。
不少人猜測,網站作者是位有著多年游戲經歷、對老游戲情懷頗重的資深玩家。
丨 一
“一般人默認我是一個老玩家,可能會覺得我有30多歲,從小玩著DOS游戲長大。”與大多數人想的不同,紫菜還是一名大三在讀的學生,制作這個項目的緣由也很偶然。
“做這個東西主要有兩個契機。”他說。
一是紫菜看到了外國網友制作的一個網頁,那是個模擬Win95系統運行環境的頁面,功能齊全,玩家可以在瀏覽器里體驗上個世代的操作系統。
二是當時趕上了《雙點醫院》發售,紫菜一直聽聞《主題醫院》很有趣,借著這款“精神續作”面世的契機,打算去嘗試一下曾經的經典。
在網上搜了一圈資源后,他發現配置起來很麻煩,另外,相比外網上齊全的資源,中文游戲也不太好找,比如說自帶中文語音、“請病人不要死在過道上”的《主題醫院》就難以尋覓。
兩個契機綜合后的結果是——我自己可不可以在這些國外項目的基礎上,做一個能在瀏覽器里玩老游戲的網站呢?
冒出這個想法的時候,今年暑假已經快過去了,沒剩下幾天時間。紫菜的學校開學偏晚,朋友們已經開始上課,出去玩他找不到同伴,待家里玩游戲也不盡興,因為他就帶回去一臺MacBook,臺式機留在了宿舍。做一個收錄中文DOS老游戲的網站,“看起來也不是特別難”,紫菜決定靠這個打發剩余的假期。
項目就誕生自紫菜的這臺MacBook
接下來幾天,紫菜就在網上抓資源、打包、適配,再測試,沒有硬性日程,想做就做一點,懶了就丟一旁,每天平均工作三四小時,起勁了一連做6個小時。有了外國玩家成熟的技術作基礎,紫菜要做的工作倒不難,但從開始搜索到最終添加游戲,可是個需要耐心的繁瑣活兒。
在第一批游戲處理完畢后,紫菜直接上線了網站,項目也發在了GitHub上,心想也不會有多少人看到。不曾想,這個“能跑就行”的個人興趣項目,會在玩家當中火成現在這個樣子,“很多一開始沒有考慮的地方就顯現出來了”。
玩家們的郵件紛至沓來。
丨 二
紫菜不是一個對老游戲有情懷的玩家。
事實上,第一批上線的近40款DOS游戲,他小時候一款也沒有接觸過,至于先前提到的《主題醫院》,他也只是看鄰居家哥哥玩過。這名愛好“基本上還是游戲”的“偏宅”玩家, 20年來的游戲經歷同大多90后玩家無異。
紫菜幼兒園開始就接觸到了游戲,那會主要玩的是《泡泡堂》《跑跑卡丁車》,上小學后變成了《QQ幻想》《QQ三國》《夢幻西游》,也玩《紅色警戒》《星際爭霸》《帝國時代》。
初高中因為學業關系,他成了一名“云玩家”。沒有太多機會接觸游戲,他就通過游戲雜志、實況攻略了解信息,也會跟同學一起交流最近新出的游戲。
直到大學,玩游戲的時間才重新多起來。他個人偏好單機游戲,也會跟朋友一塊“開黑”,從曾經的“吃雞”“屁股”,到現在沉迷“彩六”無法自拔。
中文DOS游戲網站上的那些游戲,他都聽說過,也有概念——它們很有名,它們是經典,只是因為時間的關系,他沒有經歷過那個年代,如果有機會,他也“愿意去體驗一下以前的老游戲”。
從自己常看的“月光博客”的一篇博文中,紫菜找到了第一批入選的10款DOS游戲,他接著在網上發現了一個DOS老游戲合集,將其中自己知道的游戲也加到了清單里,就這樣有了網站首批上線的那幾十款游戲。
這遠不能滿足老玩家們的需求。
在網友發來的各類意見建議中,除了反饋游戲運行時的Bug與問題,要求增加存檔、修改器等新功能,“怎么可以沒有這款游戲”是呼聲最高的請求。似乎每個老玩家心中都有一款老游戲,載滿情懷,而網站上卻“恰好”沒收錄。只要符合標準,又能找到資源,紫菜都會盡可能滿足他們的愿望。
除了提交游戲Bug、增加新功能,“請求加入某款游戲”是最為常見的反饋
比如那款為玩家津津樂道的18禁游戲《金瓶梅之偷情寶鑒》,就完全是因為有人留言:“DOS游戲怎么可以沒有《金瓶梅》?”紫菜把它加進網站后才發現這游戲尺度還不小。
麻煩的是找不到資源的時候。可能是搜索方法不對,很多游戲資源紫菜在網上找不到,找到的又有各種下載的門檻,這時候就必須依靠網友的助力。《艾蒂絲魔法大冒險》挺冷門,資源也不好找,最后是位一直保存著游戲的玩家將收藏了多年的文件發給了紫菜。
玩家們在郵件和GitHub上提及的這些老游戲,有些紫菜也曾聽說過,有些聞所未聞。紫菜能理解他們的請求:“這其中的感情是共通的。”對于這個偶爾會重新下載《紅警》玩一兩把的玩家來說,《紅警》《星際》《帝國》就是他的DOS老游戲。
丨 三
借著這次做網站的契機,紫菜補習了不少老游戲,他一邊做一邊玩,到測試游戲的時候,就會順勢玩一會。上手了不少經典后,沒有情懷作為依托,他感到了自己與時代的隔閡。
這些老游戲畫質不好,音樂欠佳,系統也有些過時,游戲性沒有現在的游戲這么好,還有不少單純拖長時間的設定,這些都是不小的門檻。
在這些游戲中,紫菜唯一通關的只有《仙劍奇俠傳》,除了個人興趣,能通關更重要的原因是有游戲存檔——網上找的《仙劍》資源附帶有存檔,具體到何時發生什么這樣的劇情和流程關鍵點。因為“難以騰出這么長時間刷圖”,他就靠這個跳關打通了初代《仙劍》。
對紫菜來說,《仙劍奇俠傳》就是一段“新的故事”
同樣的感受其他玩家也有過。紫菜曾收到反饋說,網站上的《暗棋圣手》有Bug。至通資訊于1995年發行的這款象棋游戲,內容就是玩家與電腦雙方輪流下棋。發件人覺得電腦用一分鐘來“思考”落棋,時間太長了。
在紫菜看來,游戲應該沒有問題,只是玩家沒耐心了。很多游戲,他可以針對Bug進行調整,但有些請求似乎超過他的預想,就像不少人發郵件跟他說的——某某游戲沒有修改器玩不下去。
“他們更多是為了看看劇情,找找當年的回憶呀什么的。”紫菜說。
與隨便玩玩打發時間,還要依賴修改器的玩家相反,不少老玩家相當認真,他們反映的Bug都是游戲中后期才會發生的,還有人希望紫菜加入存檔“跨設備互通”的功能。
常逛這個網站的老玩家跟紫菜不是一個年紀,他們多是30歲左右,已經成家立業的成年男性,這是紫菜根據后臺數據粗略繪制的用戶畫像。
盡管紫菜收到的郵件多是公事公辦的反饋,這并不妨礙一些玩家在其中流露私人感情。
面對這些凝聚著回憶的老游戲,以及這樣一個將它們集合起來的網站,有人說:“敝人對老DOS游戲大愛且有懷舊感情,如此方便和無私甚感謝。”有人說:“讓我們這一代只玩以前的老游戲、不愿意玩新游戲的人感到一輩子都有東西可玩了。”
還有玩家情真意切地寫下:“當我第一次登錄頁面的時候,仿佛打開了回到童年生活的魔盒……一個個曾經的快樂時光又出現在眼前。雖然已經是30多歲,難免淚目。”
網站走紅之后,紫菜收到了一些廣告合作的邀約,他全部回絕了。“本來做這個也不是為了賺錢,”紫菜說,“主要還是靠興趣。”做這個項目所需的編程技術就基本上是紫菜自學的。
丨 四
紫菜很小就對編程有興趣,這興趣源自他小時候對游戲的熱愛,以及連帶著,對游戲的載體——計算機生發的興趣。
小學五六年級那會,他跟父母打賭:“我考到第幾名你就給我買臺電腦。”具體是第幾名他記不清了,大概是考到前五名后,父母就遵守承諾買了電腦。紫菜已經忘了在上面玩的第一款游戲是什么,只記得那是一臺惠普牌筆記本,他當時腦海中就一個念頭:有了自己的電腦后玩游戲時間就更長了。
在中文DOS游戲網站以前,紫菜也做過幾個別的項目,完全出于個人興趣愛好,靈感來源也千奇百怪,“這個可能對自己有用,就會寫個程序放上去”。比如說,學校的Wi-Fi沒法保存用戶名、密碼,每次登錄時都要重新輸入一遍,他嫌麻煩就隨手寫了個程序。
這些都是紫菜因個人興趣制作的項目
某種意義上,這個網站跟之前的項目沒什么兩樣,最開始紫菜也只是為了做著好玩,但在這個項目進行的過程當中,他開始多了一些其他的感受。
面對網友要求加入某款游戲的請求,紫菜在搜索資源的過程中發現,“游戲有一點像是要失傳的樣子”。“這些老游戲類似文化遺產,再不保存下來真有可能再也找不到了。” 他說。
他現在設想的是為老游戲建一個數據庫,不但附有游戲的標題、年份和簡要介紹,還包括游戲的鍵位、說明書、秘籍等等,有點像是中文DOS老游戲的維基百科,可供人檢索查閱,還能直接點開玩。
但紫菜個人時間精力有限,后續批量導入的1800款游戲,他做不到一個個檢查調試,也沒法保證都能正常運行,其中不少游戲還沒有中文版。紫菜希望借GitHub的“開源共享”精神,讓更多網友參與到這個項目中來。
最能體現這種精神的或許是“污染”一詞,紫菜告訴觸樂,如果你引用了他人的代碼成果,就必須一并遵守前者的開源協議,這個過程就叫污染,在強制性開源的傳遞中,代碼由此不斷更新改進,與“重復造輪子”恰好相反。
前端是前人已有的代碼程序,后端是他人自行搭建的新網站,紫菜把自己在做的工作稱為“資源收集”。“以后別人再這塊也會方便一點。”他說。
這個暫時尚在構思中的想法,面臨的最大顧慮就是版權問題。盡管很多廠商已經倒閉,版權歸屬也多混亂無主,但這畢竟是一個灰色地帶。紫菜在投入制作前考慮過這個問題,但目前也沒找到一個很好的解決方案。
他現在只能參照國外同類網站的處理方式:在網站上先放一條免責聲明,如果有廠商發函就自行下架。在所有游戲里面,紫菜最擔心的是《仙劍奇俠傳》可能會被要求撤下,但慶幸的是目前還沒有廠商主動找上門來。
丨 五
開學忙起來后,紫菜沒時間打理網站,周末有空會更新一下,加加游戲,除除Bug,最近就剛解決了運行游戲需要CD的Bug。
1800多款游戲搬了上去,網站基本功能也都齊全了,提供手機瀏覽器的支持成了當前呼聲最高的請求。如何在手機上模擬鍵鼠的操作,紫菜對此已經有了大致的設想,只是他暫時抽不出空來實施,“最主要的還是沒有時間”。
另一項未來的計劃,是提供一個對普通人更友好的方式,玩家可以自行提交游戲內容,審核通過后自動上傳至網站,以此完成設想中的老游戲大百科。他打算先為共建網站撰寫一篇指南,但因為犯懶,這個計劃暫時也還在擱置當中。
面對網站超乎意料的熱度,紫菜有些誠惶誠恐,他反復強調的一句話是:“這個項目非常簡單,任何人都可以上手做……只是正好我有這個念頭就把它做了出來。”
他仍記得自己暑假時第一次通關《仙劍》的感受,沒有情懷,只是體驗,他感受到了那個年代的游戲是什么樣子。那是一種矛盾的心理,他有時覺得它太過落后,有時又會不免連連驚嘆:“哇,原來那時候就已經能做到這種效果了。”
每個玩家都有自己的游戲故事
紫菜并不奢求玩家會在自己的網站上得到什么,它可能只是一點快樂,又或者只是偷一會懶,光是這樣就已經令他心滿意足了。
“很多人成家立業后沒時間玩,但游戲在他心中還有一定分量,通過這個項目,他可以在瀏覽器里玩以前玩過的游戲,我感覺這樣就挺好的。”
紫菜希望對以下網站及個人表示感謝:
導讀:復古計算(Retrocomputing)是一個文化話題,復古計算社區是相當多元化的國際社區,容納了許多不同文化背景的愛好者。以目前的電腦硬件的性能來看,現代電腦硬件的性能不僅可以模擬大多數的古董電腦,甚至早已遠遠超越。有這么一個復古計算愛好者,就進行了一次偉(wu)大(liao)的嘗試:讓 35 年前的 Windows 1.0 “重生”,并嘗試了在 Windows 1.0 編寫的程序能不能在 Windows 10 上運行。究竟還能不能運行呢?讓我們來看看本文!
35 年前,在 Windows 上進行編程是什么樣的體驗?
有這么一個人,為了找出這個答案,決定親自嘗試。
紐約開發人員 Michael Casadevail 就是這樣的人,他一路冒險,追溯到 Microsoft 發布第一個基于 GUI 的操作系統 Windows 1.0 之時,他構建了一個虛擬系統,在這個虛擬系統中,他可以安裝 1985 年的原始軟件開發工具包,然后研究了一個簡單的“Hello World”程序附帶的傳奇示例代碼。
Casadevall 那一場令人著迷的實驗,讓我們得以能夠一瞥 Windows 最初的起源,不僅顯示了這 35 年來,事情發生了多大的變化,而且也顯示了有多少東西被保留了下來。
當然,追溯這一過程也是樂趣所在。
Casadevall 使用的是 Oracle 的 X86 虛擬化工具: Oracle VM VirtualBox ,在虛擬機中,他先加載了 IBM 的 PC DOS 3.3,而不是微軟的 MS DOS 3.3。他在 Soylent News 的一篇文章中指出:“我這樣做的原因是,當時的 DOS 還不是一個獨立的產品,相反的是,Microsoft 將授權 DOS OEM 適配開發套件,需要原始設備制造商(Original Equipment Manufacturer,OEM)創建自己的 DOS,如 Compaq DOS 3.3。”
很顯然,為了這次實驗,Casadevall 帶來了很多技術上的專業知識。他在自己的推特個人資料上將自己描述為 “復古計算愛好者” 和 “狂熱的信息安全黑客”。
“我個人對復古計算很感興趣,這已經不是什么秘密了, ” Casadevall 在網站上寫道,“我還記錄了個人電腦的歷史和演變史。” 在后來的一段視頻中,他稱自己是 “90 年代的孩子”。有一年圣誕節,他驚訝地發現,自己居然還有一臺運行 Windows 3.1 的 Packard Bell 計算機。
但為了做出這一段視頻,Casadevall 回到了更遠的過去……
這個項目給 Casadevall 帶來了一些挑戰。
Casadevall 寫道:“Windows 1.0 早在鼠標作為計算機硬件標準部件出現之前就已經存在了。” 事實上,很早的時候,Casadevall 就發現自己無法模擬出串行或總線鼠標。他想出了一個解決辦法,將鼠標驅動從 Windows 2.0 安裝軟盤復制到 Windows 1.0 安裝軟盤上,這樣,鼠標就可以在設置屏幕上顯示為一個選項。
Casadevall 在 Soylent News 上寫道:“第二個選項,我直到制作完視頻才知道,是使用 PS/2 版本的 Windows 1.0。就像那個時代的 DOS 一樣,Windows 也是授權給原始設備制造商,原始設備制造商可以根據自己的硬件進行調整。” 這是一個被遺忘的時代,它是如此原始,以至于 Windows 仍然必須通過鍵入 win 命令從 DOS 命令行來啟動。Casadevall 寫道,“有傳聞稱,Windows 將被移植到 XENIX 上運行,XENIX 是 Microsoft 基于 UNIX 的操作系統。”
當然,至少有一些更簡單的方法可以做到這一點。你可以使用 PCjs.org 這個網站,它是基于瀏覽器的仿真器,已經提供鼠標的支持。
他稱 Windows 1.0 “本質上就是 DOS 的圖形化程序,不過,通過深奧的魔力,它能夠協同多任務處理。這完全是通過軟件技巧來完成的……”
在對磁盤進行分區并安裝 DOS 和 Windows 1.0 之后,是時候設置開發環境了。Casadevall 寫道:“不幸的是,網上幾乎沒有關于如何做這件事的文檔。” 但幸運的是,OS/2 博物館掃描了一些原始的參考文件夾,“在仔細檢查磁盤時,我發現了一個安裝批處理文件”,它的起名恰如其分,就叫 install.bat ,并提醒用戶必須有至少 512K 的內存。此外,還需要一個軟盤驅動器,配置為驅動器 A,以及圖形監視器(單色或彩色均可)。
“如果你沒有上述設備或軟件,請放棄該批處理文件,” 文檔警告稱,“建議使用鼠標,但非必需。”
在 Soylent News 上的帖子中,他提到了更詳細的界面,“這樣的改進很可能是因為大多數用戶希望自己安裝 Windows,而不是預裝……”
但這是對那個世界的一瞥,在那里并沒有網頁分享相關信息。有關軟件開發工具包中文件的完整列表,請參閱 Disk 2 的 FILELIST.TXT 文件。
“由于可能只有在 1985 年才有意義的原因,腳本和 README 自述文件都放在 Disk 2 上,而不是放在 Disk 1。”
事實上,SDK 分布在 7 張軟盤上,其中 4 張軟盤需在安裝過程中插入。當然,這一切插入行為都是由名為install.bat 的文件觸發的。
第五張軟盤有 Windows 內核的調試版本,其余兩張磁盤有示例編程代碼,包括 Hello World 示例。
而且用戶還需要執行更多的安裝。“與后來的 SDK 版本不同的是,程序員有責任提供編譯器……” 他在帖子指出。安裝屏幕提示支持三個選項:
Casadevall 寫道,“非官方的(以及非經正式的),Borland C 的一些版本也可以用,盡管這沒有經過測試,除了在新聞組上的一些注釋外,似乎并沒有人做出任何記錄。更有趣的是,上述所有工具都是針對 DOS 的編譯器,對 Windows 沒有任何特定的支持。”
Casadevall 在視頻中指出,要找到 Microsoft C 4.0 并不難,不過,他需要再看一遍用戶手冊,才能知道正確的安裝方法。由于硬盤在 1985 年還不常見,因此 Microsoft 支持通過軟盤運行編譯器。硬盤安裝需要編輯這些關鍵的文件:CONFIG.SYS 和 AUTOEXEC.BAT,以及手動復制所有必需的庫和可執行文件。
編寫代碼還涉及到處理近指針(功能上與給定段內的普通 C 指針相同)和遠指針(8086 具有使用這些指針的特殊操作碼)。
“回調函數總是必須聲明 FAR,因為 Windows 在從任務管理器中跳轉到應用程序代碼時,需要加載正確的段。”
此外,Windows 1 清理堆棧的方式也有一些奇怪之處。
Casadevall 指出,16 位 Windows 應用程序 “普遍存在于共享地址空間中”,當時的 Windows 并不會立即回收標記為未使用的內存。即使在應用程序被終止后,它的某些部分仍然會保留在內存中。
盡管如此,經過多次通過軟驅交換軟盤和一些故障排除之后,Casadevall 使用文本編輯器編寫了一個快速的 Hello World 程序(用 C 語言編寫),然后用 Microsoft 的 C 語言編譯器進行編譯。顯然,它創建了一個 .exe 版本的文件,只需鍵入文件名 “hello” 而無需后綴名即可執行。該程序將立即打印出 NCommander 的測試信息。
“來自 DOS 的問候。”
Casadevall 還想嘗試另一個實驗:為 Windows 1.0 編寫的 “Hello World” 程序,在現代系統上還能運行嗎?
一些研究表明,通過運行 NT 虛擬 DOS 模型(即 NT virtual DOS mode ,NTVDM)與 Windows 的子系統(Windows on Windows,稱為 “Wow”),可以實現對舊版 DOS 和 16 位 Windows 程序的兼容性。Casadevall 指出,即使到了今天,NTVDM 仍然是 Windows 10 某些版本的一部分,不過他指出,Windows 10 轉向 64 位時已經完全放棄了對傳統 16 位的支持,并且不包括 NTVDM。
但 Microsoft 仍然提供了 32 位版本的 Windows 10,其中仍然包括 NTVDM。Casadevall 獲取了現在的 Windows 10 1909 版,并將其安裝到虛擬機中,然后試圖運行他為 Windows 1 編寫的 “Hello World” 應用程序。他寫道:“雙擊 hello.exe 時,會提示 Windows 需下載并安裝 NTVDM,這第一步就讓人看到了希望。在進行第二次的嘗試時,我可以確認,這是有可能實現的!”
“長達 35 年的向下兼容性!”
譯注:有關 Windows 10 的 NTVDM 和 16 位應用程序的支持,請參閱 Microsoft 的官方文檔說明: NTVDM and 16-bit app support 。
參考閱讀:
https://sourl.cn/Lp7QPP