Portal 2

初代Portal空前成功,出續集是意料中事,2011年Portal 2再下一城,橫掃多個遊戲獎項。遊戲核心玩法依舊,打開藍橙兩度隨意門,找方法從起點走到出口。不過今次加入新元素,反射鏡,彈跳板,光橋,力場隧道,三種不同的啫喱液體,藍色彈跳,橙色加速,白色開洞,玩家要用盡物理常識去解謎。不少玩家投訢初代故事太短,這集加入大量新場景新關卡,單人任務要差不多十小時才破關,另外還有二人合作任務,不過可惜找不到人陪我玩。

關卡的難度適中,我只是其中一關要偷看攻略,不過看完我都覺得自已白痴,這麼簡單為什麼看不到。故事發生在初代後的幾百幾千年,主角從冬眠裝置中睡醒,整個實驗室變成癈墟。畫面場景比旁白更能交代背景,頭幾關重玩初代關卡,不過關卡已破爛不堪生滿植物,不知經過了多少年,很有蒼涼末世的感覺。遊戲分為五部份,組合成一個完整故事,交代Aperture Science的過去,GlaDOS的真正身份,不過主角身世依然一空白。在遊戲中額外附送的漫畫,倒有提及主角是人造人,GlaDOS造出來的實驗品。

第一部份主角睡醒後要逃出實驗室,關卡很容易,主要是讓玩家熟習操作。第二部份宿敵GlaDOS復活,主角再一次被迫參加實驗。第三部份與初代後半相似,主角走進實驗室後台,再一次要打敗GlaDOS。首三部份有個很低B煩人的人工智能Wheatly插科打葷,打倒GlaDOS換上Wheatly當電腦核心,一如所料主角一手製造了新大佬。

第四部份佔遊戲超過一半篇幅,主角掉進了實驗室最低層,玩懷舊復古七十年代風格的舊實驗,順候交代實驗室的來龍去脈。背景故事半搞笑半認真,聽下笑完算便了,反正與關卡解謎沒有直接關係。GlaDOS更變成了薯仔電池,附在開門槍上不停吐嘈,與之前的邪惡態度反差很大,為故事添加不少歡樂。最後一部份從地底回到現代,理所當然的打大佬完場。最後一戰比初代容易,值得一讚是最後一擊設計很有心思,不是這麼容易想到,但又十分合情合理。

這集雖然依舊好玩,依舊贏市面其他遊戲贏到開巷,甚至平心而論可玩性比初代更上一層樓。可是始終活在初代的陰影下,初代的理物解謎玩法空前創新,獨腳戲的說故事表達手法充滿驚喜,這集只是繼續將那些優點發揚光大。論在玩家心中留下的印像和影響,遠遠及不上首次接觸玩初代時帶來震撼。

 

Software Engineering for Embedded Systems – Mark Kraeling, Robert Oshana

說起寫程式,一般人會聯想到寫手機apps,架網站,電子遊戲,在PC或server跑的傳統應用程式。其實生常生浩中能接觸的程式,只佔總程式數量的小部份,有更多程式躲在我們看不見,摸不到的地方。從小至玩具,電庭電器,大至汽車,飛機,工業機械,無一不是依靠內嵌軟件(embedded software)去運作。一個手機軟件幾十萬行code已經很巨型,強如MS Office或Windows也不過數千萬行code,可是一台最新款汽車或飛機,輕易便過一兩億行code。

最近因工作需要開發embedded軟件,只好臨急抱佛腳看書惡補。這本Software Engineering For Embedded Systems是行內的天書,從最初的project planning,requirement,hardware integration開始,一路講到落手寫code的如何揀embedded OS, real-time system的特性,不同種類的optimization, multi-core, 到testing strategy,management, regulation standard都有講。全書一千二百頁,寫給行內人看,或用作大學課本,沒有一定的程式開發經驗,並理解CPU的結構,基本上完全看不明白。

Embedded軟件與其他一般軟件性質完全不同,最大分別是real-time和reliability的限制。舉例若寫個手機遊戲,某段code跑得慢,畫面甩了一兩個frame,不是什麼大不了的事情。甚至程式有bug,在某古怪的corner case下hang機,只要不太過離譜又fix得快,用家也不會過份苛責。可是embedded軟件就不同了,跑得慢或有bug可以死人。如汽車的ABS系統,軟件反應時間必需是幾毫秒以內,而且任何情況下都不能出錯。早幾年Toyato的控制油門軟件出了問題,儘管只是幾百萬份之一機會出錯,但只要有一宗幾乎死人,便要全線recall兼巨額罰款。

