第 1 章 — 一夜之間,城市開始計分
沈以澄醒來時,耳邊正有人用台語罵一台不會動的販賣機。
那聲音隔著薄薄的隔板傳來,混著嬰兒哭聲、塑膠袋摩擦聲和遠處廣播的回音。他睜開眼,先看見一排冷白燈管,接著看見自己躺在折疊床上,身上還穿著昨天那件洗舊的襯衫。右腕貼著一枚陌生的黑色終端,邊緣亮起細微藍光,像一隻剛睜眼的昆蟲。
他記得自己在台北的租屋處改一份活動提案,桌上有吃剩的便利商店飯糰,手機裡還躺著房東催繳租金的訊息。凌晨兩點,他靠在椅背上閉了眼。再睜眼,房間、桌子、窗外那條熟悉的巷子,全都不見了。
沈以澄撐起身,背脊因為硬床板發酸。身旁的人穿著各式各樣的衣服,有人抱緊背包,有人反覆念著家人的名字,也有人盯著自己的雙手,像在確認身體是不是仍屬於自己。這裡像大型體育館改裝的臨時安置區,白色隔簾把空間切成一格一格,遠端架著幾台攝影機,鏡頭外覆一層半透明的玻璃罩。
他低頭看腕上的東西。螢幕自動亮起,沒有按鈕,也沒有解除方式。上面浮出他的姓名、年齡,以及三行灰字:居住權:未核定。工作資格:未建立。社會信用:初始資料不足。
「連失業都要重新登記一次嗎?」他低聲說。
喉嚨乾得發疼。他循著指示走向安置區出口,經過一面立在走道中央的巨大螢幕。螢幕正在播放新穹城的航拍畫面:金融區的玻璃大樓直入雲層,藝術街廓裡的老磚牆與霓虹招牌交錯,捷運列車從高架橋上掠過;更遠處則是灰色圍籬圈住的舊城,幾座塔樓只剩模糊輪廓。
景色熟悉得讓人不安。那像把幾座繁華城市拆開,再匆匆拼在一起,街道與建築比例都合理,天際線卻找不到任何真正存在過的地標。畫面角落寫著新穹城,底下則有一行不斷更新的文字:成年居民轉入程序已完成。
全世界的成年人都在這裡?他往前走了幾步,從螢幕反光裡看見自己蒼白的臉。旁邊一名戴著紅帽的中年男人正在打電話,手機沒有訊號,卻還是把一串熟悉的號碼按了又按。電話那端始終只有規律的忙音。
安置區的出口設有排隊欄杆。每個人都要掃描腕上的終端,才能領取一張臨時生活卡,再依照分配結果等候床位、工作或轉送。隊伍緩慢挪動,有人焦躁地質問工作人員,有人拿著卡片與其他人比對。穿灰色背心的服務員一遍遍說明,語氣疲倦卻沒有不耐:「資料正在建立,請先完成登記。臨時床位依現有資源分配,沒有身分紀錄的人請到右側等候。」
沈以澄排在隊伍末端。頭頂的通風口送出乾燥冷風,帶著消毒水和汗水混合的氣味。前面一個年輕女子抱著小提袋,邊排隊邊哭;她說自己是成年人,卻不記得最後在哪裡睡著,只記得醒來前正在趕一班火車。她的同伴握著她的肩膀,低聲讓她先喝水。
這不是夢,也不像誰在拍整人節目。太多細節沉重得不合戲劇效果:磨破的鞋底、有人手臂上的舊疤、安置區牆角堆著沒拆封的衛生用品。沈以澄做活動企劃時,習慣先找出場地裡最可能出問題的環節。此刻他看見的是一群沒有資料的人,被要求先相信一套看不見的規則。
輪到他掃描時,螢幕停頓兩秒,接著只吐出一張薄薄的灰卡。上面印著他的名字和一個臨時編號,卡片右下角標記:床位候補。沒有住處,也沒有工作資格。工作人員指向旁邊的長椅:「今天床位已滿,請到候補區等通知。你可以在附近市集尋找臨時工作,完成公開任務的人會有額外生活點數。」
「公開任務是什麼?」沈以澄問。
工作人員抬手指了指安置區外的螢幕。「每個人收到的項目不一樣。規則都在終端裡。」
她說完便招呼下一位,沒有多餘解釋。沈以澄把灰卡收進外套口袋,沒有離開隊伍太遠。身後的人潮推擠著他往前,門外透進來的光則比室內亮上許多。至少先弄清楚這座城市怎麼運作。他摸了摸終端,心裡盤算著住處、食物和下一餐的距離,開始留意指示牌上每一個出口。
安置區外是轉運樞紐的一部分。兩層高的候車大廳連著捷運出入口,自動接駁車停在玻璃牆外,車身不見駕駛座,顯示面板不斷輪播目的地。市集就在大廳東側,幾十個攤位沿著廊道排開,有人賣熱食,有人交換衣物和充電器,還有人把紙箱翻過來,手寫「協助找工作」幾個字。
所有人都像剛被丟進一個巨大而陌生的工作現場。有人開始談起怎麼組隊,有人交換自己終端裡的規則,也有人對著公共鏡頭大喊,要求把他們送回原來的地方。鏡頭沒有回應,只把每個人的臉和聲音收進玻璃罩後方。
沈以澄停在一間熱食攤前。攤位只剩幾份冷掉的鹹派和一鍋快見底的濃湯,老闆正把紙價牌從桌面抽下來。他約莫五十多歲,額角沾著麵粉,圍裙上有一道洗不掉的咖啡色污漬。攤車後方的電子鐘顯示晚上六點四十分,旁邊的小螢幕則跳出紅字:本時段營運評分不足,十分鐘後關閉攤位。
「今天才第一天,連生意都要打分數?」沈以澄問。
老闆把價牌捏在手裡,力道大得紙角都皺了。「不是我想關。規則說人潮回應率不夠,就把位置讓給下一個攤位。下一個人還在排隊,我總不能搶著賣。」
「你賣什麼?」
「番茄燉豆、鹹派,還有咖啡。食材是昨晚送來的,錢先欠著。」老闆朝半空那幾份剩菜看了一眼,「我叫羅先生。以前在港邊開店,醒來就到這裡。名字還在,店不在了,現在連這個攤位也留不住。」
他的聲音沒有求助的意味,反倒像把一張不想再看的帳單念給自己聽。沈以澄看了眼攤位周圍。人們走得很快,注意力都被大螢幕和腕上的終端牽走;招牌字體太小,價目表也擠在桌角,誰都不會為了幾份冷食停下來。真正的問題不只是文案,還有攤位沒有讓人停留的理由。
他正要開口,腕上的終端忽然震了一下。藍光沿著手腕一圈圈爬開,在他視線前方投出半透明介面。標題寫著:心跳直播系統已啟用。下方是一段簡短說明,列出觀眾投票、直播任務與即時報酬。最後一行提醒:系統不會代替居民做出私人選擇。
沈以澄讀到這句,才稍微放鬆緊繃的肩膀。至少這套東西知道自己有不能碰的界線。下一秒,攤位上方的公共螢幕切換畫面,映出他本人,連同攤車和羅先生皺起的價牌。螢幕側邊跳出直播人數,數字從幾十迅速增加到幾百。
「恭喜居民沈以澄取得首項公開任務。」一道平穩的女聲從喇叭裡傳出,「請於二十分鐘內,替即將關門的市集攤位寫出招客文案,並協助攤位完成一次有效銷售。任務報酬:臨時生活點數與短期床位排序加權。」
羅先生仰頭看了看螢幕,又把目光放回沈以澄身上。「你接了?」
「我還沒按任何東西。」沈以澄抬腕,介面已經把任務選項攤在眼前,接受與拒絕兩個按鈕同樣大小,沒有倒數逼迫,也沒把拒絕標成失敗。他點了接受。「但你這鍋湯需要有人救,這點倒是很明確。」
直播畫面下方冒出即時留言。有人問他能不能保證賣完,有人猜他是廣告文案,也有人打出「限時二十分鐘,會不會太普通」。觀眾投票欄顯示三個選項:熱食暖心、異地第一餐、老闆的家鄉味。票數迅速往「異地第一餐」集中,旁邊還有一個灰色提示:任務內容由觀眾偏好生成。
「有些人把你當企劃,有些人把你當演員。」沈以澄看著那些字,對羅先生說,「我們不必替他們決定你是誰。先把你今天真的做了什麼說清楚。」
羅先生把圍裙擦了擦,沒有立刻回答。沈以澄問他燉豆的做法、食材從哪裡來、為什麼想在這裡擺攤。老闆起初只說是拿到什麼就煮什麼,後來才提起自己從前在港邊的店每天開到深夜,船員下班會來喝一碗熱湯。那家店沒有招牌菜,卻總有人說,天氣冷的時候,番茄燉豆比酒更能讓人醒過來。
沈以澄把這些話寫在終端的任務欄裡。第一版是「新穹城的第一碗熱湯」,簡單,卻有點把陌生人的困境當成促銷手段。他停了停,刪掉「第一」兩字。城市有太多人正失去原本的生活,不必拿他們的慌張來包裝一份晚餐。
他重新寫:「今天煮好的番茄燉豆,港邊老店的做法。想坐下來吃口熱的,這裡有位置。」
「太普通了吧?」羅先生瞄了一眼字句。
「普通不代表沒用。你有位置,這句是真的。」沈以澄說,「而且你這張桌子剛好空著。」
羅先生把桌邊兩張折疊椅拉開,椅腳刮過地面,發出短促的刺耳聲。他把湯鍋往前挪,掀開鍋蓋。一股帶著番茄酸香和胡椒辛味的熱氣撲上來,讓沈以澄的胃立刻有了反應。從醒來到現在,他還沒吃過任何東西。
「我能借一張紙牌嗎?」沈以澄問。
羅先生從收納箱裡翻出一塊舊白板。沈以澄找來粗頭麥克筆,把文案寫在上頭,再將白板立到走廊動線旁。他沒有高聲招呼,也沒對鏡頭表演,只請羅先生盛出一小杯試喝,放在桌面最靠外的位置。接著,他把攤位前那張價目表挪到視線平行的高度,將熱湯、鹹派和咖啡的價格逐一標清楚。
「你也可以開直播請人幫忙喊。」羅先生說。
「那樣大家看的是誰喊得比較大聲,不是你的東西好不好。」沈以澄把試喝杯往前推了半掌,「給路過的人自己決定。」
他說完,直播人數又跳了一次。留言裡有人嫌他的文案沒有爆點,也有人問「為什麼不直接讓老闆哭訴」。那行字被頂到最上方,停留了好一會兒。沈以澄看著鏡頭,語氣平平:「他今天已經夠忙了,不用再替誰表演難過。」
畫面另一側跳出小小的投票提示,詢問觀眾是否同意保留現場原始聲音。票數幾乎同時上升。有人送出一枚橘色的熱度徽章,有人要求系統把他的話重播,還有人在留言裡回覆,說自己只想知道湯到底好不好喝。
第一個停下來的是一名背著工具袋的年輕男人。他端起試喝杯,喝了一口,嘴裡被熱湯燙得吸氣,卻又把杯底喝乾。「還有嗎?」他問。羅先生立即盛了一碗,男人用生活卡結帳,終端發出清脆的確認音。
螢幕角落顯示任務進度:有效銷售一次。沈以澄沒有鬆懈,趁著那名客人端著碗坐下,指向另一張空椅:「想要鹹派的話,現在出爐前留的那塊還在。不是折扣品,剛好是一份。」
旁邊兩個正在討論床位的女人看了過來。她們原本只想借位子休息,聞到番茄和香料的氣味後,其中一人改問鹹派有沒有蛋。羅先生回答得仔細,還把配料寫到白板最下方。她們最後一人買了咖啡,一人買了鹹派,兩個人分坐在攤邊,肩膀不再繃得那麼緊。
人潮沒有因此停下,轉運大廳仍然喧鬧,遠處有人大聲要求查詢家人去向,廣播則宣布下一班接駁車的路線。可是這個攤位前,多了幾個願意停留的人。沒有奇蹟般的擁擠人潮,也沒有誰一夕成名。沈以澄只把一張白板移到對的位置,讓幾個想吃點熱食的人知道,這裡還有一張空椅子。
任務倒數剩下四分鐘時,羅先生把最後一碗燉豆端給一位穿著西裝的女人。她付完帳,端著碗站在攤位旁,隔著湯面吹了幾下。沈以澄聞見胡椒與熱湯的氣味,胃裡空空的,舌根泛起一點苦味。他很想也買一碗,但生活卡裡的餘額還是零,剛才的任務報酬尚未結算。
「你餓了吧?」羅先生注意到他的視線。
沈以澄看了一眼攤位上剩下的半塊鹹派。「我的表情有這麼明顯?」
「你寫文案時看了三次湯鍋。」羅先生把鹹派切成兩半,推來其中一份,「算工作餐。別跟我說要照價付款,等我有一天重新開店再算。」
「這筆帳我會記著。」沈以澄接過紙盤,指尖碰到溫熱的邊緣。「要是你開店前先找到我,我替你免費寫招牌。」
羅先生笑了一聲,眼角的皺紋舒展開來。沈以澄咬下一口,酥皮略帶焦香,內餡有濃厚的番茄和起司味,鹹度剛好。那是他來到這裡後吃到的第一口食物,普通得沒有任何傳奇色彩,卻讓身體記起自己仍然需要生活。
倒數歸零,公共螢幕上的直播畫面閃動一下,接著出現任務完成。羅先生的攤位營運時間獲得延長,短期床位排序也多了一格加權。沈以澄腕上的終端傳來輕震,顯示他取得臨時生活點數,並解鎖心跳直播系統的任務介面。工作人員遠遠朝他招手,說他的資料已經補上一筆公開任務紀錄。
留言欄裡的字仍在往上跑。有人稱讚他沒逼老闆賣慘,也有人說他故意裝冷靜、想換取信任值。沈以澄看著兩種相反的判斷同時浮現,明白這些觀眾不必真正認識他,就能替他組出一個版本。終端上顯示:信任值尚待累積。能見度:微量提升。協作權:未取得。
他把鹹派最後一口吃下,將紙盤折起來丟進分類桶。掌心還殘留一點油脂,腹部的餓意只被暫時壓低。市集的照明燈一盞盞亮起,玻璃頂棚外的天色已沉,接駁車的燈帶沿著道路滑過,宛如城市正在替自己描邊。
羅先生把剩下的湯鍋蓋好,說等攤位忙完,會去問合作社能不能借到一張床。沈以澄告訴他自己也還在等床位,或許兩人可以互相留意消息。這不是什麼承諾,只是新地方裡兩個暫時沒有去處的人,交換了彼此的名字和一個可能有用的線索。
他回到安置區入口時,公共螢幕已經換成一張全城地圖。螢幕上的街區亮起不同顏色,金融區、物流園區、藝術街廓與安置區各自標著人流數字。畫面底下滾動著居住權申請狀態,某些人的名字旁邊出現「穩定工作待核」,更多人仍是空白。沈以澄搜尋自己的編號,頁面停在初始資料不足。
「至少床位加權是真的。」他對自己說。說出口後,才發現聲音被廣播和人群吞得很快。
他試著點開任務紀錄,打算把剛才的直播保存下來。系統跳出一個短暫的載入畫面,沒有提供下載選項,只顯示本次任務已歸檔。沈以澄的指尖停在螢幕上。他在活動公司做過多年企劃,見過太多漂亮介面把真正重要的按鈕藏起來。若紀錄只能由平台保管,誰能決定它最後被人看見的模樣?
腕上終端傳來另一聲震動。新訊息覆蓋了任務完成頁面,字體比剛才小得多,底色則是與主介面不同的暗紅。載入圈轉了一整圈,訊息才完整浮出:內部標記同步完成。樣本編號:SC-0418。風險層級:高。
沈以澄站在原地,周圍的聲音並沒有消失。有人在問下一班車往哪裡,有人催著服務台再查一次床位,也有人靠著欄杆睡著了。螢幕反光映在他的腕骨上,像一小塊冰冷的紅色火焰。
他沒有立刻按掉訊息,而是逐字看過一遍。系統公開頁面上,他只是剛完成一項任務的新居民;這條暗紅通知卻更像寫給某個早已等候他的人。高風險樣本,分類完成,標記同步。沒有說明由誰標記,也沒有寫明判定依據。
沈以澄把手腕轉向自己,遮住螢幕,目光越過人群,望向大廳高處那幾只玻璃罩鏡頭。鏡頭沒有追著他轉,遠端紅燈卻亮得穩定。他想起自己醒來時那套已被清空的身分資料,也想起剛才的直播留言,想起系統在他完成任務之前就準備好的任務介面。
有人比他更早知道他會出現在這裡。
他可以現在就把訊息截圖,卻不確定資料會送去哪裡;可以詢問服務台,也不確定那裡的人看不看得到同一份標記。他把終端收回外套袖口,緩緩吐出胸口積著的那口氣。接下來要做的事很簡單:先弄清楚床位在哪裡,再找出這條通知是誰留下的。
公共螢幕上的地圖忽然刷新,許多人的名字依序亮起,又很快暗下去。輪到沈以澄時,暗紅標記仍停在他的名字旁,像一枚不肯退場的印記。他在那片光裡讀到最後一個小字:觀察中。
讀者留言