搬家的時候,發現一台老舊的Game Boy,螢幕已經老化發黃,電池倉裏還有腐蝕過的痕跡。把卡帶插進去,開機,熟悉的音樂一響,我本來只是想測試一下螢幕按鍵壞沒壞,結果不知不覺坐在桌前打了兩個小時。
後來我和做遊戲程序的朋友聊過這個事。
大家第一反應都是去分析它的心理學機制:什麼「蔡格尼克效應」(Zeigarnik effect,指人對未完成任務的執念)、什麼「即時反饋循環」。
這些解釋聽起來都很高級,但我一直覺得它們沒有切中要害。
如果只是需要「消除的快感」或者「即時反饋」,遊戲史上誕生過成千上萬個消除類遊戲,為什麼絕大多數都在三五年內被徹底遺忘,只有《俄羅斯方塊》能跨越四十年、跨越硬件架構的多次鉅變,在從蘇制計算機到手機網頁的每一個平台上都活得好好的?
真正的祕密,其實藏在它最基礎的技術限制和數學結構裏。
1984年,蘇聯科學院計算中心(CC AS)的阿列克謝·帕基特諾夫(Alexey Pajitnov)在電子-60(Electronika 60)計算機上寫出了這個遊戲的最早版本。
那台機器的性能非常匱乏。沒有圖形顯卡,沒有位圖渲染,螢幕上只能顯示純文本字符。
帕基特諾夫一開始想做的是一個拼圖遊戲。但在沒有圖形界面、只能用字符拼湊圖像的設備上,複雜度高的圖形根本渲染不出來。他必須把圖形精簡到極致。
數學上有一個概念叫Polyomino(多格骨牌)。如果你用1個正方形,只能拼出1種形狀;用2個正方形,也只有1種(1x2);用3個正方形,有2種(I型和L型)。
到了4個正方形(Tetramino),事情發生了微妙的變化。
4個正方形在二維平面上旋轉、翻轉後,恰好能組成7種基礎形狀(即著名的I、J、L、O、S、T、Z)。
帕基特諾夫當時做了一個非常關鍵的決定:停止增加塊的數量,就用4個。
如果我們用工程師的眼光去審視這「7種形狀」,會發現一個極度優雅的數學平衡:
如果選擇3個正方形(Triomino),形狀只有2種,組合過於簡單,玩家兩分鐘就會厭倦。如果選擇5個正方形(Pentomino),形狀會劇增到12種(如果算上鏡像和旋轉會更多)。在有限的螢幕空間裏,這會導致亂碼堆疊的速度遠快於人類大腦的決策速度,遊戲會變得不可玩。
4個正方形構成的7種形狀,恰好處於「人類短時記憶容量」與「狀態空間爆發」的黃金交界點。
認知心理學上有一個著名的「神奇數字7±2」理論(George A.Miller,1956年提出),指人類工作記憶一次能處理的抽象符號大約就是7個左右。
這並不是帕基特諾夫故意設計出來的心理學陷阱。這是他在極其嚴苛的硬件限制下,被迫逼近數學最優解時,撞大運撞上的「宇宙常數」。
但光有7種形狀還不夠。真正讓這個遊戲擁有無限生命力的,是它的「信息供給機制」。
很多後來模仿它的遊戲,敗就敗在對「隨機性」的理解上。
最早期版本的《俄羅斯方塊》,僞隨機數生成器(RNG)是完全自由的。這意味着系統可能連續給你掉落4個Z字形方塊。
在《俄羅斯方塊》的拓撲結構裏,Z型和S型被稱為「不對稱毒藥」。如果連續出現三個Z型,在數學上就會創造出無法無縫填充的死角。
早期的硬核玩家很快發現了這一點。如果完全依賴純隨機,遊戲在某些時刻不是考驗技術,而是直接從數學上判了玩家死刑。
於是在後面的標準化制定中(特別是微軟和任天堂參與的版本),官方引入了著名的7-Bag隨機抽牌機制:
系統把7種形狀看作一副撲克牌,裝進一個袋子裏。每次抽取1個,直到7個全部抽完,再把7種全新的形狀重新裝袋、洗牌。
這個極其輕量的規則改動,在工程上解決了兩個核心問題:
這讓《俄羅斯方塊》從一個「靠運氣苟活的賭博機」,變成了一個「在確定性風險中尋找最優解的信息論遊戲」。
它給玩家的不是盲目的刺激,而是一種信息熵由無序變為有序的絕對掌控感。
我曾經在一篇探討現代遊戲引擎的論文裏看到過一個很有意思的觀點:
現代大部分遊戲,本質上都在做「減法」。它們用幾千人團隊製作的幾百G資源,試圖去模擬一個極其複雜的真實世界,但因為算力和代碼複雜度的限制,最終給玩家呈現的體驗,依然充滿了邊界牆、空氣牆和僵硬的NPC交互。
而《俄羅斯方塊》是在做「加法」。
它的初始狀態是一個完全乾淨的二維矩陣(通常是10x20)。代碼量極小,佔用內存不過幾KB,邏輯簡單到可以在任何微控制器上運行。
但它的信息狀態空間是無窮無盡的。
它沒有設定任何「勝利條件」。你不可能「通關」俄羅斯方塊,系統唯一的目的就是用越來越快的速度把你壓垮。
你永遠在為自己上一秒留下的失誤買單,但也永遠可以在下一秒完成一次漂亮的拯救。
從軟件工程的角度看,它是極少數「機制完備度」達到了100%的系統——你刪掉任何一個規則(比如消行、預判、下落加速),這個系統就會崩潰;但你再往裏面添加任何花裏胡哨的複雜規則(比如技能、裝備、複雜的劇情),都是對它原本數學美感的一種破壞。
這解釋了為什麼即便到了今天,虛幻引擎5充斥着光線追蹤和幾百萬面高模,人們依然會在手持設備、網頁端甚至終端命令行裏跑起《俄羅斯方塊》。
因為它不依賴任何特定的硬件媒介。它不是一個時代的技術產物,它是一個被發現的數學結構。
如果把軟件開發裏各種花哨的技術框架剝離掉,很多時候我們會發現,能夠跨越周期的東西,往往不是那些集成了最多功能的「大而全」系統,而是那些在極度受限的環境裏,被倒逼出來的、結構極簡的「基礎契約」。
代碼會過時,顯卡架構會演進,操作系統會被淘汰,但這種符合某種底層數學規律的邏輯,一旦被創造出來,就幾乎是永恒的。