在編程遊戲中體驗異化:《深圳I/O》

雖然這是遊戲,我卻不覺得自己在玩樂。它反而令我想起以前上班做精算師的日子。
Game ON

準備落筆寫《深圳I/O》(Shenzhen I/O)時,我的心情其實有點矛盾。


最初,編輯約稿是因為《深圳I/O》是一款與程式語言關係很深的遊戲,想找個會寫程式語言的人來寫。這部作品在 Steam 上獲得不少好評,它讓玩家體驗到程式員的工作環境。遊戲中接駁電路、選電子零件、編程等等内容都對玩家有一定技術要求——玩家扮演在深圳電子科技公司打工的外國工程師,工作職責是為指定的產品專案設計電路。需要設計的產品可能是計算機、VR 裝置或其它電子產品。遊戲目標是設計電路,成功發送客戶專案要求的輸出訊號模式。

例如第一個遊戲任務是設計閉路電視。玩家需要在可供選擇的電子零件中挑選出合適的部分放進產品機箱中,然後接駁電線、選擇電線接口和撰寫晶片程序。完成設計初稿後進入調試(Debug)階段,要以不同節奏檢視模式檢測輸出訊號,找出並作修正電路和程序中所有潛在錯誤。如果你的設計方案能讓產品成功發放指定的輸出訊號,就算成功過關,公司會分析玩家電路的製作成本、運作功率、程序效率等等數值。然後「同事」就會將下一個產品專案的要求發送至玩家的工作郵箱。

是不是真的很像上班?

歡迎加入公司。
歡迎加入公司。

遊戲的重點是讓玩家能「入戲」地體驗工程師的日常工作。遊戲初始畫面是臨場感十足、可俯瞰深圳大街的辦公室。工作期間,你會不斷收到同事的電郵,遊戲附有仿真度很高的公司內部工作手冊,讓玩家工作時查閱——不過電路設計過程沒有一點提示,全靠玩家自行解決。作為一隻大小只有400Mb 左右的遊戲,它營造了一定的沉浸感。網上玩家特別讚賞遊戲的電郵系統與工作手冊,不少人甚至認為這些電郵本身就很有敍事深度。

的確,《深圳I/O》在技術層面很優秀,但我卻無法在遊戲中深刻體會到硬件與編程帶給我的樂趣。這樣說吧:雖然這是遊戲,我卻不覺得自己在玩樂。它反而令我想起以前上班的日子。

電路設計與程式語言

《深圳I/O》的重點是設計電路,玩家要接駁不同的電子零件,以組合語言(Assembly Language)為每一塊晶片編程。不得不說,對我這類 geek 而言,編寫組合語言還是很有趣的,甚至是有型的。

Geek 和常人不一樣,我們寫的語言愈「低階」,正常人愈看不懂,我們就愈高興。用電腦科學界術語來說,人類的自然語言是高階語言,是「to the human」 的語言,而組合語言是一種「接近機械」(to the metal)的語言,即是說相比 Python、Java一般常見的高階程序語言,組合語言更原始,也更接近電腦硬件的真實運作邏輯。組合語言甚至比用來撰寫運作系統的 C 語言更為低階,幾乎是微型處理器處理演算法的方式。

遊戲中,玩家必須要考慮將數據暫存於晶片上哪個暫存器(register)上,考慮如何儲存及取用數據——這都是組合語言的考量。光是這點,已經足夠讓 geek 們向其它人推銷這款能夠編寫「幾乎是最原始程序語言」的遊戲了。

從最簡單的工作做起。
從最簡單的工作做起。

雖然寫組合語言很有型,但玩下來感覺像上班多於遊戲:遊戲只要求玩家的電路設計成功配對輸出訊號,而到底設計的產品是閉路電視、計算機還是 VR 裝置,毫不重要。最大的問題是《深圳I/O》幾乎沒故事性:如果我在可以角色扮演壞老闆,要設計閉路電視監察員工,保證他們連上廁所抽個煙都逃不過我的法眼,那作為玩家我最少還有一點做壞事的快感。