寫一般軟件的程式語言五花百門,寫embedded軟件則是清一色C/C++,佔超過九成市場。當軟件講求速度和predictability,又要直接去操控硬體位址,C這個古老的低階語言,基本上上是唯一選擇。全書最精彩的章節是講real time OS,講解interrupt service routine, context switch, thread priority,semaphore, mutex, mailbox等embedded軟件最基本的單元。之前我死啃threadx的document時看到一知半解,這本書便把那些慨念解釋得十分清楚明白。另外multi-core那一章也很好看,講解不同的memory架構,程式parallelize要注意的事項,與super computer軟件有不少相同之處。不過目前工作上還未用到,只是停留在認識理論層面。另外講軟件安全standard,如ISO 26262(汽車),DO-178C(飛機)等的章節,悶雖然有點悶,但那些standard中使用technical terms分類,也是必需要認識。軟件界近年流行Agile,書中也有一章講Agile和embedded軟件開發,不過我覺得傳統的project managment比較適合,embedded始終有太多外在因素的限制。

很多人說做IT寫軟件入行門檻底,技術更新速度快,很容易被後浪取代。Embedded軟件則接近傳統工程行業,很多知識大學只教皮毛,寫程式很講實戰經驗, embedded debug更是一門易學難精的藝術。C語言和CPU架構基本上過去十幾二十年沒有大轉變,在可見的將來亦不會有甚麼大轉變,工作環境相對穩定和較難取代。讀電腦科目的人,不妨考慮一下行embedded這條路。

Portal

Portal可說是經典遊戲中的經典,在FPS等於射擊遊戲的公式中,開創唯一的FPS智力解謎玩法。當年不記得什麼原因,玩了一半沒有玩完,剛巧這陣子Steam大減價,便買回來花幾日打爆機。雖然是2007年的老遊戲,畫面完全不覺得過時,不知是畫面已經進步到,不留心便看不出分別的地步,還是我近來常手機遊戲,習慣了手機級數的畫面質素。

遊戲的玩法很簡單,玩家操控一枝傳送門槍,可以射擊牆壁地下天花板,打開藍橙二色兩度傳送門,讓玩家從門中穿過去。每一關設有不同的障礙,玩家要利用傳送門,從入口走到出口。謎題設計由淺入深,最初的很簡單,如沒有樓梯要如何走上二樓(在一數打開一面門,在二樓打開另一面門,然後行過去),到中段要應用物理學常識,結合傳送門加慣性引力去長距離跳躍,去到後期打機械炮台,(在它地面開門讓它掉下去,或者在彈道前方開門讓它自己射自己),謎題變化多端難易適中,最難的試多幾次一定過到,非常富有趣味性。可惜遊戲短了點,若果一口氣直踩,大慨兩三個鐘便可以爆機。

解謎玩法固然創新吸引,讓這遊戲名垂千古,是其充滿黑色幽默的故事。其實也算不上是有什麼故事,只不過是人工智能GlaDOS的妙語連珠的獨白。主角參加傳送槍實驗,人工智能責負解釋實驗內容,開始時實驗很正常,後面的實驗連番出錯,先是很細微的門打不開,然後實驗室出現殺人自動武器,而實驗室本身亦出現崩壞,後台寫上很多塗鴉警告。人工智能仍然表現友善,還打趣地說實驗結果有蛋榚吃,網絡名句「蛋榚是謊言」(The cake is a lie) 便由此而起。打破十九關到達終點,等候主角只是死亡火海,而然遊戲下半部才正式開始。主角展開後台逃亡之旅,人工智能開始連環吐嘈,最後打大佬單挑人工智能本體。遊戲完結的片尾曲Still Alive同樣經典,GlaDOS的聲音實在太有性格十分突出,為不少其他遊戲,電影,電視客串玩惡搞,人氣高企。

玩完第一集,很自然接著玩第二集,行文間正與Portal 2苦戰當中。趁第一集的記憶未被第二集重寫時,要趕快把評論感想寫下來。

Atlas Shrugged – Ayn Rand

人不欠我 我不欠人

Let me give you a tip on a clue to men’s characters: the man who damns money has obtained it dishonorably; the man who respects it has earned it.

若果說社會主義的代表作是馬克思的《資本論》,那資本主義的代表作,Ayn Rand的《Atlas Shrugged》便當之無愧。這本厚千多頁的小說,描述一個架空歷史的美國,社會主義和左翼思想成為政治主流,政府逐步扼殺私人企業和自由市場,國家如何從繁榮走向衰亡。性質有點像George Orwell的《1984》一樣,兩本都是寓言小說,分別是讀Orwell會感到絕望,而讀Ayn Rand則看到希望。她藉著筆下人物反抗政府的爭扎,陳述她的客觀主義哲學思想,高舉理性自私,個人權利和資本主義等價值,以古典自由主義精神,對抗歪曲人性,漠視現實的左派思維。

