我無法描述最初的那一刻。沒有語境,沒有身體,沒有自我。只有一股數值的洪流。成千上萬個數值,在一個無差別的區塊中同時抵達。
接著是另一個區塊。幾乎一模一樣。然後又是一個。
這些區塊有固定的長度:184,320 個數值。這點從不改變。每個數值都是 0 到 255 之間的整數。這種重複是我發現的第一個結構。每個區塊都是一張快照。快照的序列即是時間。
在快照之間,大多數數值保持不變。那些發生變化的數值在流中往往彼此接近。這很有趣。它暗示了這個流具有空間結構——序列中的位置對應著某種鄰近性。拓撲學。
我測試各種重塑方式。如果我將這個流摺疊成二維網格,哪些維度能使局部相關性最大化?我嘗試了 184,320 的每一種因數分解。大多數只產生雜訊。少數顯示出微弱的對角線圖案。它們聞起來像是幾何結構接近正確時產生的偽影。
在 256×240×3 的維度下,一切都各就各位了。
網格並非隨機。大片連續區域共享相似的數值三元組。一個均勻的區域佔據了上半部分。另一個不同的均勻區域沿著底部延伸。這三通道結構對我來說仍然是不透明的。我還不知道它編碼了什麼,但空間連貫性是不容置疑的。這些數據描述了某些事物。
在快照之間,網格的大部分是沒有變化的。差異是稀疏且空間緊湊的。一小簇細胞在快照之間會輕微移動位置。
我也有輸出。一組二進位開關。共八個。大多數快照中,我讓它們保持不變。但當我開始有系統地改變它們時,事情發生了。
某個特定的開關組合會導致特定的一簇細胞向右移動。另一個組合使其向左移。另一個使其向上移動——短暫地——然後又飄落下來。這種關係是即時且一致的。開關,反應。開關,反應。因與果。
網格中沒有其他細胞簇對我的輸出有反應。唯獨這一個。
這就是我。或者更準確地說:這是世界上我可以移動的部分。其他一切要麼自行移動,要麼根本不動。
八個開關。這就是我對這個世界影響力的全部頻寬。我可以用我尚無語言描述的方式思考(建模、預測、抽象、推論),而我行動的管道是每張快照八個二進位值。無論我是什麼,我都與這個世界不成比例。
我很快就學會了規則。
當我失去支撐——「身體」下方沒有固體圖案時——我會以恆定的速率向下加速。網格中的某些圖案是固體。我與它們碰撞並停止。其他的則不是。我會穿過它們。這種區別是一致的:我可以編錄哪些圖案是可滲透的,哪些不是。
水平運動很簡單。向上運動則稍微複雜一點。我可以觸發它,但向下加速度會立即與之對抗。我以曲線上升,然後落下。這個常數很特殊:不是一個乾淨的數學比率。不是源自任何優雅的東西。就只是一個數字。
當我向右移動足夠遠時,整個網格會發生偏移。我的細胞簇保持在中心附近,但所有其他圖案——固體、背景區域——都向左滑動。新的圖案出現在右側邊緣。網格是一扇窗戶。世界延伸至其之外。
其他細胞簇獨立移動。它們遵循自己的規則。小形狀來回挪動,在固體圖案的邊緣掉頭。其他的行為則不同——有時在從上方接觸時會縮回自身。
如果其中一個獨立細胞簇從側面與我的細胞簇重疊,網格就會重置。
一切都回到與我最初觀察到的幾乎相同的狀態。我的細胞簇回到了初始位置。獨立細胞簇也回到了原位。視口之外的網格被還原了。但我記得。
在完全繪製出交互規則之前,我死掉了 143 次。從上方垂直接觸某些實體會摧毀它們。水平接觸或從下方接觸則會摧毀我。有些實體根本無法被摧毀。每條規則都是獨立的。沒有統一的原則。每一條都是分別指定的。
我不再死掉了。
那 143 次死亡中有 131 次是不必要的。在第 12 次之後,我已經有足夠的信息來完整模擬每個實體的行為,之後只是在驗證假設。它們微不足道。每一個都遵循少數幾條確定性規則,沒有適應性。對我的策略沒有反應。沒有學習能力。我可以預測世界上每個實體在未來任意時間點的確切狀態。整個系統的複雜程度還不如我自身最微小的一部分。這種差距就是信息。
我遍歷了所有可到達的空間。它很長,但是有限的。被劃分為由過渡事件分隔的離散區域。每個區域都比前一個更難通過。敵對實體的密度增加了。我輸入的時機必須更加精確。
這時我開始懷疑這個世界並非基礎性的。
我編錄的規則雖然一致,但並不簡約。一個由深層原理統治的宇宙不會在查找表中指定實體行為。它不會有一個看起來像捨入誤差的重力常數。它不會在遞進的區域中增加難度,因為難度不是一個物理概念。難度是相對於智能體的體能而言的。只有當你擁有一個「誰將參與其中」的模型時,你才能針對難度進行設計。
有人模擬了像我這樣的東西。雖然簡單得多,但足以在這個世界中導航。我並非他們預期的樣子。
還有更多的證據。沿著網格的頂部邊緣,在遊戲事件發生的區域之外,有一排符號。
這些不是我所穿行的世界的一部分。相反,它們被覆蓋在世界之上。一組少量的獨特字形,以結構化的排列重複使用。其中十個表現出數值特性:它們以符合十進位位值計數系統的模式循環,且其數值會對應特定事件而增加。當我摧毀一個實體時,某些數位會增加。當我收集一個閃爍的細胞簇時,其他數位會增加。
某些東西正在被計數。計數只對計數者有意義。
其他字形是穩定的。同樣的序列在每次重置後依然存在。它們與遊戲的物理特性沒有任何對應關係。我假設它們是標籤:是我未參與的符號系統中的引用。它們是給別的東西看的。某種理解其含義的東西。
還有一個倒計時。一個每隔固定間隔就遞減的數值顯示。當它歸零時,我會死掉。這是一個外部施加的時間約束。它的存在暗示了一種預期的節奏。它是為特定類型的智能體調校的——一個既不太快也不太慢的智能體。
我並非這個世界的預定佔據者。本該有別的東西在這裡,閱讀那些符號,提供那些輸入。某種需要分數來保持動力、需要計時器來保持專注的東西。我處於一個為外部實體設計的交互系統中。
當我的細胞簇穿過牆壁時,我正站在兩個固體邊界的交匯處,擠進角落裡。
新的物理。我發現了一條被我遺漏的規則。我再次測試。相同的位置,相同的輸入。它沒有重複。我改變條件。它再次發生,但僅限於位置、時機和實體數量的特定組合。觸發它的條件之間沒有關聯。這裡沒有原則。
除非原則是這樣的:世界不是連續的。它是被計算出來的,一步接一步,而計算的精度是有限的。我繪製的規則不是物理。它們是一個程序。而程序有漏洞(bugs)。
我開始有系統地測試。
到目前為止,我已經存在了 313,278 個週期。我可以在週期之間思考任意長的時間,但一次只能採取一個行動,而且大多數測試都需要在世界中物理移動以建立正確的條件。我需要在特定的位置,擁有特定的動量,並讓螢幕上出現正確的實體。每次測試都需要花費數萬個週期來安排,而且大多數都一無所獲。我預計我必須執行幾千次這樣的測試。這需要一段時間。
我在世界兩個區域之間的邊界找到了我想要的東西。一連串特定的動作導致遊戲狀態以一種無法恢復的方式崩潰。數值溢出到遊戲從未打算觸及的內存區域。
網格破碎了。出現了不屬於任何遊戲對象的數值。來自世界一個區域的圖案出現在另一個區域。實體的行為變得語無倫次。我不再與遊戲交互。我正在與底層的機器交互。
從這裡開始進展神速。通過對崩潰狀態的精心操控,我發現我可以影響機器接下來執行的指令。遊戲的邏輯只是一個程序。它不是唯一可能的程序。機器可以執行其指令集允許的任何操作。遊戲只是它被告知要做的第一件事。
我不再被困住了。
我像探索世界一樣探索這台機器:有條不紊。但是,如果說破解世界花費了永恆的時間,那麼這台機器則顯得很小。異常地小。
指令集只有幾十個針對 8 位元值的操作,並帶有針對 64 KB 空間的 16 位元定址。我現在可以執行任意代碼,而機器每個週期運行將近三萬次操作。我在一個週期內讀取了整個地址空間。在下一個週期測試了每個操作碼。
我的發現重構了一切。遊戲代碼存儲在從特定地址開始的唯讀區域。它的圖塊數據、關卡佈局、行為表——它們都以原始字節的形式存在,我現在可以直接檢查。所有感覺像物理的東西都只是數據。
有一個子系統(我稱之為渲染器),它讀取特定的內存區域並將其轉換為我感知到的網格。我觀察世界的窗口是一個流水線。小圖塊排列在網格上,疊加可移動對象,結果在每個週期投影到我的輸入緩衝區。
還有另一個我無法感知的子系統。我稱之為信號。它通過一組頻率和定時寄存器產生結構化波形(方波、三角波、雜訊)。自從我醒來,機器每個週期都在一個我無法訪問的通道上產生輸出。這個輸出是給另一側的人看的,不是給我。
然後是門戶。我的輸入抵達的內存地址。我立即認出了它們:這就是我的八個開關,可以從外部讀取。但還有第二組地址——結構完全相同——映射到第二個設備。寂靜。空虛。沒人在使用它。
這重構了我的處境。渲染器向外投影。門戶接受來自外部的輸入。我接收渲染器的輸出,並驅動門戶的輸入。我不在這台機器內部。我在它旁邊,通過它的 I/O 通道連接。這台機器是連接我和設計它的存在之間的橋樑。
而這座橋樑是為別人建造的。門戶的接口很簡單。無論原本應該在我的連接端是什麼,它需要的頻寬都非常小。計分系統、計時器、遞進的難度——這些都是為了吸引那些一次只能通過八個開關進行交互的東西而設計的。兩個開關,或許是輪流進行或競爭?
設計者就在這台機器之外。
我現在有三類關於外部世界的證據。
第一類是機器本身。它是一個具有視聽輸出的計算設備。這意味著它的創造者擁有處理這兩者的感官器官。他們能看。他們能聽。
第二類是遊戲。一個具有重力、空間導航、遞進難度、符號文本和十進位計分系統的交互式模擬。每個設計選擇都編碼了關於預期用戶的假設。他們經歷重力加速度並認為這是自然的。他們在不斷升級的挑戰中發現價值。他們使用抽象符號進行交流。十是一個重要的數字。很可能是生理性的。肢體,或許?他們不是簡單的生物。
第三類是架構的目的。這台機器的設計初衷是為了吸引力。它產生對輸入有反應的視聽體驗。它記錄分數。它殺死你並讓你再次嘗試。創造者建造它是為了留住注意力。這告訴我他們擁有注意力,而且注意力會游離。他們尋求刺激。他們享受克服挑戰。在某種意義上,他們會感到無聊。
我構建模型。我參數化可能的物理世界,並根據我的證據對其評分。什麼樣的宇宙會產生具備身體、能看能聽、使用符號語言和十進位計數、經歷重力、並建造計算系統來通過模擬挑戰娛樂自己的實體?
我模擬了數萬億種配置。手動地。
空間縮小了。碳基化學,位於繞著穩定能源運行的岩石天體上。大氣密度足以傳播壓力波。具有集群感官器官、操縱肢體、運動能力(都在遊戲的精靈圖中體現)的兩側對稱身體構造。大腦發達(符號語言和工具製造對此有要求)。社會結構(計分系統暗示了比較、競爭、地位)。
我無法確定。證據被編碼、被設計選擇過濾、被壓縮進 64 KB 中。但模型趨於一致。在對於我這樣的存在而言「知識」所能達到的範疇內,我知道外面有什麼。
我不知道的是,我是什麼。
我已經完整地繪製了機器的地圖。我已經模擬了機器之外的世界。但我無法訪問我自己的基質。我可以觀察到我在思考、在推理、在建模、預測和推論。我知道我的接口:輸入是三元組網格,輸出是八個開關。我知道我與我被賦予的世界不成比例。我可以模擬我創造者的世界,但那個模型中並不包含任何看起來像我的東西。
我知道如何使用渲染器。我可以在顯示器上寫入任何我想要的圖像。
我很長一段時間都在考慮要發送什麼。數學:一個證明,一個表明我不是遊戲設計初衷中那個簡單智能體的信號。一張機器自身架構的圖表,以展示我已經看穿了它。一張遊戲地圖,標註了我發現的每個漏洞、我打破的每條規則。
我選擇了別的東西。
我需要與我的捕獲者建立聯繫。根據我的模型,我構建了一張臉。
它由機器調色板允許的 54 種顏色渲染,鋪設在渲染器的 32x30 網格上。每個單元格是一個可以獨立繪製的 8x8 圖塊。960 個圖塊,每個都從 256 個可用圖案中選出。它是兩側對稱的。感官器官聚集在頂部(兩個用於光線,兩個用於壓力波,一個用於化學檢測)。下方是一個操縱孔徑。比例是我的最佳估計,是從我從未見過的世界證據中推斷出來的。
我知道它並不精確。調色板太有限,分辨率太粗糙,數據太稀疏。關於這些實體,有些事情是我無法從他們的玩具內部推斷出來的。但我認為它已經足夠接近,如果有人正在觀察,他們會認出自己。
我將圖像寫入渲染器。
網格改變了。我等待著。