HiBizMan永久免费
📚Log In
📋 Table of Contents25
🌐 Language

第11章 · 松鼠与石碑

中文

手机屏幕的光是冷的,把宿舍的天花板映出一块惨白的矩形。沈砚保持着侧躺的姿势没动,拇指悬在推送通知上方两厘米的位置,能听见自己太阳穴处血管跳动的闷响——一下,又一下,节律近似远处十字路口整夜不熄的信号灯。 推送来自某家游戏垂直媒体的微博官号,标题截断在“神陨之墟策划组疑似……”这几个字上,后面跟着一个转发的次数标记,显示在角落里的数字比沈砚上个月看过的同类消息翻了三倍不止。他没有点开。拇指收了回来,按在电源键上,屏幕黑下去,只有呼吸灯还在床头的暗处一闪一闪地亮着苹果绿的光。 他躺了一会儿,耳朵捕捉到走廊尽头饮水机加热时咕噜噜翻涌的声音,那是夜里三点四十七分特有的动静——整层楼的人都睡了,只有那台机器在为明天清晨的第一杯热水做准备。 沈砚从床上坐起来。床垫的老旧弹簧发出干涩的咯吱声,他用脚趾在床前的地板上探了探,摸到拖鞋,绒面的鞋底触感还带着睡前踩过卫生间地砖残留的潮气。他把右手小臂压在膝盖上,看着窗外。宿舍楼的窗户朝北,对面是公司主楼B座的西侧山墙,墙面上嵌着三排空调外机,其中一台的扇叶被夜风吹得微微转动,铝合金百叶在路灯的余光里折射出稀薄的光晕。 三点五十二分,他决定出去一趟。 从七楼走下去而不是坐电梯——这是他下意识的选择。楼梯间的声控灯不太灵敏,他在四楼转角处跺了跺脚,灯光才嗡地一声亮起来,昏黄的灯泡把水泥台阶照出坑洼的阴影。他的手指滑过冰凉的金属扶手,掌心的汗液在表面留下一个转瞬即逝的湿痕。三楼与二楼之间的窗口开着一条缝,风钻进来,裹着绿化带里樟树叶子被露水浸透后那种苦涩清冽的味道。沈砚在窗口停了片刻,把额头贴在纱窗上,网眼把额头的皮肤压出一排整齐的细格印子,凉意从眉心渗进去,让脑子里的混沌散开了些许。 老赵面馆的招牌在街角亮着,那种老式的红字灯箱,字母的笔画缺了两截,“面”字右边的横折钩只剩下一半,亮光从缺口处溢出来,像有人在箱子里点了一根蜡烛。面馆开在园区北门外一条巷子的尽头,租用的是居民楼一层的底商,门口摆了四张折叠桌,此刻只有靠里面那张坐了人,桌上码着三个空了的啤酒瓶,瓶身上的水珠在桌面上汇成一小滩。 沈砚走近时,其中一个坐着的人正把筷子横过来抵在碗沿上转。那人寸头,圆领T恤的领口有点发黄,手肘旁边搁着一部屏幕裂了角的手机,手机背面的壳子上印着《神陨之墟》的主视觉图——那种硬核向的暗黑奇幻风格,画面正中是一个半跪的骑士背影,剑插进碎裂的地面。 “再来一碗,”寸头朝面馆里面喊,“加卤蛋。” 另一个人把手里的烟按进桌上的空易拉罐里,发出一声微弱的滋响。他抬头的时候先看见的是沈砚的手——那双手从外套口袋里伸出来,左手中指第二个关节有长期握鼠标磨出来的薄茧——然后才看见沈砚的脸。 “哥们儿,”抽烟那个开口了,声音是通宵后那种沙哑的,“你也是玩神陨的?” 沈砚在他们对面那张空桌前站了一下,塑料凳的腿在地砖上刮出刺耳的一声。“玩过。”他说。 第三个人一直没说话,面前的面几乎没动,筷子整齐地搁在碗右侧,筷尖朝外。他大概三十出头,戴一副银框眼镜,镜片反着灯箱透进来的红光,看不清表情。但他膝盖上摊着一本摊开的笔记本,上面用圆珠笔画了几条错乱的弧线,旁边标着时间轴,精确到秒。 “老哥你哪个区的?”寸头把那碗新端上来的面往自己面前拉了拉,筷头挑开葱花,“过了无常落石没有?” 落石。沈砚拉开塑料凳坐下来,凳腿又一次刮过地面,这一次声音更尖,像指甲划过黑板。他在那三个字砸进耳朵的时候,感觉后颈有根筋跳了一下。“无常落石,”他把这四个字重复了一遍,声音不大,尾音微微上扬,“你们卡在第二段还是第三段?” 抽烟的那个和寸头对视了一眼。寸头嘴里含着一口面,鼓着腮帮子含糊地说了句什么,把面咽下去以后才说:“第三段。石锥从天花板倒刺下来的那段,前面两段我们滚了二十多把,后面那把过的还算顺,结果第三段直接灭了三回。” 沈砚的目光落在那本摊开的笔记本上。戴眼镜的那人注意到了,把本子往他这边推了推。“第三段的触发间隔我们掐过,第一次是进门之后四秒七,第二次是八秒二,第三次……”他推了推镜框,“第三次不固定,最短的间隔只有二秒一,最长的拖到了十一秒,根本没法套节奏。” “你们怎么判断落点的?”沈砚问。 寸头的筷子停了一下。抽烟的把空易拉罐攥在手里,铝皮在他指间发出咔咔的轻微响声。“看地面阴影啊,石锥下来之前地上会先出个黑圈。”寸头说,“问题在于黑圈出来到石锥落下来的判定窗口只有零点六秒,反应时间根本不够。” 沈砚把手肘撑在桌面上,两只手的指尖对在一起,形成一个尖顶的形状。面馆里的灶火声从帘子后面传出来,油脂在铁锅里吱啦作响,混合着老赵偶尔咳一声的闷响。他在那个尖顶后面沉默了几秒,眼睛盯着桌面上那滩啤酒水渍,水渍的形状渐渐扩散,把一块桌面漆面上剥落的小坑填平了。 “石锥的触发不是基于玩家位置,”他说。每一个字出来之前他都在舌尖上过了一遍,像在测试这段信息能透露到什么程度,“是基于玩家的朝向。你们进门的时候,系统记录的是人物模型面对的象限角,后两段落石是根据角度的变化率来修正触发窗口的。所以你们越是想躲,角度改变越快,落石就越密集。” 寸头的嘴张着,筷子悬在半空。抽烟的那个把易拉罐捏得彻底瘪了,铝皮发出了最后一声闷响。 “也就是说,”戴眼镜的人低下头去看自己的笔记,圆珠笔的笔尖在纸面上顿了一下,“固定朝向,用侧移走位,不做视角转动?” “斜四十五度角切进去,”沈砚说,“石锥落点在你们站位的前方两个身位格,不会砸到模型中心。第一段落完以后有零点九秒的硬直窗口,把视角转回来重新锁正,重复这个循环。前提是你们队里三个人都做同样的操作。” “操,”寸头把筷子拍在碗沿上,面汤溅出来几点,“我们昨天晚上试了十二把,有八把都是因为T要回头看石锥位置,结果视角一转直接就触发了连落。” 抽烟的把手里瘪掉的易拉罐扔到桌子底下,金属罐在水泥地上弹了两下滚到墙角。“兄弟你做什么的?”他看着沈砚,目光里面多了点别的什么,“这细节不像是普通玩家能知道的。” 沈砚的右手离开桌面,缩回外套口袋里,指尖触到了手机侧边的电源键。“之前负责过一段时间的技术策划,”他说,“落石那一块的底层判定逻辑是我写的。” 三个人同时沉默了三秒。戴眼镜的人把笔记本合上了,手指按在封面上那枚圆珠笔漏墨留下的蓝点上,指腹反复摩挲那个小点,像在确认某种凭证。“所以老哥你现在不做了?”寸头问。 “转岗了。” “难怪,”寸头往后靠了靠,塑料椅背顶在墙面上发出声响,“我们群里昨天还在吵,说落石这个机制设计得反人类,有人说是bug,有人说官方故意拿玩家开涮。早知道问你就完了。”他顿了顿,把剩下那半碗面推开来,“我们一队人昨天晚上从十点打到凌晨两点,换了三波配置,最后一次灭团的时候队里奶妈直接退了语音,微信发了个句号就下线了。” 沈砚没有接话。他听见面馆里的灶火声停了,老赵围着围裙从帘子后面探出头来,围裙上沾着面粉的白印子,像雪落在深蓝的布面上。“小沈,还照旧?”老赵问。 “照旧。”沈砚说。 老赵缩回去,灶火重新嗡地一声燃起来,蓝色的火舌舔着锅底。沈砚把视线从帘子上收回来的时候,注意到戴眼镜那人本子上摊开的那一页,页脚有一个潦草的签名,笔迹压得很轻,但能辨认出首字母——L.Y.。这个名字他没在运营群里见过。 “你们是哪家公会的?”他问。 寸头还没来得及回答,面馆门口的风铃响了,不是普通的铜铃,是把好几个旧钥匙串在一起挂上去的那种,钥匙互相磕碰发出零碎的叮当。夜风从门口灌进来,把桌面上那张纸巾吹到了地上。沈砚侧过头去看,门口没有人,风铃还在兀自摇晃,钥匙齿痕上的锈迹在灯箱红光里显得发暗。 “公会名字我们自己都懒得记,”抽烟的那人把话题接回来,从口袋里摸出烟盒,敲了一根出来叼在嘴里,没点,“反正进本的队伍都是群里临时组的。老哥你要不要加个群?以后卡机制了直接问你。” 沈砚摇了摇头。“不方便。” “行吧。”那人也没追问,把烟从嘴上拿下来夹在指间。 面端上来了。老赵的手艺没变,汤头颜色偏深,浮着一层薄薄的油花,葱花切成均匀的细段漂在面上方。沈砚用筷子把面挑散,热气扑上来,沾在他的镜片上蒙了一层白雾。他吃第一口的时候,舌头触到汤里那种微微发麻的辣——老赵放了一种叫不出名字的干椒,磨成粉撒在碗底,每次吃每次味道都不一样。 他在吃面的间隙里瞟了一眼手机。凌晨四点十七分。屏幕锁屏界面上没有新的推送,呼吸灯也不再闪了。但他脑子里那根弦一直绷着,绷在“无常落石”这四个字的余音里。他刚刚给那几个玩家透露的信息,严格来说超过了当前版本对外公开的攻略范畴——朝向判定这个底层机制属于设计文档里不会写到玩家社区的内容。但现在已经无所谓了,因为那个被篡改过的线上包已经把原来的判定逻辑覆盖掉了,他透露的是旧版的东西,而旧版的东西在现在的游戏里已经不存在了。 他用筷子夹起最后一片牛肉的时候,指尖忽然停了一下。 不对。如果原来的判定逻辑已经被覆盖掉了,那这几个玩家现在面对的“无常落石”应该根本不会按旧的朝向规则运行。他们昨晚打的那十几把,碰到的问题,卡住的第三段——他们用的是那套被篡改过的机制,那套机制连沈砚自己都还没完全摸清触发规律。他刚刚给出去的那套解法,在当前版本里根本行不通。 他放下筷子,碗底磕在桌面上发出一声瓷质的清响。 “等一下,”他说。寸头正要站起来去结账,被他喊住了。“你们昨天晚上打的第三段,灭团的时候有没有注意到一个现象——石锥落下来之前,地面阴影有没有出现过重影?” 三个人互相看了一眼。戴眼镜的那个人又把笔记本翻开来,翻到后面几页,指尖划过纸上记的几行数字。“有一把,”他说,“第三把灭的时候,地上阴影边缘有个大约零二秒的拖尾。我当时以为是延迟,没记进去。” 沈砚的背离开了椅背。他的右手拇指和食指无意识地捏住了桌沿,塑料桌面在他指腹下微微凹陷。“那套解法可能不太对,”他说,“你们今天如果再试,不要用我说的那个四十五度角。换一个思路——进门以后先站三秒,不动,等第一波石锥的阴影出来以后,往阴影边缘的反方向走一步,然后停。后面所有的落石都会落在你们上一步站的位置。” 寸头的眼睛睁大了。“这是bug?” “不是bug,”沈砚说,“是某个已经被改过的版本里留下的……遗留参数。你们照我说的试试看。” 他没有再多解释。从口袋里摸出手机,亮屏确认了一下时间,然后站起来,把椅背扶正。戴眼镜的人从本子上撕下一张纸写了点什么,递过来的时候沈砚没有接。“联系方式就不用了,”他说,“试完以后如果成了,在公频里提一句‘三秒停步法’,我就知道你们过了。” 他转身走向门口,风铃又响了一次,这次是他自己的肩膀碰到了钥匙串。钥匙齿扎进他肩胛骨旁边的肌肉,隔着外套留下一阵钝痛。他推开门走出去,夜风迎面扑来,面馆里的热气被瞬间抽走,裸露的手背上的皮肤起了一层细密的鸡皮疙瘩。 回宿舍的路他选了另一条,绕到园区南侧的那排办公楼后面。这条路的照明更差,路灯的间距拉得很大,每两盏之间有一段完全的黑暗。他的脚步声在柏油路面上回响,节奏不快不慢。经过B座侧门的时候,他看见停车场入口的电子门禁柱上贴着一张新东西——A4纸,白色,用透明胶带固定了四角。停车场的门禁柱是那种粗壮的金属圆柱,刷了暗灰色的防锈漆,漆面在路灯底下泛着冷光。那张白纸贴在上面像一个不合时宜的补丁。 沈砚停下来。 他站的位置在门禁柱正前方大约两米,刚好在下一盏路灯的光照边缘,脚尖前面就是光的切面。他朝前挪了半步,让脸进入光线里,看清了纸上的内容: “空调外机检修通知。检修时间:五月十三日凌晨一时至三时。届时A座北侧及B座西侧外机将暂停运行,请相关楼层人员提前做好温度调节准备。如有疑问,请致电后勤保障部内线6123。落款处盖了一个圆形的红章,字迹模糊,只能认出最后三个字‘务中心’。” 沈砚没动。他站在那里读完了那张通知单上的每一个字,包括日期、时段、落款章上的模糊笔画,连透明胶带贴在纸面上折出来的细小气泡都没漏掉。他的目光在“五月十三日”那几个字上停得尤其久。 五月十三日凌晨一时至三时。他记得很清楚,那天晚上他从机房出来是十二点四十七分,老陈在运维室里趴着睡,咖啡杯倒在鼠标垫旁边,褐色的渍痕在垫子上洇出一个不规则的圈。他在走廊里站了一会儿,听见自己口袋里手机震动的嗡嗡声,屏幕上弹出一个运营群的@全体成员,内容是一段代码报错的截图。那段代码对应的模块后来他查过,是06区的白名单验证接口。再后来方睿告诉他,有个叫Kappa_Test_02的账号在那个时间点前后触发了某条隐藏的校验路由。 空调检修。 他伸手去够那张纸,指尖触到纸面,纸的质地是普通A4打印纸,温度比空气低一些,贴在金属柱上一整夜,把金属的凉意吸收到了纤维里。他用指甲轻轻刮了一下落款章的位置,红色印泥在指尖留下极淡的痕迹,没有完全干透。如果这张纸是五月十三号之前贴上去的,印泥应该早就干了。现在是六月二十一号深夜,印泥的湿度不对。 他在口袋里捏了捏手机,拇指划过解锁界面,打开相机的时候镜头自动对焦,白色纸面在取景框里微微过曝。他按了两下快门,听见快门声在空旷的停车场里被放大,像石子落进深井。拍完照片之后他把手机放回去,手指在放进去的那一刻触到了屏幕边缘某处——那个位置有一个极浅的凹痕,是早上他把手机滑进外套口袋时撞到桌角留下的。 他绕过门禁柱走到A座北侧的外墙下面。墙上并排挂着三台空调外机,最下面那台的型号铭牌边角有被撬动过的痕迹,螺丝孔周围的漆面有崭新的划痕,金属露出银灰色的本色,没有氧化发暗——说明是近期才留下的。他把手伸过去,食指的指腹沿着那道划痕摸了一遍,触感毛糙,是螺丝刀或者类似薄片工具用力刮过的特征。外机的扇叶静止着,但压缩机外壳的温度比环境温度高,不太明显,是那种停运了十几个小时后残存的微温,像一张刚睡醒的皮肤。 三点后停运的。他算了一下,如果检修单上的时间是真的,凌晨三点外机恢复运行,到现在的凌晨四点半,一个半小时的余温确实差不多是这个状态。但如果检修是假的,有人用这个时间窗口做了别的事——比如从外墙某个位置接驳设备、架设临时的数据传输线路——那这外机就是最好的掩护。 他退后两步,仰头看着A座北侧的整面外墙。建筑外立面是那种老式办公楼常用的白色小方砖,砖缝之间填着灰色的防水胶泥。在四层和五层之间的腰线上,有一截不起眼的黑色线缆贴着砖面走了一段,然后拐进了一台外机的格栅后面。那条线缆的走位方向指向B座,而B座西侧三层的窗户里,有一间的灯还亮着。他眯起眼睛数了数楼层——那是策划组的办公室。 沈砚把视线收回来,低头看着地面上自己的影子,路灯把他的轮廓拉得很长,影子脚的位置正好踩在空调外机冷凝水管滴落的一小滩水渍上。他蹲下来,用指关节敲了敲地面,水泥地在凌晨的低温里硬得像铁,关节敲上去传来清晰的痛感。 他站起来往回走的时候,脑里那根弦绷得比刚才更紧了。空调检修单的时间窗口是五月十三日凌晨一点到三点。监控录像如果还在,那个时间段B座西侧外墙的摄像头应该拍到了什么——至少拍到了有人进出外墙区域。但方睿说过,十三号的监控数据在三天后被轮转覆盖了一部分,只剩卡顿前后的两段残片。会不会是故意覆盖的? 宿舍楼的门禁系统在凌晨刷了一下他的工卡,屏幕弹出绿色的认证标记。他推门进去时,门轴发出干涩的声响。走廊里空无一人,声控灯在他经过时才依次亮起,在他身后又依次熄灭,像一串被逐一点燃又吹熄的蜡烛。他走到楼梯口的时候犹豫了一秒,没上七楼,而是拐进了一楼走廊尽头那间收发室旁边的杂物间——那间屋子的窗户正对着B座西侧的外墙,距离不到四十米。 杂物间的门没有锁。他拧开把手进去,一股积尘和旧纸箱的霉味扑上来。他摸到窗边,窗玻璃上落了一层灰,他用袖口擦了擦,擦出一小块透明的视野。从这个角度看出去,B座西侧那扇亮着灯的窗户尽收眼底,窗户后面有人影晃动了一下,轮廓很高,宽肩,头发短得几乎贴着头皮。那个人影在窗户前停了两秒,然后转身离开了窗边,灯随即熄灭。 沈砚把手从窗玻璃上收回来,袖口沾了一抹灰色的尘。他掏出手机看了一眼时间——四点四十一分。距离天亮还有两个小时,距离九点钟季成蹊办公室的那个约谈还有四个多小时。他需要在那之前把所有线索理清楚:空调检修单的印泥湿度、外墙线缆的走向、摄像头覆盖的时间窗口、Kappa_Test_02的触发日志、还有刚才那个熄灭灯的人影。 他走出杂物间的时候,手机在口袋里震了一下。他掏出来,屏幕上弹出一条短信,号码显示是个不认识的虚拟号段。短信的内容只有一行字,没有抬头没有落款: “别去季成蹊办公室。” 沈砚盯着那行字看了整整十秒。屏幕自动熄灭之后他又按亮了一次,确认那行字没有被撤回,也没有被删除——它就在那里,白底黑字,规规矩矩地躺在他收件箱最新一条的位置。 他忽然感觉刚才在面馆吃进去的那碗面在胃里沉了下去,像铅块一样坠着。 走廊尽头的声控灯在这时灭了,他站的地方重新陷入黑暗,只有手机屏幕的光把他的脸从下方照亮,颧骨和眉骨的阴影向上投去,让他的眼眶显得凹陷。他握着手机的手指收紧了,拇指关节压得发白。 走廊里什么声音都没有。但在黑暗里,他听见自己的心跳声从胸腔里传上来,沉而钝,像有人在远处一下一下地敲一面蒙了布的鼓。 他把手机放回口袋,在黑暗中站了三秒,然后转身,朝楼梯的方向走去。脚下每一步的落点都踩在水泥台阶的边缘——他没有开灯,靠脚底的触感判断台阶的位置。走到第二层转角的时候他停了一步,手指摸到扶手上一个不规则的缺口,那是有人用硬物磕碰后留下的凹痕,边缘锋利得像犬齿。 外面的路灯从楼道窗口斜射进来,把扶手那一道凹痕照成浅浅的银色。沈砚看着那道痕迹,忽然想起戴眼镜那人笔记本上的签名。L.Y.。这个名字在他脑子里转了一圈,没和任何一张脸对上号。 他继续往上走。七楼的走廊灯在他到达之前准时亮起,把他沾了灰的袖口和握过手机后微微发汗的掌心照得一清二楚。宿舍的门锁发出咔哒一声弹开的响动,他推门进去,门在身后合拢,把走廊的光截断在门缝外面。 现在房间里只有窗外透进来的那点天光——凌晨四点多,东边的天空开始泛出一层极淡的青白色,像一张被洗过太多次的蓝色棉布褪了色。沈砚坐在床沿上没有躺下去,他把外套脱了叠好放在枕头旁边,摘下眼镜用衣角擦了擦镜片上的雾气和指纹。然后他把手机放在床头柜上,屏幕朝下,金属背板碰触木质柜面时发出一声短促的磕碰响。 但他的手没有离开手机。指尖按在背板上,能感觉到设备内部处理器活动时产生的微弱温热。那温热像某种脉动,和远处空调外机外壳上残留的余温一样,让人分不清它是刚停下来的,还是即将开始的。 他闭上眼睛。闭上之后,眼球后方的暗红色光斑里有屏幕残余的短信内容在浮动——那七个字像被灼印在视网膜上一样清晰。 别去季成蹊办公室。 如果不去,他会失去唯一一个越过运营层、向更高管理层直接反映问题的渠道。如果去,他可能正在走向某个人为铺设好的陷阱,就像玩家在无常落石第三段里站到阴影正中央而不自知。 沈砚睁开眼睛。东边的天光比刚才亮了一些,窗台上积灰的表面泛起一层微弱的银白色光晕。他听见走廊里有人走动——隔壁房间的同事起夜了,拖鞋啪嗒啪嗒地拖过地面,然后是卫生间门关上的闷响,水箱注水的声音隔着墙壁传过来,绵长而稳定,像这个凌晨里唯一正常的事物。 他重新拿起手机,把短信截了图,存进一个加了密码的相册文件夹里。然后他翻开备忘录,在新建文档里敲下第一行字: “六月二十二日凌晨四点四十三分。收到预警短信。来源不明。” 光标在行末一闪一闪地跳动。窗外的天色又亮了一分,把窗台上那一圈灰尘的轮廓勾得更清楚了。沈砚看着那行字,拇指悬在屏幕键盘上方,他需要决定接下来的四小时里,是先去找方睿确认监控的事情,还是直接去查那条短信的来源。 光标还在闪。 他打完第二行字就锁了屏,把手机放回床头柜,然后起身穿上外套。天光会越来越亮,而暗处的事情,在天亮之前总是更容易看清一些。