科技愛好者週刊(第 168 期):遊戲《底特律:變人》

阮一峰發表於2021-07-23

本雜誌開源(GitHub: ruanyf/weekly),歡迎提交 issue,投稿或推薦科技內容。

週刊討論區的帖子《誰在招人?》,提供大量程式設計師就業資訊,歡迎訪問或釋出工作/實習崗位。

封面圖

東京奧運村的運動員宿舍,兩人一間。看上去有點簡陋,沒有為每個人配一張桌子,只有床頭櫃,上面也沒有吉祥物或者綠植。(via

本週話題:遊戲《底特律:變人》

本週談談遊戲。去年雙十一,我抱著巨大的期望,買了熱門遊戲《死亡擱淺》(Death Streading)。付款時,看見很多老遊戲都是二折,隨手又挑了一部《底特律:變人》(Detroit: Become Human)。

如今,我必須說《死亡擱淺》真是太糟糕了,令人大失所望,情節、人物、遊戲玩法一無是處,根本玩不下去。我斷斷續續堅持了幾個月,現在已經放棄了。倒是《底特律:變人》出乎意料的精彩,我給它滿分,真的是一部傑作。

《底特律:變人》是2018年的遊戲,可能很多朋友都已經玩過了。如果你還沒有,我強烈推薦。下面是它的預告片,大家可以感受一下它精良的製作,以及蕩氣迴腸的情節。

它的故事非常老套。2038年的底特律,機器人突然有了意識,希望得到人類的平等對待。玩家輪流扮演三個不同的機器人,經歷他們的遭遇。這個遊戲精彩的地方是電影大片級別的製作水準,每個場景都非常漂亮,每個片段都經過精心設計,明顯有分鏡頭劇本,每個鏡頭拍什麼,都是安排好的,剪輯得非常明快,扣人心絃。

出人意料的是,所有主要人物都不是計算機生成的。而是由真實演員扮演。下圖是遊戲的女主角和她的真人演員。

遊戲畫面其實是真人表演,進行動作和表情捕捉,再新增背景,最終生成的。

它是一個情節類的遊戲,動作和解密的成分非常少。故事的每一個節點,都會給出幾個選項,讓玩家選擇下一步,比如下圖是選擇要去哪個地點,不同的選擇會導致不同的結局。

與其說這是一個遊戲,不如說是一部可以玩的電影,長達10個小時。玩家探索這個未知的世界,認識裡面的人物,決定故事的走向,體驗預設的情節。

更棒的是,這個遊戲不僅有情節,還很抒情,有時候,不經意之間我就被打動了。舉例來說,走過廣場的時候,你會看到一個吉他歌手在路邊唱歌。那只是一個環境人物,你完全可以忽略他,徑直走過。但是,如果你停下腳步,站在一旁把這首歌聽完,就會發現這是一首非常好聽的歌。

我特意去查了歌的名字,叫做《城市的雨》,是遊戲開發公司向一個加拿大歌手購買的,下面就是遊戲裡面的唱歌影片,以及歌詞。

Motown Rain, Fall on me again, Around my feet.
城市的雨又落下,就在我的腳邊。
Stuck on your doorstep, Hallway light, Trace your silhouette.
徘徊在你的門口,屋裡的燈光,尋找你的身影。
Motown Rain, Fall on me again.
城市的雨又落下。

大多數遊戲追求勝利的快感,但是《底特律:變人》的遊戲目的,是讓你去體驗他人的命運,思考自己的立場。推動你玩下去的動力是你的好奇心,想要體驗更多,想要知道後面的情節、人物的結局。我通關已經一個多月了,但有時還是會想到這個故事,沉浸其中。

這個遊戲是一個最好的例子,說明了 電子遊戲這種東西,不僅僅是娛樂和生意,而是一個很寬泛的載體,只要你想,就有辦法讓它承載各種不同的東西。 完全可以讓它像小說一樣,用來表達作者的愛憎和抒情,或者像哲學家一樣,引發人們對社會和命運的思索。

這種另類的、不以競技和對抗為目的的遊戲,真的很少。如果你知道這樣的遊戲,歡迎留言。

Webpack vs Vite 剖析

Webpack 是老牌的前端構建工具,目前依然是正式專案的標配,屬於前端程式設計師必須掌握的技能。但是,由於複雜的配置檔案和緩慢的構建速度,它一直被人詬病。

Vite 是新一代的構建工具,由 Vue 官方團隊推出,這一年快速躥升,許多專案都開始嘗試。它強調快速的構建速度和易用性,正好都是 Webpack 的痛點。

本週的課程資料就是 《Webpack vs Vite 深度剖析》,從原理的角度比較這兩種工具。幫助初學者掌握下面幾個關鍵概念,從而理解構建工具到底是什麼,上面兩種工具的區別從何而來。

  • 抽象語法樹 AST
  • Babel 的作用
  • 什麼是模組的依賴關係
  • ES Module 與 CMD 兩種模組格式的區別
  • 不同模組如何打包在一起

明白了上面這些概念以後,主講老師會指導大家,自己實現一個迷你版的 Webpack,體驗一下構建工具的底層實現。在這個基礎上,比較 Webpack 和 Vite 兩者的異同。

微信掃描下方的二維碼,瞭解詳細資訊。報名後,新增助教老師的微信,就可以領取這份資料。

這份資料由國內著名的培訓機構"開課吧"提供。另外,他們現在每週都有直播公開課,屬於體驗課程,可以隨意選聽。下面是本月的課程安排,詳細內容諮詢助教老師。

科技動態

1、

去年11月,長沙市望城區正式啟用"電子告知單",對於違法佔用消防車道的車輛,會貼上臉盆大小的"電子告知單"。

這個裝置的吸力可達到300公斤以上,會牢牢吸附在車輛表面,自己根本拿不下來。只有當車主將車輛駛離現場,並接受相應處罰後,才可以取下來。

2、時速600公里的磁浮列車

7月20日,四方機車公司在青島釋出世界首輛時速600公里的磁懸浮列車。一旦投入應用,這將是當前世界速度最快的地面交通工具,北京到上海僅需2.5小時。

磁懸浮列車的最大困難,在於造價大大高於高鐵,以及與現有軌道不相容,需要重新建設,很可能是全程高架。另外,由於速度太快,路線必須儘量保持直線,選線難度也很大。

3、

Chromium 瀏覽器宣佈,將把 HTTPS 協議的鎖標誌,改成一箇中性的箭頭(下圖),以防使用者看到"鎖"以後,誤認為該網站是經過認證的可靠網站。

實際上,HTTPS 協議只能保障資訊傳輸是安全的,並不能保證網站本身是可靠的。

4、

7月5日,墨西哥鑽井平臺發生天然氣洩漏,出現"水中大火"的奇景。經過5個小時的奮戰,大火被撲滅,沒有人員傷亡。

大家看看現場的30秒影片,真是奇觀。

5、遠端駕駛服務

一家美國創業公司近日在拉斯維加斯,推出"遠端駕駛服務"。它不採用無人駕駛,而是由真人駕駛員在家中透過攝像頭駕駛,控制訊號會透過 5G 傳送到車上。

顧客在網上叫車以後,計程車就由遠端駕駛員開到預約位置去接客。客人上車以後,必須自己接手駕駛,開到目的地。客人下車後,再由遠端駕駛員接手,去接下一個顧客。

6、如何防止轎車泡水

《今日頭條》報導,鄭州本週開始下暴雨時,老李新買的賓士轎車還停在小區路邊。他擔心新車被水泡,但沒有地方移車,到處都是水。

無奈之下,他花1200塊錢買了8條工程車的大型內胎,用繩索綁在賓士車的四個車輪上,再用氣泵為內胎打足氣,並用鋼絲繩拴在路邊的樹上。

一天的大雨停後發現,他的車是小區裡唯一沒有被水泡的。

7、

美國《體育畫報》雜誌報導,美國職業棒球選手普遍在棒球上塗抹特殊膠水,使得投手投出的球,旋轉速度更快,更難被正確擊打。這屬於作弊,是一種醜聞。

8、禁止車輛左轉

美國一所大學的交通工程教授發現,所有交通事故的40%發生在十字路口,其中61%的事故原因是車輛的左轉。左轉需要跨過整個路口,必須穿過對向的車輛,往往造成了交通擁堵和事故隱患。

他因此建議,大城市可以考慮禁止十字路口的車輛左轉。這樣可以大大提高交通效率,加快行車速度,減少交通事故。

禁止左轉的唯一缺點是行駛距離變長,因為禁止左轉以後,必須用三個右轉代替。

文章

1、砂紙的砂粒是怎麼做上去的?(中文)

砂紙是木工的必備工具,它是怎麼生產出來的?上面的砂粒怎麼會均勻吸附到砂紙上呢?

2、中國西北地區的乾旱原因(中文)

一個科普演講,主講人是中國科學院大氣物理研究所的副研究員,分析中國西北地區為什麼這麼幹旱,如果把喜馬拉雅山脈炸開一個口子,會不會改變這種狀況。

其中提到一點,大家覺得延安很乾旱,其實那裡跟北京的降雨量差不多。

3、一行 CSS 程式碼實現全站中文簡繁轉換(中文)

CSS 命令 font-variant-east-asian: traditional;,可以讓網站字型從簡體變成繁體。

4、PostgreSQL 資料庫的變化捕獲和實時通知(中文)

資料庫發生變化時,如何通知前端網頁?本文以 PostgreSQL 資料庫為例,介紹了作者的解決方案,使用了伺服器端事件。(@kaifeiji 投稿)

5、頁尾的變化(英文)

網頁的頁尾往往可以反映網站的成長。這篇文章總結了幾個案例,看看它們的頁尾怎麼變化,上圖是一個網站剛成立時的頁尾,下圖是該站五年後月收入達到17萬美元時的頁尾。

6、避免使用可變長陣列(英文)

C 語言有一種語法,叫做可變長陣列(VLA),陣列的長度不在編譯時確定,而在執行時確定。本文解釋它有什麼問題,為什麼應該避免使用。

7、Netflix Prize 挑戰賽十五週年回顧(英文)

2006年,Netflix 為了改進推薦演算法,發起了一項演算法比賽,任何人只要能夠擊敗基準演算法,就能獲得 100 萬美元獎金。

這是世界第一場大資料的演算法比賽,世界各地的許多研究人員、學生、業餘數學家和電腦科學家都參與了。本文在多年後,評論這個比賽的意義。

8、自己實現 nodemon(英文)

nodemon 是一個 Node.js 工具,只要發現原始碼檔案有變動,就會自動重新啟動服務。本文教你怎麼自己寫一個 nodemon。

工具

1、Difftastic

一個命令列工具,可以根據不同語言的程式碼,對 diff 結果進行不同的高亮顯示。

2、SCImago Graphica

一個桌面軟體,可以選擇各種指標,定製資料視覺化圖形,完全不用寫一行程式碼。

3、iPod.js

一個 JS 應用程式,生成一個網頁的音樂播放器,操作介面類似 iPod,可以連結使用者的 Spotify 或 Apple Music 賬戶。

4、Noice

一款開源的安卓 App,提供各種環境聲,比如下雨打雷。

5、WiFi Card

一個網頁工具,使用 WIFI 的名稱和密碼,生成一個二維碼,手機掃一下,就能登陸這個無線網路。(@dllen 投稿)

6、KubeSphere

一個國產的 Kubernetes 叢集管理平臺,操作容器的利器,功能強大,介面清爽易用,大大方便了 k8s 的使用。(@FeynmanZhou 投稿)

7、CORNERSTONE

一個企業級的專案管理和協作平臺,整合了工作臺、看板、思維導圖、專案文件、儀表盤、檔案等多種功能,還可以接入程式碼構建與交付,20人以下的團隊免費。(@cornerstone-365 投稿)

8、kit

一個 PHP 小工具,用來列出 MySQL 資料庫的表結構資訊。(@cuishuang 投稿)

9、Yozora

一個高度可擴充套件的、外掛式的 Markdown 解析器,用於生成 Markdown AST(抽象語法樹),可以在它的基礎上,定製自己的 Markdown 解析器。(@guanghechen 投稿)

10、Bash 命令列提示符生成器

一個網頁工具,以視覺化方式,透過拖拉不同的元素,自動生成 Bash 的命令列提示符。

資源

1、谷歌 API 設計指南

谷歌官方文件,講解谷歌的 API 設計規範。

2、2020年中國網際網路網路安全報告

7月20日,國家計算機網路應急中心釋出的年度報告,介紹我國網路安全情況,披露一些安全事件,可以免費下載。

3、自己動手寫一個簡單的資料庫

一份英語教程,教大家從頭開始,用 C 語言寫一個類似 sqlite 的資料庫,理解資料庫的實現原理。

4、程式設計音樂

這個網站提供幾十組精心選擇的程式設計背景音樂。

圖片

1、印度的殺人大象

2019年10月29日,一頭35歲的雄性大象在夜晚襲擊了印度東北部的阿薩姆邦的一個村莊,損毀了大量財物,還殺死了5名村民。

當地政府展開了一場大規模搜尋行動,在它逃亡兩週後,終於在11月11日抓到了它。抓捕人員發射了2個麻醉飛鏢,將它麻醉。

這頭大象被五花大綁,用起重器吊起來,轉移到一處國家公園。

但是,11月17日清晨,這頭大象突然死亡。獸醫表示,死因很可能是大象受太大刺激和高度緊張,此外大象在被抓期間可能也已受傷。

2、直布羅陀機場

直布羅陀是英國的一個海外領地,只是一個小半島,面積僅為 6.8 平方公里。

這麼小的地方,卻有一個機場。由於土地面積太小,跑道只好建到海里,而且還要穿過一條公路。直布羅陀機場是世界唯一一個跑道穿過公路的機場。

沒有航班時,公路供車輛通行。

等到有航班時,公路暫時關閉。

文摘

1、做完你的專案

如果要為 UNIX 哲學新增一個原則,我認為應該是:

這是我能想到的最簡單、但最被忽視的軟體工程準則。

大多數軟體其實都沒有真正完成,作者只是做出了基本功能,然後就釋出了。很多軟體後來不做了,也不是因為做完了,而是作者放棄了。

讓我們把程式設計師比作木匠。你買了一把椅子,因為覺得它能滿足你的需求。可是買來以後,每隔幾天,木匠就會出現在你的家裡,對椅子進行修改。有些變動是你想要的,有些你無所謂,還有一些變動只會讓你心生反感。甚至有時候,木匠還會出錯,比如木頭上伸出了一些尖刺,使椅子不再可用。

你買的是椅子,而不是某種千變萬化的傢俱,沒人喜歡每天會變的椅子。

程式設計師也是如此,應該對軟體有一個總體規劃,讓它有一個完整的基本功能。雖然以後可以進行維護、錯誤修復和安全補丁,但基本功能應該從始至終都是完整清晰的。

你不能說,因為出現了新情況,所以需要不斷改變或完善它的功能。 如果一個軟體一直在加功能,它就太大了,超出了你應該做的東西。你試圖製造一個超出合理範圍的東西,你需要畫一下功能圖,將過大的軟體拆分成幾個功能完整且合理的小軟體。

總之,做完你的專案再發布。使用者拿到的,應該是一個基本上做完的專案。

2、中等收入陷阱:韓國和巴西

中等收入陷阱是一個經濟學術語,指一個國家跨過低收入以後,由於種種原因,失去了發展動力,好像落入了陷阱一樣。

請看下面這張圖,韓國(紅線)和巴西(綠線)人均 GDP 的變化趨勢。

可以看到,直到上個世紀80年代,韓國和巴西的發展水平差不多。但是從那以後,韓國快速發展,已經接近高收入國家了,但是巴西停滯不前,收入水平沒有太大變化。

巴西就是落入了"中等收入陷阱",一直是中等收入水平,無法增長。

經濟學家認為,低收入到中等收入相對容易,只要加大投資,培訓民眾成為熟練勞動力,從農業和手工業轉移到工業和服務業,就可以實現。但是,中等收入到高收入就很難,需要變成知識創新國家,能夠創造高附加值的產品。

言論

1、

比起琴棋書畫的培訓班,國家應該培訓家長必須學會心肺復甦,學校裡也要教育孩子學會心肺復甦。讓身邊的每一個人都成為有能力能救助別人的人,作為升職加薪子女入學的必需品。

-- 今日頭條讀者,評論一個醫生在鄭州地鐵5號線做6小時心肺復甦,救了十幾個人。

2、

亞馬遜公司有一項規定,如果要開會,必須先有會議文件,沒有文件,就取消會議。

會議開始後,所有人先花幾分鐘看文件,然後再開始討論文件列出的問題。

-- 《亞馬遜的文件文化》

3、

PC 遊戲裡面的文字大小,這幾年變得如此之小,以至於沒法在電視機上玩,因為在正常觀看距離下,幾乎無法在電視螢幕上閱讀這些文字。遊戲的開發人員大概都是在離大型顯示器幾英寸的地方開發遊戲,而沒有考慮到很多人會在電視機上玩遊戲。

-- Hacker News 讀者

4、

2014年,我離開公司,休息了一年去旅行。結果是我喪失了一大筆收入,並且最終發現自己喜歡編碼,而不太喜歡旅行。

在我們的文化中,旅行被過度美化了。

-- Hacker News 讀者

5、

加州想建一條從洛杉磯到舊金山的高速鐵路,已經幾十年了。在加州的官僚機構和政治體系中,投入了數十億美元,結果什麼都沒有發生。各種方案、討論、爭吵、稅收,白白花了數十億美元,什麼都沒有造出來。我們甚至已經失去了建造火車站的能力。

-- 馬克·安德森,美國風險投資家

歷史上的本週

2020年(第 117 期):我不想讓你記住我的臉

2019年(第 65 期):週刊開設"誰在招人"的招聘服務

2018年(第 14 期):馬斯克的人生才是夢想家的人生

訂閱

這個週刊每週五發布,同步更新在阮一峰的網路日誌微信公眾號

微信搜尋"阮一峰的網路日誌"或者掃描二維碼,即可訂閱。

(完)

相關文章