第1章 完美同步率
武康的指尖在回车键上悬停了零点三秒,才重重按下去。
就这零点三秒的迟疑,让他事后回想起来都觉得离谱——明明已经并肩作战了三年,通关了三百四十六款游戏,按个确认键怎么还紧张得跟第一次见网友似的?
屏幕炸开一片绚烂的金色特效,硕大的艺术字带着粒子效果缓缓浮现:
【恭喜!您与队友“月半曲”已通关《虚空边境》全部隐藏关卡!当前进度:100%】
耳机里传来“嗤”的一声轻笑,清亮的女声裹着淡淡的电子杂音,却掩不住那份戏谑:“犹豫什么?怕系统卡bug不给结算?”
武康靠在电竞椅上,整个人向下滑了半截,长长舒了口气。凌晨三点的空气里弥漫着泡面、能量饮料和主机散热片混合的复杂气味。他揉了揉酸胀的眼睛,视线模糊了一瞬才重新聚焦。
“最后一关那个预判走位,”他说,“你提前了0.3秒。”
“你修复第七区代码墙的速度也比上次快了。”月半曲的声音里带着点小得意,“常规破解要17分钟,你用了9分42秒。怎么做到的?”
“把三层嵌套循环改成了并行处理,牺牲了点内存,换时间。”武康说着,顺手抓起桌面上半罐可乐灌了一口。气泡在舌尖炸开,带来短暂的清醒。“你那边呢?那串动态密码的加密方式明显改过,上次的破解脚本应该失效了才对。”
“嗯,失效了。”月半曲那边传来键盘的轻响,“所以我现写了个解密算法,基于斐波那契数列做了个变种密钥。不过说实话——”
她顿了顿。
“说实话?”武康追问。
“那算法,可得挺丑的,临时拼凑的玩意儿。”她笑起来,“但管用就行,对吧?”
武康也笑了。这是他们之间的默契:不追求代码的优雅,只追求效果的有效。就像两年前打《永恒之塔》时,为了赶在服务器维护前干掉最终boss,他们用了一堆堪称“暴力”的战术,场面难看但效率奇高。
他点开Steam库,鼠标滚轮缓缓下滑。密密麻麻的游戏图标像阅兵式一样排列着,每个图标右下角都带着一个小小的金色徽章——100%完成度。
双人成行、只只大冒险、传送门2、逃出生天……一直到最新的《虚空边境》,整整三百四十七款。
“我说,”武康忽然开口,“咱俩是不是把市面上能双人配合的游戏都打通了?”
耳机那边安静了几秒。他能想象出月半曲此刻的表情——大概率是歪着头,手指无意识地卷着耳机线,那是她思考时的习惯动作。虽然没见过面,但三年的语音连麦,足够他在脑子里构建出一个模糊的形象。
“好像……真是。”月半曲的声音轻了下来,“连那些冷门到只有几十条评测的独立游戏,咱俩都扫干净了。”
武康盯着屏幕,突然觉得有点空落落的。
这感觉很奇怪。就像追了多年的剧突然大结局,或者啃完了一本厚得能当凶器的小说。满足感是有的,但紧随其后的是一种“然后呢”的茫然。
他看了眼电脑右下角的时间,凌晨三点十七分。窗外是上海永不彻底沉睡的夜景,远处写字楼的零星灯光像散落的星星。明天——不对,是今天——上午十点还有周会,PPT还没改完。
“该睡了。”他说,却没动。
“嗯。”月半曲应了一声,也没动。
两人就这样隔着网络沉默。耳机里能听到她那边细微的背景音:大概是风扇的嗡嗡声,还有偶尔敲一下键盘的轻响。武康忽然想起三年前的那个晚上。
那也是这样一个深夜。武康当时还在那家互联网公司当后端程序员,被一个生产环境的bug折腾到凌晨两点。好不容易搞定,他瘫在工位上,鬼使神差地点开了Steam里吃灰已久的《代码迷宫》。
那是个冷门得要死的解谜游戏,画风简陋得像大学生的毕业设计。武康卡在第七关已经一周了——那一关需要两个人同时破解两组动态密码,还得在三十秒内完成同步提交。
公共频道里喊了半小时:“第七关求组,在线等,急。”
无人应答。
就在他准备关游戏睡觉时,一个组队邀请突然弹出来。Id很简单:“月半曲”。
武康点了接受。没有语音邀请,没有文字交流,倒计时开始后,两人直接动手。
那一关的设计很刁钻:左边是摩斯电码转二进制,右边是凯撒密码移位。需要一个人解码左边,同时另一个人解码右边,然后在同一时间点击提交。
武康习惯性地选了左边。他刚把第一个字符转换成功,就看到右边的密码已经开始自动滚动了——月半曲根本没等他,直接开了。
“喂!”武康当时心里一紧。这要是节奏乱了,绝对失败。
但下一秒他就发现,对方的节奏完美地卡在了他的间隙里。他解码一个字符,她移位一个字符。他转换完左边整段密文的同时,她刚好处理完右边最后一位。
28分14秒,通关画面弹出。
武康在聊天框愣了半天,最后打了两个字:“神了。”
几秒后,对方回复:“你也是。”
后来他们加了好友,发现彼此的游戏库重叠度高得吓人。都是全成就党,都厌恶游戏内的社交废话,都坚持“能操作解决就别废话”的原则。第一次连麦时,月半曲开口第一句话是:“黑暗之魂3的无名王者,你打了几次过的?”
武康想了想:“二十七次。”
“我三十一次。”她说,“但后来我写了个脚本分析他的攻击前摇,第二次开新档的时候一次过了。”
武康当时就笑了。他知道,这队友找对了。
“喂。”月半曲的声音把武康从回忆里拽出来,“发呆呢?”
“在想咱们第一次打《代码迷宫》。”武康老实承认。
“哦,那一关啊。”她顿了顿,“其实我当时也没把握,但看你左边解码的速度那么稳,就决定赌一把。”
“赌赢了。”
“一直赢到现在。”月半曲轻声说。
又是一阵沉默。但这次的沉默不太一样,空气里好像有什么东西在酝酿。武康看着屏幕上三百四十七个金色徽章,忽然觉得这些虚拟的荣誉像是一串长长的省略号,结尾悬在半空,等着谁来画上句点。
“其实,”月半曲忽然开口,声音比刚才轻了,轻得武康不得不把耳机音量调大,“我最近在玩一款……现实副本。”
武康愣了愣:“新游戏?没见你Steam库里有啊。”
“不是Steam上的。”她似乎舔了舔嘴唇——耳机里传来细微的湿润声响,“它叫《一起生活》。目前还在内测阶段,需要……线下组队。”
武康的心脏毫无征兆地漏跳了一拍。
他放在鼠标上的手指微微收紧。机箱风扇的嗡嗡声忽然变得明显起来,显示器蓝光在昏暗的房间里显得格外刺眼。窗外有辆夜班公交驶过,车灯的光斑在天花板上划过一道弧线。
“线下?”他听见自己的声音有点干。
“嗯。”月半曲说,“就……见个面。吃个饭,或者喝杯咖啡。就当是——”她斟酌着用词,“新DLC的试玩体验?”
武康没有立刻回答。他脑子里飞快地闪过一堆乱七八糟的念头:万一见面发现对方是个两百斤的壮汉用变声器怎么办?万一现实里完全没话说怎么办?万一连朋友都做不成了怎么办?
但所有的这些“万一”的尽头,是三年里三百四十七次完美配合,是无数个深夜隔着屏幕的默契笑声,是那个在他想象中已经无比清晰的、会歪着头卷耳机线的影子。
“有兴趣试试吗?”月半曲又问了一次。这次她的声音里带着一点罕见的、小心翼翼的情绪。
武康深吸一口气,吐出来。
“时间地点?”他说。
耳机里传来一声很轻很轻的笑,像是松了口气,又像是别的什么。
“周六下午四点,南京西路那家字节跳动咖啡馆。”她说,“我穿深色卫衣,背黑色双肩包。”
“我穿——”武康低头看了眼自己身上三天没换的T恤,“我穿件干净的。”
月半曲笑出声来:“行。那……周六见?”
“周六见。”
语音断开,武康摘下耳机,房间里瞬间安静得能听到自己的心跳。他盯着屏幕上那个灰色的“月半曲”头像,看了很久。
然后他猛地起身,冲进卫生间,对着镜子扒拉了下自己乱成鸡窝的头发。
“得剪个头。”他自言自语。
想了想,又补充一句:“还得买件新衬衫。”
窗外,上海的天色开始微微泛白了。新的一天要开始了。
而一个新的“副本”,正在加载中。