便利店收银台的日光灯闪了两下,像某种倒计时的提示。两个林北面对面站着,中间隔着半米的距离,货架上的方便面包装袋被空调吹得轻轻晃动。
“那是真实世界!”现在的林北吼了出来,声音在狭窄的空间里炸开,货架上的薯片袋被震得簌簌响,“这里有感情也是假的!方晴是NPC,老陈是NPC,你也是NPC!你身上那些伤疤,你以为是你自己挣来的?是系统分配给你们的!为了让我觉得这里真实,为了让我舍不得走!”
未来的林北没有退让。他的声音比现在的林北低,但更沉,像一块石头砸进深水:“她改嫁了!你已经死了三年!你回去看她跟别人在一起,有意义吗?!你站在病房窗户外面,看着她和另一个男人一起走进民政局,你能做什么?你能冲进去说‘我回来了’?你的身体是脑死亡的,你的器官是衰竭的,你的心跳是机器维持的!你回去,不是回到生活里,是回到一张病床上,一根氧气管,一堆电极片!然后呢?再死一次?这一次没有循环了!”
两个林北的吼声撞在一起,像两列火车对开。老陈站在收银台旁边,手里还攥着那块抹布,烟叼在嘴角,烟雾从鼻子里喷出来。他一直没有说话,任由两个人吵。直到两个人的声音都哑了,他才开口。
“你们想过没有,”老陈的声音不大,但压过了所有的噪音,“如果‘假的’也有感情呢?”
两个林北同时愣住。便利店突然安静了,只有日光灯的嗡嗡声和冰柜压缩机的低频震动。
老陈把抹布放在柜台上,掐灭烟头,站直身体。他指着自己的胸口,手指戳在灰色工作服的左胸口袋上,口袋里装着一包红塔山和一个打火机。
“我是NPC。”老陈说,“我知道。你们刚才放的视频我听到了。这个世界是模拟器,我是其中的一串代码。但我知道心疼你。我知道给你留夜班饭,饭凉了我会热一遍。我知道你在外面受了伤,回来的时候我要假装什么都没看见,因为你不喜欢被问。你说,这算不算感情?”
他转过身,指着货架区那面落地更衣镜。“你每次对着那面镜子问‘你是谁’,我在后面都听到了。我什么都没说,不是因为我不知道,是因为我不知道该怎么告诉你——你问的那个人,是你自己,但他不在这面镜子里。他在你自己的眼睛里。”
老陈又转回来,看着现在的林北。“你以为我不怕消失?怕。我比谁都怕。但我知道,你如果不去做这件事,你会比死还难受。你会在每一次循环里记得你今天的选择——你没有选,你退缩了,你活下来了,但你永远不知道真相。”
他顿了顿,从口袋里掏出烟盒,抽出一根,没点。
“我选了自己想做的事。”老陈说,“从第一天晚上你浑身是血冲进便利店开始,我就选了。不是因为你是什么bug,是因为你是林北。你每天凌晨三点来上班,从来不迟到。你会在收银台上放一颗糖,留给夜班的自己。你会把过期的面包放在外面的垃圾桶旁边,不是扔掉,是留给拾荒的老人。你是NPC也好,是bug也好,是真人也好——你是林北。这一点,比什么都真。”
林北说不出话。他的喉咙像被什么东西堵住了,嘴唇在抖,但没有声音。
未来的林北沉默了很久。他看着老陈,又看着现在的自己。然后他伸出手,手掌摊开,手心朝上。
“来吧,”他说,“我把记忆同步给你。所有两百次循环的记忆——包括我在第一次看到的那个东西。”
林北看着那只手。手掌上布满了伤疤,横的,竖的,交叉的,每一道都是一次死亡。掌纹被伤疤切断,感情线断成了三截,生命线在中途分叉,像一条河流遇到了峡谷。
他握了上去。
掌心相贴的瞬间,他的脑子里像被炸开了一个洞。不是疼痛,是洪水——两百次循环的记忆像决堤的水一样涌进来,每一个画面都带着完整的感官信息:疼、冷、热、臭、腥、苦、麻、胀、酸——所有他能想到的感官,所有他想不到的。
第一次循环不是从仓库开始的。第一次是从真实世界开始的——他在实验室里,躺在病床上,头上戴着电极帽,一个穿白大褂的科学家在跟他说话:“准备好了吗?你会进入一个完全真实的世界。在那里,你不会知道自己是在模拟器里。你会以为那是现实。”
林北——真实世界的林北——点了点头。他签了同意书。他的妻子站在玻璃窗外面,穿着那件白色连衣裙,笑着朝他挥手。他也笑了。那是他最后一次笑。
然后电流通过电极片传进他的大脑。画面消失了。他开始做梦。梦里的世界和现实一模一样——便利店、街道、仓库、老陈、方晴、每一个行人、每一辆汽车。他以为自己醒了。他不知道自己在做梦。他不知道这个梦永远都不会醒。
第二次循环,第三次,第十次,第五十次……每一次他都从仓库里醒来,每一次他都以为那是第一次。但身体在记录——手腕上的划痕,地上的刻痕,墙上的血字。身体知道,意识不知道。
第一百零七次。他终于想起了一些东西。不是记忆,是肌肉的记忆。他的手指在地上刻字的时候,大脑还没有反应过来,手已经动了。
第一百五十次。他发现了观测者。
第二百次。他在第一次死亡的那帧画面里,看到了“系统的源代码”。不是用眼睛看到的,是在意识消散的最后一秒,脑电波发出的最后一道信号里,嵌着一行字——不是人类语言,不是代码,是一种他能直接“理解”的指令。那行字的内容是:“意识可脱离模拟宇宙存在,需主动改写触发条件。”
被注释掉了。被谁注释掉的?不知道。但注释符的格式他认得——是模拟器底层的语言。只要删除那两个注释符,那行指令就会生效。他不需要回到真实世界,不需要从病床上醒来。他可以在模拟宇宙里创造一个属于自己的新身体——一个不受代码限制的、游离在系统之外的、真正的“自己”。
林北睁开眼睛。
他的眼白布满了血丝,瞳孔在颤抖,额头上的青筋暴起。他跪在地上,双手撑在地砖上,大口喘气。两百次循环的记忆在他脑子里翻涌,像两条河流汇在一起,冲刷着他所有的认知。
他抬起头,看着天花板上的日光灯。灯管发黑的两端像两只眼睛,也在看着他。
“我看到了。”他的声音沙哑得像从砂纸上刮下来的,“不需要消失,不需要循环——我可以改写代码。”
话音刚落,预知影像像洪水一样涌进他的意识。不是一道,不是十道,是无数道——整个世界在崩塌。二十秒后,天空会裂开。不是乌云裂开,不是雷电劈开,是天空本身像一堵墙一样裂开,露出后面的白色虚空。那里的颜色不是白的,是没有颜色。是宇宙大爆炸之前的那个“什么都没有”。十秒后,NPC会开始消失——不是方晴那种变成数据碎片,是像被橡皮擦擦掉一样,从边缘开始模糊,然后整个不见了。最先消失的是隔壁街道那个扫地的老大爷,然后是早餐店的老板娘,然后是快递站的快递员。
第五秒,货架上的商品开始变得透明。方便面包装袋上的字先模糊,然后整个袋子变成淡蓝色,最后什么都不剩。薯片袋、矿泉水瓶、巧克力棒、收银台上的打火机——一个接一个消失。
第零秒。天花板开始掉落灰烬,不是燃烧后的灰,是数据被删除后残留的白色粉末,像雪一样从头顶飘下来,落在林北的肩膀上,落在他的头发上,落在他的睫毛上。没有温度,没有气味,落在皮肤上就消失,像从来没存在过。
未来的林北站在他身边,抬头看着天花板。他的脸上没有恐惧,只有一种平静——像一个人看着自己住了很久的房子一点一点被拆掉,知道该走了。
方晴消失的位置再次出现了蓝色光点。那些光点从地砖的缝隙里渗出来,汇成一小片光晕,像萤火虫聚在一起。光晕中间,有什么东西在成形——白色的轮廓,像人。但刚聚到一半,又散开了。系统在尝试重生方晴,但已经来不及了。代码正在被删除,连重生程序都运行不完整。
老陈站在收银台后面,低头看着自己的手。他的手变得半透明了,能看到手掌下面的地砖花纹。他把手翻过来,手背也是半透明的,能看到血管——或者曾经是血管的东西,现在是一条一条蓝色的数据流,在缓慢地流动。
“看来我也要到时间了。”老陈说,声音很平静,像在说“我该下班了”。
他从柜台后面走出来,一步一步走到林北面前。每一步都很稳,脚踩在地砖上,发出熟悉的声响——皮鞋的橡胶底和瓷砖摩擦的声音。这个声音林北听了一百多次,每一次老陈从柜台后面走出来,都是因为他需要帮忙。
林北站起来。他的腿在发抖,但他的身体没有倒。他看着老陈,想说什么,但嘴唇只动了一下,什么声音都没发出来。
老陈从口袋里掏出那盒烟,红塔山,抽出一根,叼在嘴里。又从另一个口袋掏出打火机,点着了。他吸了一口,烟雾从鼻子里喷出来,在日光灯下散开。他把烟盒和打火机放在柜台上,拍了拍烟盒的盖子,说了一句:“别把我的烟抽完了。”
林北的眼眶红了。
老陈笑了一下。那个笑容和他平时给客人找零时的笑容不一样——不是客气,不是习惯,是一种终于可以不用再装的轻松。
头顶一块天花板碎片砸落。不是灰烬,是整块预制板,一平米见方,钢筋混凝土,边缘露出生锈的钢筋。碎片的正下方是林北——他低着头,没看到。老陈看到了。他没有喊,没有叫,甚至没有犹豫。他猛地扑过来,用身体挡住了那块碎片。碎片刺穿了他的胸膛——不是砸,是刺,钢筋像长矛一样从他的后背穿入,从前胸穿出。没有流血,没有骨头碎裂的声音。只有数据碎片从他的伤口里飘散出来,蓝色的,一片一片,像秋天的落叶。
老陈低头看着自己胸口那根钢筋,又抬头看着林北。他的嘴角咧开了,满嘴的血——不,不是血,是数据液,淡蓝色的,从牙齿缝隙里渗出来。他开口说话,声音断断续续,像收音机信号不好时的杂音。
“看吧……我选了自己想做的事。”
他的身体开始从边缘消散。先是手指,然后手掌,然后手臂。他像一张被火烧着的纸,从四周向中间卷曲,变成灰烬,变成光点,变成虚无。但他在最后一秒,眼神是亮的——瞳孔里映着林北的脸,他最后看到的东西。
“老板……”老陈的嘴唇动了动,“该交班了。”
然后他消失了。地上只剩下那根钢筋,和一块碎成粉末的天花板。钢筋上没有血,只有淡蓝色的液体在顺着螺纹往下淌,滴在地上,砸出细小的坑。
林北跪在原地,双手伸向前方,像要去抓住什么。但他的手穿过了老陈最后留下的一缕光点,什么都没有抓到。
未来的林北走过来,站在他身后。他从腰间掏出那把枪,黑星,九毫米,七发弹匣。枪把上缠着黑色防滑胶带,胶带翘起的位置和林北后腰别着的那把一模一样。他把枪递给现在的林北,枪口朝自己,握把朝林北。
“最后一次选择。”未来的林北说,声音很平,像在念一份已经读过无数次的说明书,“被我杀,进第202次循环。或者自杀,意识湮灭。”
林北接过枪。金属是凉的,枪管上还有余温——未来的林北一直把它别在腰间,体温把金属捂热了。他把枪握在手心,手指扣在扳机护圈外面,没有伸进去。他闭上眼睛。老陈消散的位置还有残余的光,淡蓝色的,像夜里的萤火虫,飘在空气中,慢慢下沉,落在地砖上,像一层薄薄的霜。
他深吸一口气。气从鼻腔进去,经过喉咙,经过气管,进到肺里。肺是真实的吗?不知道。但它在起伏,在收缩,在把氧气送进他的血液里。血液是真实的吗?不知道。但它在流,在把热量从心脏带到手指,从手指带到大脑。他是真实的吗?
他睁开眼,把枪口抬起来,没有对准自己,没有对准未来的自己。他对准了天花板——不,对准了天花板上面的东西。天空。已经裂开的天空。白色虚空后面的东西。源代码。那行被注释掉的指令。
“我选第三种。”他说。声音不大,但很稳,像一颗钉子钉进木头里,再也拔不出来。
“我要改写代码。”
未来的林北看着他,沉默了两秒。然后他笑了。不是苦笑,不是释然的笑,是一种林北从未见过的笑——像一个人在黑暗中走了很久,终于看到前方出现了光。他伸出手,拍了拍林北的肩膀,手指按在卫衣的布料上,能感觉到掌心粗糙的疤痕。
“那就去吧。”未来的林北说,“我在第1次等你。”
天花板的灰烬越落越多,像一场雪。便利店的货架已经完全空了,只剩下白色的金属框架,孤零零地立在那里。收银台上的烟盒和打火机还在,但烟盒上的字已经模糊了。墙上的便利贴一张一张脱落,像秋天的树叶,在空中飘了几下,然后蒸发。
林北走进休息室,走到那面落地更衣镜前。镜子还在,但镜面不再映出他的脸——镜子里只有白色的虚空。他看着那片虚空,镜面的银粉涂层在剥落,像雪花一样往下掉,露出后面的玻璃。玻璃也在变薄,变透明,像冰在融化。
他把手贴在镜面上。玻璃是凉的,和一百零九次循环前一样凉。但这一次,他不再害怕镜子里的自己会笑。因为镜子里的那个人就是他。笑的是他,哭的是他,想活下去的也是他。
他闭上眼睛。意识沉入黑暗。
黑暗不是空的。黑暗里有无数行绿色的代码,像瀑布一样从天而降,从地上升起,从四面八方涌过来。每一个字符都在跳动,每一个符号都在呼吸。他站在代码的洪流中,像一滴水站在大海里。
他伸出手,触碰第一行。
“死亡回溯触发条件=死亡。”
这行代码是红色的,比其他代码更亮,像血管里流动的血。他用意识触碰它,默念了一个词:“删除。”
代码闪烁了三下,然后消失了。红色的光熄灭,变成灰色,然后变成黑色,然后什么都不剩。死亡回溯的条件被删除了。从今以后,他不会再因为死亡而回到过去。死亡只是死亡。但他不在乎了,因为他不会再死了——至少不会在这个世界里死。
他伸出手,触碰第二行。
“意识存在范围=本宇宙。”
这行代码是蓝色的,像天空的颜色。他用意识触碰它,默念:“增加,范围=所有存在。”
代码闪烁了一下,然后分裂成两行。第二行变成了“意识存在范围=本宇宙+外部宇宙+真实世界”。蓝光从代码里涌出来,像打开了一扇门。
他伸出手,触碰第三行。
“观测者权限=管理员。”
这行代码是黑色的,比其他代码都暗,像深渊的颜色。他用意识触碰它,默念了两个字:“改成。”
代码开始变化。黑色褪去,变成灰色,然后变成白色,然后变成透明的。新的字符浮现出来:“观测者权限=引路人。”
不再是追杀他的人了,不再是要删除他的程序了。是引路人。是一个会在岔路口为他指路的存在。
代码重新编译。绿色的光芒从每一行代码里涌出来,汇聚在一起,变成金色的光。那道光从意识空间的中心向外扩散,照亮了所有的黑暗。
黑色褪去。白色虚空变成了金色。
林北睁开眼睛。
他还在便利店的休息室里。但一切都不一样了——天花板上的裂缝还在,但裂缝里不再是白色虚空,而是真实的天空。蓝色的,有云,有阳光。他低头看自己的手——手是实的,不透明,指甲盖上有血丝,指纹里有灰尘。他是真的。他不确定自己是在真实世界还是在模拟宇宙,但他知道,此刻的他是真的。
他推开休息室的门。
便利店货架区的金属框架还在,但货架之间站着一个人。未来的林北。他的身体已经开始变得透明——不是数据碎片那种透明,是一种更缓慢的、像潮水退去一样的消退。从脚开始,一点一点往上,像沙漏里的沙在往下流。
“你做到了。”未来的林北说。他的嘴角上扬,和之前每一次的笑都不一样。这一次是真的笑——没有释然,没有悲悯,没有期待。只是笑。
他化作金色的光点,一点一点融入现在的林北身体。不是吞噬,不是合并,是回家。两个意识融合在一起,像两条河流汇入大海。林北闭上眼睛,感觉到自己的记忆在重组——不是增加,不是删除,是整合同一条河流的不同分支。所有他经历过的,所有未来的他经历过的,都变成了“他的经历”。
他睁开眼,发现自己的脸上多了一道疤。左颧骨,和未来的林北一样的位置。
他摸了一下那道疤。疼的。真实的疼。
“谢谢你杀了107次的我。”林北对着空气说,“让我学会怎么活着。”
空气里没有人回答。但收银台上那盒红塔山还在。他走过去,拿起烟盒,抽出一根,叼在嘴里。打火机也在,老陈的那只,塑料外壳,透明的,能看到里面的煤油。他点着了,吸了一口,呛得眼泪直流。他不抽烟。但老陈说过,别把烟抽完了。
他不会抽完的。他会留一根,永远留一根。
墙上的血字在慢慢褪色。“别查真相,你会后悔的。”第一笔开始变淡,然后是第二笔,第三笔。像墨水被水稀释,红变粉,粉变灰,灰变白。最后一行字彻底消失了,墙面上只有几十层血痂留下的痕迹,像树干的年轮。
林北把照片从口袋里掏出来。照片里的女人——他的妻子,笑得很甜。他看了很久,然后把照片放回口袋,贴着心脏。
他转身看着休息室的那面落地更衣镜。镜面已经恢复了正常,不再剥落,不再透明。镜子里映出他的脸——灰色卫衣,右耳的纱布,左臂的绷带,左颧骨的新疤。手心的“镜”字还在,笔画歪歪扭扭,但比之前浅了一些。
他对着镜子说了一句话:“我会回来的。”
镜子里的他点了点头。
便利店的玻璃门被风吹开,铃铛响了三声。门外,街道恢复了正常——路灯亮着,垃圾桶旁边的野猫蹲在那里,绿眼睛。远处的天空,云是白的,天是蓝的。
林北走到门口,转过身,看了一眼空荡荡的货架。收银台上,老陈的烟盒和打火机并排放在一起。方便面没了,薯片没了,矿泉水没了。但那只猫脸咖啡杯还在。完整的,没有碎。他走过去,拿起咖啡杯,杯子里的咖啡已经凉了,但他还是喝了一口。苦的,加了一点奶。
他把杯子放回收银台。
然后他闭上眼睛,意识开始下沉。不是坠落,是潜行——穿过地板,穿过地基,穿过泥土,穿过岩石,穿过地幔,穿过内核。他要去的地方不在下面,在上面。他要去的地方叫“源代码”。
他在黑暗中伸出手,寻找那行被注释掉的指令。这一次,不是用眼睛找,是用身体找。老陈说得对,身体会记住。
手指触碰到了什么。不是代码,不是文字,是一行字符,发着光。两个注释符,一对括号,像一扇关着的门。他把手指伸过去,抹掉了那两个注释符。
门开了。