一、裂缝
李木子第一次察觉到不对劲,是因为一碗牛肉面。
那天中午他像往常一样走进公司楼下的“老张面馆”,老板老张头也不抬地喊了声“还是老样子?”,他点头,三分钟后一碗红烧牛肉面端上来,香菜铺得满满当当。他吃了三年,每周至少来四次,从来没腻过。
但今天他低头嗦面的时候,余光扫到墙角那张桌子。
一个穿灰色夹克的中年男人坐在那里,面前摆着一碗没动过的面,正对着空气露出一种礼貌性的微笑,嘴唇翕动,像是在跟谁说话。可对面分明没人。李木子愣了两秒,那男人忽然停下来,端起面碗喝了一口,整个动作流畅得像一段录好的动画循环播放。
李木子揉了揉眼睛。再抬头时,那男人已经正常了,正低头看手机,一切如常。
“没睡好。”他对自己说。
但他心里清楚,刚才那两秒里,那个男人的笑容、点头的幅度、喝汤的动作,精准得像被什么东西控制着,一板一眼,没有半点活人的松散劲儿。
那天下午回到工位,他打开Excel表格准备做季度报表,光标闪烁的瞬间,脑子里突然“嗡”了一声,视野里所有东西都模糊了半秒,像电视机换台时的雪花屏。等意识恢复,他发现自己正盯着屏幕,Excel已经打开了,表格填了一半,内容他完全没印象。
“加班加傻了。”同事王薇路过他工位时瞟了一眼,“你刚才发什么呆,叫你好几声都没反应。”
“走神了。”他笑笑。
但李木子知道,刚才那半秒空白不对劲。不是普通的走神——走神的时候脑子还在转,只是注意力飘了。刚才那半秒,是彻彻底底的“无”,像被什么东西从身体里抽走了一样。
他偷偷观察了王薇一整天。上午十点十五分,王薇端着咖啡从茶水间回来,路过走廊拐角时突然停住,眼睛直勾勾盯着墙面,脸上浮现出一种呆滞的表情,持续了大约三秒。然后她眨眨眼,若无其事地继续走回工位,坐下的动作和平时一模一样。
李木子记下了这个时间点。第二天上午十点十五分,他装作接水,站在走廊拐角。王薇果然又来了,端咖啡、拐弯、停住、呆滞、恢复。分秒不差。
“平行世界。”他脑子里蹦出这个词。他以前看过一些科普文章,说人在某些瞬间会感觉进入了平行世界,比如明明放在桌上的东西突然找不到了,或者明明记得做过的事别人说没发生过。
但现在他确定了:那些所谓的“平行世界”“记忆错乱”“突然脑子一片空白”,根本就是同一个原因——这个世界在暂停、加载、然后重启。
二、加载中
李木子开始系统地记录。
他给自己定了个规矩:每天写日记,记下所有感觉“不对劲”的瞬间。连续记了三十七天,他发现了一个规律:这些空白最长不过五秒,最短零点几秒,发生的时候毫无征兆,但事后他总能找到一丝痕迹。
比如,空白发生前的一瞬间,视野边缘会出现一条极细的蓝线,像显示器坏了一个像素点那么细,不仔细看根本注意不到。又比如,空白结束后的第一秒,周围环境的细节会“刷新”一遍——老张面馆墙上的菜单,昨天明明是“牛肉面15元”,今天变成了“牛肉面16元”,老张本人毫无察觉,找零的时候照样算15块。李木子多问了一句,老张愣了一下,低头看菜单:“哎?什么时候涨的?谁动我牌子了?”
再比如,他发现自己每天的通勤路线开始出现细微变化。本来从地铁站到公司只有一条路,要经过三个红绿灯,但最近一个月,每隔几天就会多出一条岔路,岔路尽头是一堵墙,走过去的时候墙面上会浮现出一行半透明的字,几秒后就消失了。他第一次看到的时候差点叫出声来,那行字写的是:
【资源加载中……请稍候】
“请稍候”三个字后面还有一个转圈的小图标。
李木子站在原地心脏狂跳。他试着伸手去摸那行字,手指穿了过去,像摸投影一样。三秒后字消失了,面前的墙恢复成普通的水泥墙,上面还贴着“禁止停车”的告示。
他做了个决定:不告诉任何人。
因为就在那天下午,王薇在茶水间跟他说:“你最近好奇怪,老盯着墙看。”她说这话的时候,表情很正常,语气也很随意,但李木子注意到她端杯子的手微微用力,指节泛白。
“我在想工作上的事。”他说。
王薇点点头走了。但李木子注意到,她走回工位的路上,拐弯的时候又停了一秒。
他开始怀疑:王薇是不是也发现了什么?还是说,她只是在执行某个“怀疑李木子”的情节线?
三、玩家
真正让李木子确认“我们是NPC”的,是一个穿校服的女孩。
那天他下班回家,在地铁站等车的时候,一个扎马尾、穿蓝白校服、背粉色书包的初中生站在他旁边,对着空气大声说话:“妈我不冷!真的不冷!你别老管我行不行!”
周围人来人往,没人觉得奇怪,因为都戴着耳机或者低头看手机。但李木子离她只有半米远,他清清楚楚地看到,女孩耳朵上根本没有耳机。她对着空气喊“妈”,语气自然得像真有个妈在跟她视频通话。
更诡异的是,女孩一边喊一边抬手在空气中滑动,动作跟他在手机上刷短视频的手势一模一样——拇指上划、双击、左右滑。
李木子试探性地问:“小朋友,你妈妈呢?”
女孩抬起头看了他一眼,眼神里闪过一丝慌乱,脱口而出:“我在跟我妈语音,关你什么事?”说完她迅速转身走开,步子很快,书包上的挂件叮当作响。
李木子注意到,她转身的瞬间,空中的手势停住了,像是被什么东西打断了一样。
第二天晚上,李木子加班到九点,从公司出来的时候天已经黑了。他抄近路穿过一条小巷,走到一半发现巷子尽头多了一扇以前没见过的铁门,门上贴着告示:
【副本入口:限时开放·剩余时间23:59:47】
他盯着那个倒计时看了半分钟。数字在跳。
然后铁门“吱呀”一声开了条缝,里面透出暖黄色的灯光和嘈杂的人声,像是酒吧或者夜市。一个穿西装的男人从门缝里探出头,冲他招了招手:“哥们儿,进来玩啊,新开的,酒水半价。”
李木子没有动。
他注意到那个西装男人的衬衫上有一行极淡的字,像水印一样浮在布料表面:
【NPC-9527·酒吧老板·对话模板12】
男人见他不说话,又重复了一遍台词:“哥们儿,进来玩啊,新开的,酒水半价。”语气、语调、甚至嘴角上扬的弧度都跟刚才一模一样。
“NPC……”李木子喃喃道。
就在他念出这两个字母的瞬间,整条巷子忽然抖了一下,像画面信号不稳的电视屏幕。西装男人的表情僵住了半秒,然后铁门“砰”地关上,墙面上跳出一行红字:
【警告:非授权访问。区域已重置。】
下一秒,他面前只剩一堵斑驳的老墙,上面贴满了小广告。
四、剧本
李木子花了一周时间确认了一个事实:他、老张、王薇、地铁上那个校服女孩,以及他见过的所有人——都是NPC。
这个世界的“玩家”只在特定时间出现,他们会“进入”某几个NPC的身体进行操作。被玩家控制的时候,NPC本人的意识会被压到最底层,就像电脑后台挂起的程序,不占前台显示,但还在运行。李木子之所以能察觉到异常,是因为他运气好——某次加载过程中出了个小bug,他意识没被完全压制,看见了“切换”的瞬间。
他管这个叫“夺舍视角”。
在那些时刻,他能看到自己身体被另一个人操纵着走路、说话、做动作,而那个“玩家”的视角会以半透明的小地图形式悬浮在他视野右上角,上面标注着当前任务、可交互物品、其他玩家位置。
“玩家”们似乎把这个世界当成某种大型多人在线游戏,进来之后随机附身NPC,做任务、刷好感度、解锁情节。任务完成后他们就下线,NPC恢复自主行动,但记忆会被覆盖——玩家操作期间发生的一切,NPC本人事后完全不记得。
“难怪每天都有那么多说不通的事。”李木子想,“为什么路边突然冒出没见过的店,为什么同事突然说出完全不符合人设的话,为什么我有时候明明没做过某件事却被人说‘你昨天不是干了吗’。”
他试着跟王薇隐晦地提了一句:“你有没有觉得,有时候时间好像停了一下?”
王薇盯着他看了三秒,然后笑出声:“你是不是又熬夜看科幻片了?”
李木子不死心:“就那种,突然一下,脑子里什么都没有,然后周围的东西好像变了那么一点点。”
王薇的笑容没变,但她的眼神在那一瞬间闪了一下,像电脑光标在输入框里闪了一下。她端起杯子喝了口水,说:“没有啊,你别瞎想。”
然后她转身走了。李木子注意到,她当天下午一直在工位上刷淘宝,但每翻一页就停下来发呆两秒,手指悬在空中不动。
当天晚上,李木子收到一条微信。王薇发的,只有四个字:
“你发现了?”
他还没来得及回,消息被撤回了。王薇的头像变成灰色,状态显示“离线”。第二天上班,王薇照常跟他打招呼、聊八卦、吐槽老板,仿佛什么都没发生过。
李木子打开聊天记录,那条“你发现了?”的痕迹还在,系统提示“对方撤回了一条消息”。
他截了图,存进加密相册。
五、规则
李木子给自己定下了三条铁律。
第一,绝不暴露自己觉醒了。NPC一旦被判定“异常”,系统会强制重置——他亲眼见过一次。公司楼下便利店的小哥某天突然对着货架大喊“这他妈都是假的!”,三秒后小哥的动作卡住了,表情凝固,周围所有人同时停下手里的活,齐刷刷扭头看他。五秒钟后,小哥恢复正常,笑容满面地问下一位顾客“需要什么”。李木子后来再去便利店,小哥看他的眼神跟看陌生人一样,而且他叫李木子“先生”而不是“李哥”——重置之后,NPC之间的“好感度”归零了。
第二,顺着剧本演。李木子开始研究自己这个NPC的“人设”——二十八岁,普通职员,单身,租房,每天两点一线,爱好是打游戏和看小说。他照着这个设定表演,该加班加班、该摸鱼摸鱼、该吐槽老板吐槽老板。他甚至在老板骂他的时候主动低头认错,因为系统弹了个提示:
【情节分支:职场受气包·好感度+5】
“好感度”是玩家和NPC之间的数据,但李木子发现他也能看到——只要盯着某个人心里默念“面板”,对方头顶就会浮出半透明的小字,显示名字、职业、好感度数值、当前状态(“空闲”“忙碌”“情节中”“待机”)。
第三,利用加载间隙。每次“脑子空白”的那几秒,世界其实是在加载新内容。加载完成后,总会有一些细微的变化——新开的店、新出的广告牌、新刷出来的NPC。李木子开始有意识地记录每次加载前后的差异,寻找“新内容”出现的规律。
他发现,假载是有预告的。每次大版本更新之前,街道上会多出一些“施工中”的围挡,围挡后面其实什么都没在施工,就是空地上飘着一行“敬请期待”的进度条。进度条走完那天,围挡撤掉,新建筑、新NPC、新任务一起上线。
“这不就是更新公告吗。”李木子哭笑不得。
他开始利用这些更新来“卡bug”。比如,新地图上线的时候,边界处会有短暂的逻辑混乱——他有一次在围挡刚撤掉的瞬间冲进新区域,看到两个NPC同时刷在同一个坐标点上,模型重叠在一起疯狂抖动,像穿模了一样。他试着走过去撞了一下,系统弹提示:
【发现异常:坐标冲突。已自动修复。】
然后他被弹回了原位置,脑子空白了两秒。
“修复需要时间。”李木子记下这个细节,“哪怕只有两秒。”
六、闯关
李木子花了三个月摸清了游戏的基本架构。
这个世界分为若干个“区域”,每个区域有独立的主线情节和支线任务。他所在的“江城”是一张新手地图,主要任务线是“职场新人升职记”,玩家进来之后随机附身同事或领导,给主角(也就是李木子)派活、打分、推进情节。好感度够高就能解锁“升职”结局,好感度太低则触发“开除”支线,玩家被踢出情节,换个身份重来。
“合着我这三年加过的班,全是给玩家刷经验用的。”李木子想明白了这一点之后,在工位上对着电脑屏幕默默比了个中指。
他开始有意识地“配合演出”。玩家附身领导让他加班,他就加班,顺便把系统弹出来的支线任务全接了——什么“帮同事带咖啡”“替领导写PPT”“陪客户喝酒”,每个任务完成后都有经验值和金币奖励。金币可以用来在商城买道具,比如“加班豁免券”“好感度加成卡”“情节跳过券”。
他攒了三个月,买了个最贵的道具:“地图编辑器·试用版(24小时)”。
这东西本意是给高级玩家自定义小游戏用的,但李木子用它打开了“系统后台”——能看到所有NPC的实时状态和代码标签。他发现每个NPC身上都有一串编号,他自己是【NPC-0741·职场新人·可攻略对象】。而王薇是【NPC-0742·同事·情报提供者·隐藏情节触发点】。
“0742,你果然不是普通同事。”李木子嘟囔道。
他顺着编号往下翻,发现了一个规律:编号越靠前的NPC,权限越高、智能越强。他是0741,算比较靠前的,难怪能觉醒。而编号1000以后的NPC,行为模式极其简单,基本就是“走路”“站着”“微笑”三件套。
“越早被吸进来的,越容易出bug。”李木子推断,“因为底层代码跑得久了,积攒的错误多。”
他利用地图编辑器找到了一个“后门”——在特定坐标、特定时间、用特定方式操作,可以短暂跳出当前区域,进入“系统管理界面”的预览模式。他试了一次,进去之后看到满屏滚动的日志:
【日志:玩家“爱吃猫的鱼”登录,附身NPC-0741】 【日志:玩家“爱吃猫的鱼”接受任务“加班到天亮”,NPC-0741好感度-3】 【日志:玩家“爱吃猫的鱼”下线,NPC-0741记忆覆盖中……完成】
“爱吃猫的鱼。”李木子记住了这个ID,“就是你小子天天让我加班。”
七、越狱
真正让李木子找到逃出机会的,是一次服务器维护。
那天早上他刚睁眼,视野里就跳出一行金色大字:
【系统公告:全服维护,预计时长6小时。维护期间所有玩家强制下线,NPC进入待机模式。】
他坐起来,发现窗外街道上一片死寂。所有人——行人、司机、路边摊贩——全部定在原地,姿势各不相同但表情统一空白。隔壁楼有个大爷保持着打太极的弓步,一动不动,像尊雕塑。
“待机模式。”李木子心跳加速,“玩家全下线了。”
他立刻打开地图编辑器,发现维护期间“系统管理界面”的权限限制大幅降低,可能是因为管理员也在摸鱼。他顺着后台一路摸到了“出口”选项,看到了一行灰色小字:
【NPC自主登出协议:需在系统维护期间、于主控节点执行特定操作序列。序列码:见任务栏隐藏任务。】
他翻遍了自己的任务列表,果然在已完成任务的最底下发现了一个从来没见过的条目:
【隐藏任务:寻找出口(已触发·进度3%)】 【描述:你察觉到了世界的真相。找到出口,或者永远做个好NPC。】 【进度:3%(你发现了加载间隙,继续探索吧)】
“3%?老子忙活大半年才3%?”
他往下翻,看到了任务提示:
【提示:主控节点位于“江城”区域中央枢纽——市政大楼顶楼服务器机房。进入方式:持有“管理员临时工牌”×1。】
“管理员临时工牌”他是见过的,玩家管理界面里有个“举报”按钮,点了之后会刷出一个穿西装的“客服NPC”,胸口别着工牌,处理完举报就消失。李木子之前举报过“同事王薇疑似穿模”,那个客服刷出来的时候他盯着工牌看了三秒,系统弹提示:
【是否复制“管理员临时工牌”?是/否】
他当时选了“否”,因为怕被系统抓到。但现在……
“待机模式,没人盯着后台。”李木子咬咬牙,打开客服界面,点了个“我要举报CEO周鸿运上班看黄片”。三秒后,一个西装革履的客服NPC刷在他面前,面无表情地说:“您好,请问有什么可以帮您?”
李木子盯着他胸口的工牌默念“复制”。系统弹提示:
【复制成功。道具已存入背包。】
客服说完“感谢您的反馈,祝您生活愉快”就原地消失了。
李木子攥着那张半透明的“管理员临时工牌”,从出租屋一路狂奔到市政大楼。路上全是静止的NPC,有个外卖小哥保持着骑车的姿势停在路中间,手机支架上的导航还在播报“前方五十米左转”。
市政大楼一楼大厅有个保安坐着打瞌睡——真打瞌睡,口水都流下来了,可能是待机模式漏了他一个。李木子绕开他进了电梯,按了顶楼。电梯门打开,走廊尽头是一扇防火门,门上贴着“机房重地,闲人免进”。
他把工牌往门禁上一贴。绿灯亮。
门后是一个巨大的机房,机柜一排排延伸到视线尽头,蓝色指示灯像星星一样闪烁。正中央有一个操作台,屏幕上显示着整个世界的运行数据:
【江城区域·在线NPC:12,847】 【在线玩家:0(维护中)】 【当前版本:v3.2.7】 【下次全服维护:4小时23分后】
操作台旁边有一个醒目的红色按钮,上面写着:
【紧急逃生通道·仅供管理员测试使用】
李木子深吸一口气,伸手按了下去。
八、逃逸
按钮按下去的瞬间,整个世界像被按了暂停键一样彻底静止。
然后他感觉自己被从身体里“抽”了出来——像脱掉一件衣服一样轻松。他回头看了一眼,自己的身体还坐在操作台前,保持着按按钮的姿势,眼睛睁着,但瞳孔里已经没有了光。
“原来这就是玩家视角。”他低头看自己,现在他是一团半透明的光球,飘在半空中,视野右上角有完整的玩家UI:血条、经验条、背包、任务栏、设置菜单。
系统弹出一行提示:
【检测到NPC自主登出。原因:bug(权限溢出)。是否上报?是/否】
李木子选了“否”。系统沉默了两秒,又弹一行:
【上报失败。连接超时。请稍后重试。】
“维护期间服务器卡是吧。”李木子乐了,“卡得好。”
他打开设置菜单,找到了“退出登录”按钮。按钮旁边有一行小字:“退出后将返回现实世界。NPC身份将被清除。”
“清除就清除呗,反正这破班我是一天也不想上了。”
他毫不犹豫地点了“退出”。
九、毁灭
李木子醒过来的时候,躺在一个金属舱里,舱盖半开着,脸上扣着VR眼镜,身上贴满了电极片。他一把扯掉眼镜,看到旁边排列着几百个一模一样的金属舱,每个舱里都躺着一个人,男女老少都有,全部双眼紧闭。
舱体侧面贴着标签:李木子,编号0741,入职日期2021.3.15。
“0741,比我编号靠后的都在里面。”他爬起来环顾四周,发现这个房间像个巨型服务器机房,金属舱整齐排列,每个舱顶部都有状态灯——大部分是绿色,少数几个闪着黄色。
他找到了0742,标签写着:王薇,编号0742,入职日期2021.3.15。
“果然。”他拍了拍舱盖,“喂,醒醒。”
王薇的眼皮动了动。
李木子没时间等她醒,他在机房角落找到了一台管理终端,屏幕上显示着整个游戏的架构图——“江城”“海城”“山城”三个大区,每个区里有上万个NPC角色,背后全是真人意识。
架构图最上方有一个按钮:
【关闭服务器并释放所有NPC】
按钮下面有一行警告:“关闭后将无法恢复,所有游戏数据将被永久删除。”
“你吓唬谁呢。”李木子点了下去。
十、醒来
王薇醒过来的时候,看到李木子蹲在她旁边嗑瓜子。
“你谁啊?”她茫然地坐起来,摸了摸脸上的电极片印子,“我操,我脸上这是啥?”
“面膜。”李木子说,“敷了三年了,效果不错吧。”
王薇瞪着他看了五秒,记忆像洪水一样涌回来:“李木子?……我是你同事?不对,我是NPC?不对,我是真人?不对不对不对——”
“别不对了。”李木子站起来拍拍手,“你确实是我同事,也确实当过NPC。现在游戏没了,大家都醒了,你自由了。”
王薇呆滞地扭头看了看周围——几百个金属舱陆续打开,有人哭有人笑有人喊妈有人骂街,场面一度非常混乱。
“那……我之之前那个公司呢?”王薇问。
“没了。”李木子掏出手机给她看——屏幕上显示“无信号”。“整个游戏服务器被我关了,那个世界已经删档了。你现在无业。”
王薇沉默了三秒。
“那你呢?”
“我?”李木子把瓜子壳扔进垃圾桶,“我打算写本小说,就叫《NPC觉醒》,第一章我已经想好了——从前有个倒霉蛋,吃面的时候发现老板是NPC……”
“你他妈别写我!”
“你已经是我前同事了,版权费分你一半。”
王薇翻了个白眼,但嘴角翘了起来。
远处有个穿校服的女孩哭着喊“妈我醒了”,一个中年男人正在挨个摇醒金属舱里的人,嘴里念叨着“都起来都起来,上班要迟到了”——说完他自己愣了一下,然后哈哈大笑。
李木子看着这一切,觉得这比当NPC有意思多了。