技術型遊戲其實可以很好玩,很多FPS(第一身射擊)遊戲都有找零件砌槍的環節,但重點是砌完可以殺怪。《深圳I/O》令我有點沮喪的原因,就是在遊戲裡工作的目標就是工作本身,簡直像現實世界一樣令人覺得人生沒有意義。

模式配對的異化——產品設計 vs. 工程配對

馬克思有所謂「異化」的概念:工人感到失去對勞動意義的控制,更甚者工人感到工作從勞動手段變成目標本身。老闆叫你做甚麼就做甚麼,人只是一條長長生產線中一粒螺絲。《深圳I/O》帶給玩家的感覺有點相似,裡面生產的不同產品只是不同形狀的數位訊號或數字串,工作本身的意義為零。

工業革命後,人類的生產分工愈來愈細,人的異化也變得更明顯。這種意義感的喪失當然不只是電路設計從業者面對的情況。所有做工程配對的人都應該明白我在說甚麼。設計產品的人已經定義了產品的目的、功能與真實意義,負責配對的人只是在工程技術層面上達到這些數學要求。生產出來的產品到底是甚麼都跟配對者無關,這也算一種異化了。

作為一名前精算師,《深圳I/O》居然讓我回想到以往做人壽保險精算定價的日子。壽保公司的「產品設計」(product design)與「定價」(pricing)往往由兩批不同的團隊負責,產品團隊決定壽險產品的保障範圍、收取保費以及理賠的方式,「定價」精算團隊在數學層面上按照產品團隊定下的現金流及風險模式進行配對,以決定保費及儲備的水平。精算業的定價工作就是一種「工程型」的模式配對工作,在最極端的情況下,定價精算師根本不需仔細理解壽險產品在真實世界的意義。精算師就好像《深圳I/O》裡的玩家,只要將數字計算到符合指定要求就好。就好像一個人在傢俱廠工作,每天生產一條條木條,但最終做出來的是床還是椅子都跟他無關。

這也是為什麼我有點不理解為甚麼我連玩遊戲也得回到以往那種工作環境——還沒有薪金……起碼,對我來說,遊戲始終不是真實的工作,兩者追求的終極目的不同。那為甚麼我居然在遊戲中感受到了工作的異化?我自己是百思不得其解。

著名的遊戲設計師 Sid Meier 說「遊戲是一系列有意義的選擇」。這方面《深圳I/O》就不及格了:基本上故事線是線狀的,也就是說除小部份「額外關卡」,故事是一條直線幾乎沒有分岔點。玩家每成功設計一個電路,便會收到同事的新電郵,內裏是下一關的產品要求。這種簡單設計太像手機遊戲。設計出來的電路效率和成本都不會影響之後關卡出現的順序與方式。

越來越多的電路。
越來越多的電路。

這樣設計的確會讓玩家專注在編程與電路設計的技術層面,但也輕視了遊戲整體結構的重要性。作為對比,同樣是「上班族」類模擬遊戲的《請出示文件》(Papers, Please),扮演海關人員的玩家作出工作決定的過程——要否放面前的入境者過關,真的會影響玩家在威權體制下的命運與故事進程方向,樹狀的遊戲劇情結構比《深圳I/O》的線狀結構有趣得多。

屬於程序員的接龍——麻雀接龍

雖然講了那麼多《深圳I/O》的壞話,還是不得不讚裡面異常出色的「麻雀接龍」小遊戲。雖說是附屬遊戲,但麻雀接龍是《深圳I/O》的重點組件。這個出色的小遊戲得到大量玩家的正面回嚮,並且在《深圳I/O》推出3個月後就被作為獨立遊戲——《深圳紙牌》發行了。

有創意的麻雀。
有創意的麻雀紙牌。

麻雀接龍的設計極之簡單,也極之聰明:它是一個體現程式語言本質的遊戲。