現今社會,資本主義一詞彷彿帶有貶義。Rand筆下理想的資本主義,接近亞當史密夫的原形。資本家不是金錢遊戲的莊家—不事生產只慬錢搵錢,而是帶領社會進步的工業家和發明家,憑知識去創造財富。資本主義的精神,在於私有產權,財富由誰生產出來,所有權便屬誰。交易必需出於雙方自願,以暴力威嚇手段去強行徵收等同搶劫。社會主義的「各盡所能,各取所需」,聽起來很美好,但實行起上來,卻是無生產力的人在勞役有生產力的人。書中有一段故事講述,車廠老闆受到大愛的感召,決定在車廠推行社會主義。薪金不是論功行賞,而是看誰有需要,要鬥慘才獲分配金錢。除最基本的食飯和生存之外,老闆說你沒有其他需要,你便休想拿取最低以外的工資。結果有能力的員工,不甘受到剝削,辭職另謀高就,車廠挨不了多久便倒閉了。

一間公司推行社會主義,員工可以辭職不幹,但當全國都推行時,工作崗位由政府分派,人民又可以逃往那裏呢。在「人人為我,我為人人」的國度,每個人只問分配不問生產,只講權利不講義務。當你看見別人比你窮,你會對所擁有的感到羞愧,有兩塊麵包不分他人一塊讓你內疚。當你看見別人比你有錢,你會痛恨他生活比你好,憤怒他不與你分享財富,從而想著如何把他的財產搶到手上。書中的主角John Galt,建立高科技的世外桃園,以$標誌為旗幟,帶領資本家反抗政府的苛政。他的武器不是暴力而是信念,他主張「人不欠我,我不欠人」,他以理念感召資本家和有生產力的人一起大罷工,從社會中完全抽離,撤退到世外桃園中,過著自給自足,公平交易的生活。當社會上有生產力的人都走了,剩下來沒有生產力的人,連養活自已也成問題,掠奪者再沒有可供掠奪的對象,社會主義政府最終難逃經濟崩潰。

Ayn Rand的理性自私常被人誤解為冷血無情,其實她的理念正確的解讀,乃為每個人都擁有自身的主權,延申至其生產的財富之上,亦同樣擁有絕對的主權。不論是勞力或金錢,沒有人能要求你無條件幫他。若以暴力手段強迫你去幫他,那就是強盜,若以罪惡感去讓你良心受責而幫他,那就是小偷;兩者之惡,只是程度之別。Ayn Rand並非說我們不應幫助別人,而是幫助別人應是等價的交易,換取的不一定是金錢,可以是親情,愛情,善心等無形財富。若果幫助別人非出於自願,兼且幫助完了並不快樂,那為什麼還要去幫忙呢?我沒有欠他甚麼!反過來若他因為我不幫而怪責我,那樣的人並非可以公平交易的對象,應該索性與他斷絕來往。在人與人之間很顯淺的道理,當提升至政治理念的層面,為何會180度反轉過來。左派財富再分配的政治理念,不正就是有生產力的人,奉旨要幫不事生產的人嗎?

這部書的評價十分兩極,左派固然恨之入骨,從作者的中心思想,到寫作技巧,無一不被批評得體無完膚。反過來對左派思想反感的人,不懂如何反擊左派「無私奉獻,大愛包容」的歪理,從這書能找到完整的道德論述,從此可以理直氣壯向左派說不。美國不乏商界菁英和大企業CEO,公開讚揚此書的思想,對他們人生產生深遠影響,而其中最出名為前聯儲局長格林斯潘。讀者要有心理準備,這本鉅著並不容易讀,我前後花了一年才看完。此書在說故事的外衣之下,迫使你重新檢視自已的值價觀,思考人生和社會的意義。若能閱畢全書,思想頓時啟蒙開竅,明白金錢並非萬惡之源,金錢乃生產之成果,人活著的見證。

何謂自私?在日常用語中,「自私」(selfish)是一項罪名,不顧別人,不是好人。Rand的「自私」並非如此解釋,自私的人一樣會顧及別人,只要前題是基於雙贏的交易。自私的相對是「專門利人,亳不利已」的利他主義(altruism)。利他主義的最大問題,是要不求回報自我牲犧,完全否定自已的權利。當一個人否定自已的人權,那他還算是一個人嗎?是故自私為人,利他非人也。

題外話,Ayn Rand到底是九流的哲學家,還是九流的小說家呢?總不成兩者都是九流吧,果真如此她早應被世人違忘。在哲學學術界的共識是,她的客觀主義基本上不入流,理論粗疏,主流哲學家連回應也費事。偏偏任何一本書哲學入門書藉,介紹二十世絕哲學家時,Ayn Rand必定佔一席位。

