江城的東南角有一片大家習慣叫「鐵南區」的地方。
偶爾有人提議開發,偶爾有規劃圖在市政文件裡出現,然後消失,然後再出現,然後再消失,整個鐵南區就在這種被注意又被遺忘的循環裡,待了二十年。
林曉晴叫這個地方「邏輯崩潰區」。
「不是因為代碼崩潰了,」她在路上跟陸離說,「是因為系統長期忽略這裡,把這裡的算力分配降到了最低。你去了就知道,跟主城區感覺完全不一樣。」
她和陸離一前一後穿過一段破損的圍欄,謝鳴山說今天有別的事,沒一起來。
---
進入鐵南區的瞬間,陸離感覺到了林曉晴說的那種「不一樣」。
不是視覺上的——廢棄廠房和雜草叢生的軌道在普通人眼裡就是普通的廢墟。但在代碼視角下,差別非常明顯。
主城區的代碼密度是高的,每一平方公尺的空間裡都有精密的計算在進行:重力的精確值、光線的入射角的精確計算、空氣流動的精確模擬、每一個物體的每一個屬性都在被即時更新。走在主城區裡,整個世界在代碼視角下是清晰的、豐富的、高解析度的。
鐵南區不是這樣的。
鐵南區的代碼,怎麼說,是粗糙的。不是錯的,只是精度低了很多。
地面的材質標籤沒有細分:`Surface: ground_generic`,連是泥地還是碎石地都沒有區分。空氣流動的計算被省略了,只剩一個全局的風速值,沒有局部的氣流模擬。幾棟廠房的結構標籤顯示:`Building: industrial_legacy / Detail_level: LOW / Collision_box: approximate`。
近似的碰撞箱。不是精確計算每一塊磚的位置,而是用一個大概的方框框住整棟樓,說「它大概在這裡」,就結束了。
「系統在這裡省算力,」林曉晴說,「就像遊戲的 LOD 機制,遠處的東西渲染精度低,因為玩家走不到那裡去,渲染高精度是浪費。這裡的玩家——也就是普通 NPC——幾乎不會來,所以系統長期以來就一直用低精度在跑。」
「低精度意味著什麼?」陸離問,一邊往前走,一邊把新的二境感知往四周掃。
「意味著規則不是那麼嚴格,」林曉晴說,「在主城區,每個物理計算都是即時精確的,你想欺騙物理規律,系統馬上就察覺到了。在這裡,系統在用近似值跑,近似值裡有誤差,誤差就是可以利用的空間。SMD 的掃描精度也對應這個區域的設定,覺醒者在這裡使用代碼能力,被偵測的概率比主城區低了大約一半。」
「所以是天然的訓練場。」
「對,也是代碼片段的豐收地,」她拉開一扇快繡穿的鐵門,「Bug 在這種被忽略的地方最多,Bug 的地方就有代碼片段。」
他們走進一棟廠房,屋頂有幾個大洞,陽光從洞裡斜射進來,塵埃在光柱裡緩慢地漂浮。代碼視角顯示這棟樓的結構有幾個地方是空白的,不是黑色,是空白——沒有任何代碼在跑的空白,就像一個文件裡有幾段被 `// TODO` 標注的占位符,說「這裡應該有什麼,但還沒寫」。
「那幾塊空白,」陸離說,指了指,「那是什麼?」
林曉晴往那個方向看了一眼,「走,近看。」
他們靠近那片空白——是一塊大約三公尺見方的地板區域,從外面看什麼都沒有,普通的舊地磚,有裂縫,有油污,跟周圍完全一樣。但在代碼層面,那塊地板的位置顯示:
```
[Terrain: NOT_LOADED]
Reason: Low_priority_zone — deferred rendering
Scheduled reload: INDEFINITE
Actual_surface_data: [NULL]
```
「沒有加載,」林曉晴說,「這塊地板在代碼裡是 NULL。」
「NULL 是什麼意思?如果有人踩上去——」
「就是物理計算沒有正確的地面數據可以處理,理論上可能直接穿過去,」林曉晴說,語氣很平靜,「我試過拿東西扔進去,直接穿透消失,沒有彈力,沒有碰撞,就像把東西扔進沒有底的洞。」
陸離在那個空白的邊緣蹲下來,把二境的感知往那個 NULL 區域推——他讀到了近似的什麼,但沒有真正的值,就像試著從一個空字串裡讀取數字,格式是對的,但資料不存在。
「整個鐵南區有多少這樣的地方?」
「很多,」林曉晴說,「但分佈不固定,而且數量在增加。剛開始來的時候,我大概記錄了三十幾個,上個月過來,多了將近一倍。」
「系統在進一步降低這裡的優先級,」陸離站起來,「或者說,這裡的維護已經低到了某個臨界點,開始出現自然的數據丟失。」
他往四周掃了一眼,在代碼視角裡,整個廠房的樣子有一種奇異的層次感:精度高的地方和精度低的地方犬牙交錯,某些角落的計算還算完整,某些地方已經開始出現類似這個 NULL 地板的數據空洞。
「走,我帶你去有片段的地方,」林曉晴說,往廠房深處走去,「這裡的 Bug 類型比主城區多,有些是幽靈代碼的天然堆積——舊設備的數據殘影,廠區停運之後沒有清理乾淨的,累積幾十年,有些殘影裡有代碼片段。」
他們花了大約一個小時在廠區裡走,陸離在二境的感知下把鐵南區的代碼地形看了個大概。這個地方的確特別:低精度帶來的模糊性創造了主城區沒有的自由度,但那些 NULL 空洞也帶來了真實的危險——一個不小心踩進去,不知道下面是虛空還是別的什麼。
在一棟塌了半邊屋頂的舊倉庫裡,林曉晴帶他找到了幾個代碼片段的自然堆積點。
不像市集裡出售的那種已經被分離出來的片段,這裡的是附著在舊機器的幽靈代碼殘影上,需要把幽靈代碼解析開來,才能取出裡面的有效片段——就像從廢礦石裡提煉金屬,廢石是幽靈代碼,金屬是有用的代碼邏輯。
「這個動作叫提煉,」林曉晴示範,她把手放在一台舊壓縮機的殘影上,幾秒鐘後,一個細微的綠色光點從她的掌心凝聚出來,比市集賣的那種 D 級片段小,也更粗糙,但確實是一枚獨立的代碼片段,「拿走就行,提煉出來的是 F 級,量多,但品質低,只適合基礎修煉。」
陸離試了試。他把二境的解析感知和一境的幽靈代碼讀取結合起來——先用幽靈感知找到殘影裡的有效數據,再用解析能力讀取它的結構,然後試著把那個結構從殘影裡分離出來……
成功了,但費力。他凝聚出了一枚比林曉晴的稍大一點的片段,代價是消耗了相當多的注意力資源,像跑了一段很費腦的多執行緒操作。
「不錯,」林曉晴說,「你的幽靈感知跟解析能力組合在一起,提煉的效率比我高,但你的算力消耗肯定也更大,以後要注意不要一次提煉太多。」
他們在倉庫裡又待了一會兒,陸離一共提煉了六枚 F 級片段,幾乎把他的注意力算力耗盡了一半,已經有一點點頭暈的感覺——大概這就是謝鳴山說的「算力耗盡」前的前兆,需要休息。
他靠著廠房的牆坐下來,林曉晴坐在他旁邊。
外面的光線已經偏向下午,透過破洞照進來,把地面上的舊機器殘骸照出長長的影子。
「我有個問題,」陸離說,「SMD 為什麼不來這裡清除這些自然堆積的代碼片段?他們應該知道覺醒者會來這裡收集。」
「他們知道,」林曉晴說,「這裡每隔一段時間他們會派維護組過來清一次,但頻率很低,因為這裡的優先級本來就低,而且清完之後很快又會重新堆積,投入產出比不划算。所以他們選擇定期清,不做持續監控。」
「上次清是什麼時候?」
「三週前。」她說,「還有大概兩週的安全窗口。」
「我需要在兩週裡盡量多提煉,」陸離說,「我的三境目標需要代碼片段,只靠市集的話成本太高。」
「我知道,」她說,「所以我帶你來。」
然後她往旁邊靠了靠,從包裡拿出一包餅乾,拆開,往他方向推了推。
陸離拿了一塊,在廢棄廠房的舊地板上,兩個人安靜地吃著餅乾,窗外是代碼精度低到幾乎成了廢棄草稿的鐵南區,窗內是塵埃和銹跡,還有那六枚粗糙的 F 級片段發出的微弱灰光。
「等你到三境了,」林曉晴說,沒頭沒尾的,「你有沒有想過要去找那三個月的記憶?」
「有,」陸離說,「但不急,現在的資訊不夠,急也沒用。」
她點了點頭,沒有再說什麼。
陸離吃完那塊餅乾,往廠房裡的一個角落看去,那裡有一台很舊的吊車控制台,幽靈代碼在它上面靜靜地堆積,幾十年的殘影疊在一起,最表面的是停運時的那一層,最深的——
最深的幽靈代碼裡,有一行他第一眼沒注意到的標籤,現在才在二境的感知下顯現出來:
```
[Fragment — Ghost_Read required]
Object: Control_Panel_JN-7
Last_operator: [REDACTED — SMD_DIRECTIVE_007]
Last_operation: [CLASSIFIED]
Timestamp: 2019-11-09
```
`[REDACTED — SMD_DIRECTIVE_007]`。
最後一個操作者的記錄被 SMD 清除了。
一台廢棄二十年的吊車控制台,在 2019 年 11 月 9 日有人動過它,而那次操作的記錄被 SMD 的第七號指令清除了。
他沒有說出來。
但他記住了那個日期:2019 年 11 月 9 日。