麻雀接龍與經典微軟接龍(Classic Solitaire)十分相似,遊戲賭桌展列出八疊紙牌,玩家要將所有點數紙牌移動至賭桌的右上方。裡面的牌是中式筒索萬三色麻雀紙牌再加十二張中發白。所有紙牌自開局就面朝上讓玩家可見,沒有微軟接龍中的隱藏牌叠,但有三個紙牌暫存位置讓玩家寄放無法處理的紙牌。玩家需要連續地從大至小以不同花色排列的牌,這就算是有效接駁。十二張中發白紙牌在整個遊戲過程中不能被接駁,如果四張同款牌都暴露於牌面就可回收,代價是失去一個暫存位置。

麻雀接龍與微軟接龍表面看來只有些微不同,但正正是那數個關鍵改變令麻雀接龍成為一個聰明得多、也困難得多的遊戲。

規則上麻雀接龍比微軟接龍多了很多限制。十二張中白發牌是遊戲主要難度來源。牌只有八疊,攔路的中發白卻有十二張,即使千辛萬苦將四張同款牌置於牌面,收起它們的代價竟然是三個暫存位置之一,可謂十分昂貴。我開始幾局都失敗收場,慢慢掌握竅門後成功率才略高於五成。麻雀接龍沒有向玩家隱藏的牌,所以沒有絲毫幸運成份,是個燒腦的硬核遊戲。這是一個隨機性難度和組合計算量難度之間的取捨交易(tradeoff)。

這種難度取捨其實有點違反人類天性。動物在大自然世界獵食講求運氣,這一刻很難確知下一刻會出現甚麼隨機事件。獵食講求一擊必殺,張開口咬下去就是,頂多就是怕周圍有比自己更凶猛的捕食者,所以需求的計算量極低。相反來說,麻雀接龍那種思維就比較像政治暗殺,需要從頭到尾都思慮周密,嚴謹佈局。其實精確計算的思維模式自工業革命後才興起,又在上世紀50年代電腦誕生後才大行其道。人類本身還是很靠運氣的動物。

麻雀接龍多出3個暫存位置讓玩家暫存無法處理的紙牌,而這3個暫存位置正正發揮了組合語言中暫存器(register)暫存數據以換取運算空間的作用(詳見上文介紹組合語言的部份)。也即是說普通接龍那種玩法是行不通了。玩家必需事先想好數步以至十多步,像玩圍棋般嚴謹地執行「接龍程序」。在Steam討論區上更有人討論麻雀接龍的開局在甚麼情況下才是數學上可解的。這些都突顯了麻雀接龍的程序本質。

尾聲

「All work and no play makes a good boy dull.」

做不完的工程。
做不完的工程。

《深圳I/O》模糊了工作和遊戲的界線,對於想透過遊戲逃離現實的玩家(如我)確實有點摸不著頭腦。如果有個遊戲要我扮演科研人員,要求我檢視理論、做實驗、投寄論文和準備座談會報告,都肯定比塞一堆論文給我再叫我堆砌數學公式有趣吧?正如我在《三國志》扮演諸葛亮,遊戲也總不會讓我每天只批改奏章,即使那是孔明本人真實的工作。我甚至覺得,《深圳I/O》的工程師幹的有點像大衛格雷伯(David Graeber) 講的bullshit job,如果將這種工作視為人生意義所在,恐怕很快會瘋掉。

(作者為美國威斯康辛大學研究生,研究專業為人工智能——深度學習、機械學習以及電腦視覺。)

編輯推薦

讀者評論 5

會員專屬評論功能升級中,稍後上線。加入會員可閱讀全站內容,享受更多會員福利。
  1. 支持这栏目

  2. 寫得太好了,謝謝作者,謝謝端。

  3. to 无需多言
    關掉又重開了。還是有很多讀者想念這個系列的

  4. the one who is alienated won't be able to fell any joy, even from game!

  5. Game On这个栏目当初说要关了,最后一期的时候我还说:天啊,终于结束了.....
    为什么现在它还在