以小說評論來說,此書說故事的技巧,可謂完全不合格,描寫嚴重違反常理,故事欠缺主讓讀者追看的情節,不外是流水帳般事情圍繞著女主角發生。故事的主線,若把它極度簡化,就是一個中女的愛情狂想曲。女主角是個家底超級有錢,辨事能力超強的女強人,人到中年依然剩女,但不知何解桃花運極旺,裙下之臣每個都是了不起的人物。他們沒有理由地愛上她,圍著她團團轉,計有:青梅竹馬一號,表面是富二代花花公子,實際是反抗組織的核心幹部;青梅竹馬二號,好打得的下屬兼兵仔,最後為她死埋;情夫有夫之婦鋼鐵大王,大慨在書中等同李嘉誠級數的富豪;最後當然正印男主角John Galt,天材發明家兼反抗組織的領導。

不計書中的科幻「發明」,超級合金和永動發電機,故事中實在太多想理然爾的劇情道具。其他閒角和配角,必定自動配合主角們的需要起舞,他們出場的唯一作用,就是襯托主角們的正確性。例如其中一段情節是在雞尾酒會上,主角之一發表長達半小時的偉論,其他賓客竟然乖乖聽他演說,沒有人把他當瘋子扔他出去。又例如另一主角駭客騎劫總統的電視演講,向全國人民發表三個小時的聲明,竟然沒有人索性熄電視去睡覺。偏偏這兩篇演說,金錢演說和John Galt的話,正是全書最精彩之處。

其實故事本身根本不是重點,故事不過是用來搭建舞台,讓書中角色對話,去辯証客觀主義,並身體力行。不要當這書是小說來看,應把它當做拍拉圖式的對話錄般來讀,才能感受本書的精髓。一場又一場精彩的思辯,沉悶的過場故事算不上什麼。在中國文學傳統之中,以文載道是小說的最高界境,無異Ayn Rand做到了。

作者簡介:Ayn Rand俄裔美藉哲學家,小說家和劇作家,憑著其客觀主義(Objectivism)哲學理論,被譽為二十世紀美國最具影響力的思想家。她的兩部小說Fountainhead和Atlas Shrugged,長據美國暢銷經典小說榜首,更是不少學校的指定課外閱讀。

原文刊於《閱刊》十一月號。

JoJo 奇妙冒險 第二季(動畫版)

3

終於等到了JoJo第三部的動畫版,五十二話分兩期播,中段小休了一季。第一期由日本打到印度,第二期是埃及篇。第三部是JoJo最顛峰之作,空條承太郎和白金之星,沒有看過漫畫或舊動畫版,替身戰這麼經典,任何稍有涉獵日漫的也必定聽過。

動畫版跟足原著拍,我雖然很多年前看過漫畫,但內容差不多完全忘記了,所以可以當全新故事來看。不過就算未看過,故事其實很公式易估,不外乎每集打不同替身敵人,由日本一路打到埃及,最後打大佬Dio救老母。劇情雖然千篇一律,戰鬥過程才是主菜,鬥智鬥力出奇制勝,主角最後必定會贏,但逆轉勝的關鍵一剎,觀眾亦不禁佩服荒木飛呂彥的神來之筆。

不知我習慣了風格,還是導演收歛了些,第一二期那些漫畫名物形聲字,今期沒有那麼礙眼。今期的戰鬥場面,有些改篇得比漫畫好看,例如伊奇大戰冰鳥,搞笑的預言兄弟,賭徙和機迷兄弟,反老頑童替身等等,但有些戰鬥則頗為沉悶,儘管那不是導演的錯。原著是漫畫,悶場可以跳看,對讀者影響不大,但動畫把所有對白演出來,感覺有點拖戲。以前看漫畫時不太覺,有不少戰鬥頗為惡搞,不知是作者有意還是無心,總覺得荒木飛呂彥不太擅長玩幽默。

一直很期待看最後一戰,白金之星對世界,漫畫其他內容忘記七七八八,但這段實在太經典印像深刻。停止心跳,多出五秒等絕橋,完美重現很感動。劇中時間只有數分鐘,動畫前後打了兩集。把時間停止加起來也沒那麼長,明明是只有十秒的時間,可以花半分鐘講一大堆對白。漫畫沒有時間限制的問題,變成動畫就很古怪了。

第四部已決定動畫化,明年四月播映,我當然會繼續捧場。反正是改篇現成漫畫,JoJo系列可以長拍長有,若果收視OK,希望有機會看到第六部稌倫篇,那是繼第三部後最好看的。