失控算法
凌晨一点的网吧------------------------------------------ 凌晨一点的网吧。,其实就是她租的那间四十平单身公寓。隔出半间做了简易声学装修,墙上贴满凹凸不平的吸音棉,桌上架着一套不算便宜但也算不上顶级的设备。她摘下**耳机挂回架子上,刚才录的那首古风翻唱还在AU波形图里安安静静地躺着,几条音轨叠得整整齐齐,像她写的代码一样干净利落。。。“函函今晚还播吗?已经蹲了三个小时了呜呜呜。楼上别急,函姐每次录新歌都这样,录满意了才会上线。”,在群里丢了个“刚录完,等我导文件”的表情包,然后把工程文件保存、导出、关闭。右下角的时间跳到了十一点五十二分。,这个点该洗洗睡了。。,十八岁保研,如今二十一岁,声纹识别方向硕士在读。导师是国内该领域的顶尖学者,实验室项目排得密密麻麻,论文改了第三稿还被打了回来。她的人生被规划得像一行行排列整齐的代码,每一个变量都在掌控范围内——包括睡眠时间。凌晨三点睡是常态,六点爬起来去实验室跑数据也不在话下。。。可能是连续改了三天论文改得心烦,可能是新歌副歌那两句转音录了二十几遍都不满意,也可能是某种说不清道不明的焦躁,像一段跑不起来的代码卡在IDE里,不报错,也不出结果,就那么梗着。,鸭舌帽压到眉毛,背起笔记本电脑出了门。
十一月的夜风刮在脸上,带着北方城市特有的干燥和凛冽。她缩了缩脖子,穿过学校后门那条满是**摊和奶茶店的小街,在一家网咖门口停下来。
说是网咖,其实是个电竞馆。上下两层,一楼大厅全是并排的曲面屏和电竞椅,RG*灯带把整个空间染成赛博朋克式的蓝紫色。二楼是包房,隔音做得不错,关上门的瞬间能把楼下那些打团时的吼叫声过滤成一种沉闷的白噪音。
叶一函偶尔会来这儿。
不是因为宿舍没电脑。她自己那台台式机,配置能把这里最贵的包房机器按在地上反复摩擦。她来,纯粹是因为这里有一种奇妙的氛围——满屋子键盘声、鼠标点击声、此起彼伏的“上上上能打能打能打”,这些声音混在一起反而成了一种白噪音,让她写代码的时候格外专注。
她熟门熟路地上了二楼,开了个角落的包房。
电脑启动的间隙,她拿出手机刷了刷。*站**弹出三百多条未读消息,最新一条翻唱视频播放量已经破了八十万,弹幕密密麻麻飘过去,一半在夸唱功,一半在刷“函姐什么时候露脸”。微博超话里有人把她上一首翻唱的副歌部分截出来做了铃声,转发量过了两万。
叶一函扯了扯嘴角,把手机扣在桌上。
她不露脸是有原因的。少年班出身的人习惯了被围观——十五岁坐在大学教室里,周围的同学比她大三四岁,所有人都在看她。那种被目光注视的感觉像是一种无形的压力,不大,但持续存在,像**运行的程序一样悄悄占着内存。后来她在网络上唱歌,声音被人喜欢,这让她找到了一种新的存在方式——被人听见,但不必被人看见。
所以她给自己定了几条铁律:不露脸、不签约、不接商单。纯靠作品质量积累粉丝,既满足唱歌的爱好,又不影响正常的学术生活。三年下来,“函”这个ID在古风翻唱圈已经是一线级别的存在,但没人知道这个声音背后的人长什么样,在做什么,过着怎样的生活。
她喜欢这种控制感。
所有事情都分门别类地装在各自的文件夹里,打上标签,设定好权限,从不混淆。学术归学术,唱歌归唱歌,井水不犯河水。
打开IDE的时候,叶一函已经把注意力切换到了声纹识别项目上。最近在做的这个模型一直跑不理想,准确率卡在百分之八十二点七上不去,她怀疑是特征提取层的参数设置有问题。导师给了她两周时间,现在已经过去十天了。
键盘噼里啪啦响起来。
她沉进去了。
屏幕上IDE的光映在她脸上,眼睛亮得像两颗黑曜石。手指在键盘上飞舞的节奏稳定而快速,偶尔停下来盯着某段代码沉思几秒,然后继续。她写代码的时候有个习惯——嘴唇会微微翕动,像是在跟屏幕对话,又像是在念某段只有自己听得懂的咒语。
大概写到凌晨一点半左右,***的效力开始消退,眼皮有点发涩。
叶一函起身,推开包房门,准备去一楼前台再买杯咖啡。
然后她停住了。
一楼大厅的气氛跟她上楼之前完全不一样了。
之前是零零散散的路人局,各打各的,有打王者的有打LOL的有打永劫的,嘈杂得像一锅煮开的粥。现在所有人的注意力全部集中在最中央那一排座位上——五台机器一字排开,屏幕上齐刷刷亮着王者荣耀的加载界面,周围围了至少三十号人,但安静得像在听什么天书。
坐在中间位置的那个男人微微侧着头跟旁边的人说话。
叶一函站在人群外围,视线越过几个人的肩膀,落在他身上。
他穿一件黑色短袖。
十一月的天,网吧里暖气开得足,但大多数人也套了件薄外套。他只穿一件短袖,袖口挽到手肘上面,露出小臂上紧实的肌肉线条。不是健身房里刻意练出来的那种夸张维度,而是一种长期保持同一姿势、反复进行同一组动作之后自然形成的精瘦和流畅。
手指修长,指节分明,搭在手机屏幕上的姿态带着一种说不出的松弛感,像是这把游戏在他手里不过是一件微不足道的小事。
但他的眼睛不是这样说的。
那双眼睛盯着屏幕的时候,里面有一种冷而锋利的光,像淬过火的刀刃,安静地、精准地切割着战场上每一个细节。不是凶狠,不是专注,而是一种近乎冷漠的精确——他在看屏幕,但好像又不是在看屏幕。他看的是整个战场的信息流,是十个玩家的位置、技能CD、经济差、视野分布、下一步可能出现的所有分支路径。
叶一函认识那种眼神。
她在镜子里见过太多次了。
游戏加载完了。
*P阶段对面显然做了功课,前三手*an位直接按掉了这边的两个招牌打野和一手体系核心。围观的人里有人小声说了一句“针对得也太狠了”,但那个人连眉毛都没动一下,不紧不慢地在聊天框里打了几个字,然后选了一手版本冷门的刺客。
锁定的瞬间,加载界面上的ID闪了一下。
叶一函没看清,往前挪了半步。
然后她看清了。
那是个很简单的ID。四个字母,不加任何花哨的符号前缀,干干净净地挂在英雄头像下方:HuaiAn。
旁边观战的人里突然有人倒吸了一口气。
那声倒吸在安静的大厅里格外清晰,像石子丢进水面。紧接着是压低了嗓音的窃窃私语,从人群中央往外扩散,一层一层地漾开。
“**,那是——”
“不可能吧,那个号不是早就……”
“是他。你看那个进场走位习惯。绝对是本人。”
“淮神?淮神在这儿打网吧赛?”
“不是在打次级联赛吗?淮安电竞的预选赛不是刚打完?”
叶一函还是没明白他们在激动什么。
她打的是LOL,从S3开始玩的,AD位,钻一段位,在女生里算打得不错的。对王者荣耀的职业圈她了解不多,KPL对她来说只是一个偶尔在首页刷到的词,知道是个手游电竞联赛,知道有几个明星选手,但具体谁是谁一概不知。
但她认识那种气场。
那种一个人坐在一群人中间,却好像跟所有人之间都隔着一层透明玻璃的气场。那些围观的人、那些窃窃私语、那些亮起来的手机镜头,全部被挡在玻璃外面。他在玻璃里面,独自一人,安静地做着自己的事。
三分钟,一血。
他操作的刺客从草丛里出手的时机精确得像是用秒表卡过的。对面的打野正在打*uff,血量被野怪消耗到三分之二的位置,惩戒还在CD。他从视野盲区切入,一套技能打完,收下人头,转身就走。整个过程不超过两秒,干净得像外科手术。
围观的人群发出低低的惊呼。
五分钟,拿龙。
八分钟,对面三路外塔全破。
叶一函端着咖啡忘了喝。她站在人群外面看完了整场,手里的纸杯从烫手变得温热,又变得微凉。她看了很多细节——他切后排的时候会先虚晃一步骗出对面辅助的控制技能,他蹲草的位置永远卡在对面视野盲区的边缘,他团战进场时机的选择精确到帧,永远是在对面核心输出位交完保命技能的零点几秒之后出手。
这些东西在别人眼里是操作,是天赋,是手速。
在她眼里是算法。
是一个人对信息密度和决策路径的极致优化。每一步都在计算,每一步都踩在概率最高的节点上。不是反应快,是预判。不是手速快,是信息处理的效率高到了一种常人无法理解的程度。
他打游戏的方式,像她在写的代码。干净、准确、没有一行是多余的。
比赛结束了。
摧枯拉朽的胜利。对面水晶炸掉的那一刻,围观的人爆发出欢呼声,有人喊“淮神**”,有人拿出手机拍照录像,有人激动地拍同伴的肩膀。那个人放下手机,面无表情地活动了一下手腕,对周围的欢呼声充耳不闻。
他侧过头跟身边的队员说话。
声音很低,叶一函隔着人群听不清内容。但从口型和队员们的反应来看,大概是在复盘刚才那把比赛的某个细节。他说了几句话,队员点了点头,他就不说了。
全程没有多余的表情,没有多余的动作,没有多余的任何一个字。
他站起身。
叶一函这才发现他很高。目测至少一米八五往上,黑色短袖下面是宽而薄的肩背线条,不是那种厚重得像一堵墙的体格,而是像一把收在鞘里的刀——瘦长、锋利、安安静静地立在那里。整个人站在那里像一棵沉默的树,把周围所有嘈杂的声音都隔在了树冠之外。
他从前台拿了瓶矿泉水,拧开盖子喝了一口。
抬头的时候,视线不经意地扫过来。
和叶一函的目光在空气中碰了一下。
很短。不到一秒钟。
那双眼睛在她的方向上停留了大概零点三秒——叶一函对时间的感知一向精确——然后平静地移开了,像是她跟墙壁、前台、饮水机一样,只是这个空间里的一个普通物件。
他拧上瓶盖,转身走回座位。
叶一函站在原地。
手里的咖啡凉透了。
她低头看了一眼杯子里不再冒热气的褐色液体,脑子里只有一个念头,清晰得像IDE里突然跑通的一段代码,弹出那个绿色的“运行成功”对话框——
完了。
她的心跳声大得整个大厅都听得见。
当然这只是她的错觉。实际上她的心跳声只有自己能听见,那是一种沉闷的、有力的撞击,一下一下地敲在胸腔里,像是有人在她身体内部擂鼓。她能感觉到血液从心脏泵出来,沿着血管涌上脸颊、耳尖、指尖,带来一种从未有过的热度。
叶一函是那种最讨厌失控感的人。
她从小跳级,每一步都走在计划之前。学编程是因为编程是世界上最可控的东西——同样的输入永远得到同样的输出,同样的代码永远跑出同样的结果。如果结果不对,那一定是逻辑出了问题,找到*ug、修复、重新运行,一切回到正轨。
她做翻唱歌姬也是精确计算过的。选曲有算法,根据*站热门趋势、粉丝偏好、自己的音域适配度三个维度加权评分。发布时间有算法,根据平台流量高峰时段、竞品更新频率、节假日效应综合判断。连粉丝互动都有算法,回复频率、语气风格、人设边界,全部量化管理。
她把所有事情都装在各自的文件夹里,打上标签,设定好权限,从不混淆。
但此刻她站在网吧一楼大厅的角落里,感觉自己的整个系统正在被某种未经授权的程序全面渗透。所有防火墙同时失效,所有杀毒软件全部静默,那个程序大摇大摆地穿过她的理智防线,在核心处理器上安了家,开始运行一段她完全看不懂的代码。
她脑子里反复回放刚才那不到一秒钟的对视。
不是因为他长得好看——虽然确实好看。五官线条利落,眉骨和下颌的轮廓带着一种冷硬的锋利感,但他身上最吸引她的不是这些。是那双眼睛里的东西。
叶一函形容不出来。
但如果非要让她用自己能理解的语言来描述的话,那是一种“底层架构层面的孤独”。
不是没朋友的那种孤独。他在那群队员中间,队员们看他的眼神里有敬畏、有信任、有崇拜,说明他是一个被追随的人。他的孤独不是来自于没有人陪,而是来自于他站在了一个别人到不了的地方,环顾四周,没有同类。
他说话的时候队员们在听,但没有人真正接得住他的话。他复盘的时候队员们在点头,但没有人能跟得上他的思路。他在人群中,但人群进不去他的世界。
叶一函懂那种感觉。
十五岁坐在大学教室里的时候,周围的同学比她大三四岁,她坐在第一排,听懂了教授讲的每一个字,却听不懂课间休息时身后传来的所有玩笑。不是她不想融入,是她和那个世界之间隔着一层看不见的东西——可能是年龄,可能是智力,可能是某种与生俱来的、无法弥合的差异。
后来她学会了假装。学会了在别人聊天的时候跟着笑,学会了把自己塞进一个名为“正常”的壳里。但那层壳终究是壳,不是她。
所以她在那个人的眼睛里看到了同样的东西。
像一面镜子。
叶一函深吸一口气,把凉透的咖啡扔进垃圾桶,转身上了二楼。
她坐下来打开电脑,IDE里的代码还停在她离开时的那一行,光标一闪一闪地等着她。她把手放上键盘,打了三行,**两行,又打了五行,又全**。然后她靠在椅背上,望着天花板发了大概五分钟的呆。
她打开浏览器。
在搜索栏里敲了几个字:KPL 陈淮安。
回车。
搜索结果铺天盖地地涌出来。她一条一条看过去,看了大概二十分钟,把***带来的清醒全部用在了这件事上。
陈淮安,ID“HuaiAn”。KPL第一届联赛冠军战队的主力打野兼队长。职业生涯四年,带队拿下三次联赛冠军、两次杯赛冠军,个人获得两次FMVP,入选KPL名人堂时年仅二十一岁。
他的打法被圈内称为“教科书级别的野区统治”。不是说他操作多花哨,恰恰相反,他的操作在所有顶级打野里算是最简洁的那一档。他强在别的地方——强在对野区刷新时间的精确记忆,强在对敌方打野路径的预判,强在团战切入时机的选择,强在用最少的资源打出最大的压制效果。
退役那年,整个KPL的野区生态因为他一个人而发生过系统性的版本调整。
然后他在巅峰时期宣布退役。
原因未公开。
那年他才二十二岁。
退役后,他创立了自己的俱乐部“淮安电竞”,亲自带队打次级联赛,培养新人。不接受采访,不参与任何商业活动,社交媒体停在退役**发布的那一天,之后再无更新。像是一个人把自己从世界上删除了,只留下一个空白的页面。
评论区至今仍然有人在问为什么。有人说是手伤,有人说是合同**,有人说是被俱乐部雪藏,有人说是心灰意冷。没有任何一条来自他本人的回应。
叶一函翻到一段三年前的赛后采访视频。
画面里的陈淮安穿着队服坐在镜头前,额发被汗水打湿了贴在额头上。刚打完总决赛,**音是队友们庆祝的欢呼声,有人在喊“冠军冠军”,有人把矿泉水浇在他头上。他抬手抹了一把脸上的水,面对镜头的时候,嘴角没有笑,但眼神里有一种很淡的、不仔细看就看不出来的东西。
记者问他拿到FMVP有什么感想。
他想了想,说了两个字:“还好。”
记者显然不甘心,追问了一句:“淮神对未来的职业生涯有什么规划吗?”
他看了一眼镜头,还是那种平淡的语气。
“打到我打不动为止。”
那个视频叶一函反复看了三遍。
不是因为他说了什么惊世骇俗的话。恰恰相反,是因为他的每一个回答都短得不像一个站在巅峰上的人该说的话。不煽情、不膨胀、不营业,像一块被水流冲刷了千万年的石头,安静地沉在水底,不在乎岸上的人看不看得见。
三个月后他宣布退役。
叶一函关掉浏览器,屏幕重新亮起IDE的深**面。她盯着代码看了十几秒,然后做了一件她从学编程以来从未做过的事。
她新建了一个文件。
开始写一段完全没有计划、没有框架、没有任何预设目标的代码。
她写了一个爬虫。
***设置的是“淮安电竞”和“HuaiAn”。
跑起来的时候她觉得自己大概是疯了。堂堂计算机硕士,凌晨两点在网吧写爬虫去扒一个电竞选手的信息,这种事要是被导师知道,大概会痛心疾首地质问她是不是论文改傻了,然后让她把论文再改一版。
但代码不会骗人。代码跑出来的结果也不会。
那个爬虫最终只爬到了很少的东西。关于他的信息大多数集中在职业生涯期间,退役后的公开动态寥寥无几,甚至连他俱乐部招人的公告都发得很低调,像是不想被太多人注意到。仅有的几条相关新闻里提到,淮安电竞最近在备战次级联赛的预选赛,训练基地就设在本市。
叶一函看着屏幕上的结果,沉默了一会儿。
然后她关掉爬虫,重新打开IDE,切回了声纹识别项目的代码界面。手指落在键盘上的时候,她发现自己嘴角是翘着的。她没照镜子,但她知道自己在笑。
因为她在心里新建了一个文件夹。
这个文件夹的名字还没想好,标签也没打好,权限设置一片空白。里面目前只装了一样东西——一双安静的眼睛,和一排ID的四个字母。
她打了三行代码,停下来喝了一口凉透的水。
楼下的比赛不知道什么时候散了。走廊里传来脚步声和说话声,大概是那群队员打完收工了。叶一函侧耳听了一下,脚步声里有轻快的、有拖沓的、有边走边跟队友复盘的,但没有那个人的。她不知道自己是怎么分辨出来的,但她的耳朵就是告诉她——这些步频、这些力度、这些踩在地板上的节奏,全都不对。
她把耳机戴上,开始写代码。
第二天早上六点,她从网吧出来。
晨光薄薄地铺了一地,把整条街染成淡金色。空气里有刚洒过水的泥土味,早餐摊飘来煎饼果子和豆浆的香气,环卫工人推着车慢悠悠地走过,整条街正在缓慢地醒过来。
手机震了一下。
粉丝群在问昨晚怎么没直播。
她想了想,回了一条:“昨晚遇到一个很有意思的*ug,在de*ug。”
群里瞬间炸了,刷了一整屏的问号和“函姐你不会通宵写代码了吧”。
叶一函把手机揣回卫衣口袋,仰头看了看六点钟的天空。天很蓝,是一种被夜露洗过之后干干净净的蓝,像IDE里代码高亮主题的底色。
她往学校的方向走了几步,忽然停下。
打开手机地图,搜了一个地址。
淮安电竞俱乐部训练基地。
距离学校四公里,打车十五分钟。
她没去。她把地址收藏了,关掉手机,回宿舍洗了个澡,换了身衣服,去实验室开组会。导师问她论文修改得怎么样了,她说快了,昨晚刚解决了一个模型框架的问题。
她说这话的时候面不改色。
只有她自己知道,昨晚上她确实解决了一个问题。不是论文的问题,是一个更大的问题——她终于弄明白了自己这二十一年来对所有人事都精准计算、从不失控的原因。
不是因为她天生冷静。
是因为她一直在等一个能让所有防火墙同时失灵的变量。
现在这个变量出现了。
四个字母。
HuaiAn.
---
下章预告: 叶一函开始用自己的方式接近陈淮安——写爬虫扒他的公开资料只是第一步。接下来,她会用声纹识别技术分析他的比赛指挥录音,从声音里读出更多他从未对人说过的东西。而陈淮安会在某个不经意的时刻,发现自己的世界里多了一个来路不明的变量。
十一月的夜风刮在脸上,带着北方城市特有的干燥和凛冽。她缩了缩脖子,穿过学校后门那条满是**摊和奶茶店的小街,在一家网咖门口停下来。
说是网咖,其实是个电竞馆。上下两层,一楼大厅全是并排的曲面屏和电竞椅,RG*灯带把整个空间染成赛博朋克式的蓝紫色。二楼是包房,隔音做得不错,关上门的瞬间能把楼下那些打团时的吼叫声过滤成一种沉闷的白噪音。
叶一函偶尔会来这儿。
不是因为宿舍没电脑。她自己那台台式机,配置能把这里最贵的包房机器按在地上反复摩擦。她来,纯粹是因为这里有一种奇妙的氛围——满屋子键盘声、鼠标点击声、此起彼伏的“上上上能打能打能打”,这些声音混在一起反而成了一种白噪音,让她写代码的时候格外专注。
她熟门熟路地上了二楼,开了个角落的包房。
电脑启动的间隙,她拿出手机刷了刷。*站**弹出三百多条未读消息,最新一条翻唱视频播放量已经破了八十万,弹幕密密麻麻飘过去,一半在夸唱功,一半在刷“函姐什么时候露脸”。微博超话里有人把她上一首翻唱的副歌部分截出来做了铃声,转发量过了两万。
叶一函扯了扯嘴角,把手机扣在桌上。
她不露脸是有原因的。少年班出身的人习惯了被围观——十五岁坐在大学教室里,周围的同学比她大三四岁,所有人都在看她。那种被目光注视的感觉像是一种无形的压力,不大,但持续存在,像**运行的程序一样悄悄占着内存。后来她在网络上唱歌,声音被人喜欢,这让她找到了一种新的存在方式——被人听见,但不必被人看见。
所以她给自己定了几条铁律:不露脸、不签约、不接商单。纯靠作品质量积累粉丝,既满足唱歌的爱好,又不影响正常的学术生活。三年下来,“函”这个ID在古风翻唱圈已经是一线级别的存在,但没人知道这个声音背后的人长什么样,在做什么,过着怎样的生活。
她喜欢这种控制感。
所有事情都分门别类地装在各自的文件夹里,打上标签,设定好权限,从不混淆。学术归学术,唱歌归唱歌,井水不犯河水。
打开IDE的时候,叶一函已经把注意力切换到了声纹识别项目上。最近在做的这个模型一直跑不理想,准确率卡在百分之八十二点七上不去,她怀疑是特征提取层的参数设置有问题。导师给了她两周时间,现在已经过去十天了。
键盘噼里啪啦响起来。
她沉进去了。
屏幕上IDE的光映在她脸上,眼睛亮得像两颗黑曜石。手指在键盘上飞舞的节奏稳定而快速,偶尔停下来盯着某段代码沉思几秒,然后继续。她写代码的时候有个习惯——嘴唇会微微翕动,像是在跟屏幕对话,又像是在念某段只有自己听得懂的咒语。
大概写到凌晨一点半左右,***的效力开始消退,眼皮有点发涩。
叶一函起身,推开包房门,准备去一楼前台再买杯咖啡。
然后她停住了。
一楼大厅的气氛跟她上楼之前完全不一样了。
之前是零零散散的路人局,各打各的,有打王者的有打LOL的有打永劫的,嘈杂得像一锅煮开的粥。现在所有人的注意力全部集中在最中央那一排座位上——五台机器一字排开,屏幕上齐刷刷亮着王者荣耀的加载界面,周围围了至少三十号人,但安静得像在听什么天书。
坐在中间位置的那个男人微微侧着头跟旁边的人说话。
叶一函站在人群外围,视线越过几个人的肩膀,落在他身上。
他穿一件黑色短袖。
十一月的天,网吧里暖气开得足,但大多数人也套了件薄外套。他只穿一件短袖,袖口挽到手肘上面,露出小臂上紧实的肌肉线条。不是健身房里刻意练出来的那种夸张维度,而是一种长期保持同一姿势、反复进行同一组动作之后自然形成的精瘦和流畅。
手指修长,指节分明,搭在手机屏幕上的姿态带着一种说不出的松弛感,像是这把游戏在他手里不过是一件微不足道的小事。
但他的眼睛不是这样说的。
那双眼睛盯着屏幕的时候,里面有一种冷而锋利的光,像淬过火的刀刃,安静地、精准地切割着战场上每一个细节。不是凶狠,不是专注,而是一种近乎冷漠的精确——他在看屏幕,但好像又不是在看屏幕。他看的是整个战场的信息流,是十个玩家的位置、技能CD、经济差、视野分布、下一步可能出现的所有分支路径。
叶一函认识那种眼神。
她在镜子里见过太多次了。
游戏加载完了。
*P阶段对面显然做了功课,前三手*an位直接按掉了这边的两个招牌打野和一手体系核心。围观的人里有人小声说了一句“针对得也太狠了”,但那个人连眉毛都没动一下,不紧不慢地在聊天框里打了几个字,然后选了一手版本冷门的刺客。
锁定的瞬间,加载界面上的ID闪了一下。
叶一函没看清,往前挪了半步。
然后她看清了。
那是个很简单的ID。四个字母,不加任何花哨的符号前缀,干干净净地挂在英雄头像下方:HuaiAn。
旁边观战的人里突然有人倒吸了一口气。
那声倒吸在安静的大厅里格外清晰,像石子丢进水面。紧接着是压低了嗓音的窃窃私语,从人群中央往外扩散,一层一层地漾开。
“**,那是——”
“不可能吧,那个号不是早就……”
“是他。你看那个进场走位习惯。绝对是本人。”
“淮神?淮神在这儿打网吧赛?”
“不是在打次级联赛吗?淮安电竞的预选赛不是刚打完?”
叶一函还是没明白他们在激动什么。
她打的是LOL,从S3开始玩的,AD位,钻一段位,在女生里算打得不错的。对王者荣耀的职业圈她了解不多,KPL对她来说只是一个偶尔在首页刷到的词,知道是个手游电竞联赛,知道有几个明星选手,但具体谁是谁一概不知。
但她认识那种气场。
那种一个人坐在一群人中间,却好像跟所有人之间都隔着一层透明玻璃的气场。那些围观的人、那些窃窃私语、那些亮起来的手机镜头,全部被挡在玻璃外面。他在玻璃里面,独自一人,安静地做着自己的事。
三分钟,一血。
他操作的刺客从草丛里出手的时机精确得像是用秒表卡过的。对面的打野正在打*uff,血量被野怪消耗到三分之二的位置,惩戒还在CD。他从视野盲区切入,一套技能打完,收下人头,转身就走。整个过程不超过两秒,干净得像外科手术。
围观的人群发出低低的惊呼。
五分钟,拿龙。
八分钟,对面三路外塔全破。
叶一函端着咖啡忘了喝。她站在人群外面看完了整场,手里的纸杯从烫手变得温热,又变得微凉。她看了很多细节——他切后排的时候会先虚晃一步骗出对面辅助的控制技能,他蹲草的位置永远卡在对面视野盲区的边缘,他团战进场时机的选择精确到帧,永远是在对面核心输出位交完保命技能的零点几秒之后出手。
这些东西在别人眼里是操作,是天赋,是手速。
在她眼里是算法。
是一个人对信息密度和决策路径的极致优化。每一步都在计算,每一步都踩在概率最高的节点上。不是反应快,是预判。不是手速快,是信息处理的效率高到了一种常人无法理解的程度。
他打游戏的方式,像她在写的代码。干净、准确、没有一行是多余的。
比赛结束了。
摧枯拉朽的胜利。对面水晶炸掉的那一刻,围观的人爆发出欢呼声,有人喊“淮神**”,有人拿出手机拍照录像,有人激动地拍同伴的肩膀。那个人放下手机,面无表情地活动了一下手腕,对周围的欢呼声充耳不闻。
他侧过头跟身边的队员说话。
声音很低,叶一函隔着人群听不清内容。但从口型和队员们的反应来看,大概是在复盘刚才那把比赛的某个细节。他说了几句话,队员点了点头,他就不说了。
全程没有多余的表情,没有多余的动作,没有多余的任何一个字。
他站起身。
叶一函这才发现他很高。目测至少一米八五往上,黑色短袖下面是宽而薄的肩背线条,不是那种厚重得像一堵墙的体格,而是像一把收在鞘里的刀——瘦长、锋利、安安静静地立在那里。整个人站在那里像一棵沉默的树,把周围所有嘈杂的声音都隔在了树冠之外。
他从前台拿了瓶矿泉水,拧开盖子喝了一口。
抬头的时候,视线不经意地扫过来。
和叶一函的目光在空气中碰了一下。
很短。不到一秒钟。
那双眼睛在她的方向上停留了大概零点三秒——叶一函对时间的感知一向精确——然后平静地移开了,像是她跟墙壁、前台、饮水机一样,只是这个空间里的一个普通物件。
他拧上瓶盖,转身走回座位。
叶一函站在原地。
手里的咖啡凉透了。
她低头看了一眼杯子里不再冒热气的褐色液体,脑子里只有一个念头,清晰得像IDE里突然跑通的一段代码,弹出那个绿色的“运行成功”对话框——
完了。
她的心跳声大得整个大厅都听得见。
当然这只是她的错觉。实际上她的心跳声只有自己能听见,那是一种沉闷的、有力的撞击,一下一下地敲在胸腔里,像是有人在她身体内部擂鼓。她能感觉到血液从心脏泵出来,沿着血管涌上脸颊、耳尖、指尖,带来一种从未有过的热度。
叶一函是那种最讨厌失控感的人。
她从小跳级,每一步都走在计划之前。学编程是因为编程是世界上最可控的东西——同样的输入永远得到同样的输出,同样的代码永远跑出同样的结果。如果结果不对,那一定是逻辑出了问题,找到*ug、修复、重新运行,一切回到正轨。
她做翻唱歌姬也是精确计算过的。选曲有算法,根据*站热门趋势、粉丝偏好、自己的音域适配度三个维度加权评分。发布时间有算法,根据平台流量高峰时段、竞品更新频率、节假日效应综合判断。连粉丝互动都有算法,回复频率、语气风格、人设边界,全部量化管理。
她把所有事情都装在各自的文件夹里,打上标签,设定好权限,从不混淆。
但此刻她站在网吧一楼大厅的角落里,感觉自己的整个系统正在被某种未经授权的程序全面渗透。所有防火墙同时失效,所有杀毒软件全部静默,那个程序大摇大摆地穿过她的理智防线,在核心处理器上安了家,开始运行一段她完全看不懂的代码。
她脑子里反复回放刚才那不到一秒钟的对视。
不是因为他长得好看——虽然确实好看。五官线条利落,眉骨和下颌的轮廓带着一种冷硬的锋利感,但他身上最吸引她的不是这些。是那双眼睛里的东西。
叶一函形容不出来。
但如果非要让她用自己能理解的语言来描述的话,那是一种“底层架构层面的孤独”。
不是没朋友的那种孤独。他在那群队员中间,队员们看他的眼神里有敬畏、有信任、有崇拜,说明他是一个被追随的人。他的孤独不是来自于没有人陪,而是来自于他站在了一个别人到不了的地方,环顾四周,没有同类。
他说话的时候队员们在听,但没有人真正接得住他的话。他复盘的时候队员们在点头,但没有人能跟得上他的思路。他在人群中,但人群进不去他的世界。
叶一函懂那种感觉。
十五岁坐在大学教室里的时候,周围的同学比她大三四岁,她坐在第一排,听懂了教授讲的每一个字,却听不懂课间休息时身后传来的所有玩笑。不是她不想融入,是她和那个世界之间隔着一层看不见的东西——可能是年龄,可能是智力,可能是某种与生俱来的、无法弥合的差异。
后来她学会了假装。学会了在别人聊天的时候跟着笑,学会了把自己塞进一个名为“正常”的壳里。但那层壳终究是壳,不是她。
所以她在那个人的眼睛里看到了同样的东西。
像一面镜子。
叶一函深吸一口气,把凉透的咖啡扔进垃圾桶,转身上了二楼。
她坐下来打开电脑,IDE里的代码还停在她离开时的那一行,光标一闪一闪地等着她。她把手放上键盘,打了三行,**两行,又打了五行,又全**。然后她靠在椅背上,望着天花板发了大概五分钟的呆。
她打开浏览器。
在搜索栏里敲了几个字:KPL 陈淮安。
回车。
搜索结果铺天盖地地涌出来。她一条一条看过去,看了大概二十分钟,把***带来的清醒全部用在了这件事上。
陈淮安,ID“HuaiAn”。KPL第一届联赛冠军战队的主力打野兼队长。职业生涯四年,带队拿下三次联赛冠军、两次杯赛冠军,个人获得两次FMVP,入选KPL名人堂时年仅二十一岁。
他的打法被圈内称为“教科书级别的野区统治”。不是说他操作多花哨,恰恰相反,他的操作在所有顶级打野里算是最简洁的那一档。他强在别的地方——强在对野区刷新时间的精确记忆,强在对敌方打野路径的预判,强在团战切入时机的选择,强在用最少的资源打出最大的压制效果。
退役那年,整个KPL的野区生态因为他一个人而发生过系统性的版本调整。
然后他在巅峰时期宣布退役。
原因未公开。
那年他才二十二岁。
退役后,他创立了自己的俱乐部“淮安电竞”,亲自带队打次级联赛,培养新人。不接受采访,不参与任何商业活动,社交媒体停在退役**发布的那一天,之后再无更新。像是一个人把自己从世界上删除了,只留下一个空白的页面。
评论区至今仍然有人在问为什么。有人说是手伤,有人说是合同**,有人说是被俱乐部雪藏,有人说是心灰意冷。没有任何一条来自他本人的回应。
叶一函翻到一段三年前的赛后采访视频。
画面里的陈淮安穿着队服坐在镜头前,额发被汗水打湿了贴在额头上。刚打完总决赛,**音是队友们庆祝的欢呼声,有人在喊“冠军冠军”,有人把矿泉水浇在他头上。他抬手抹了一把脸上的水,面对镜头的时候,嘴角没有笑,但眼神里有一种很淡的、不仔细看就看不出来的东西。
记者问他拿到FMVP有什么感想。
他想了想,说了两个字:“还好。”
记者显然不甘心,追问了一句:“淮神对未来的职业生涯有什么规划吗?”
他看了一眼镜头,还是那种平淡的语气。
“打到我打不动为止。”
那个视频叶一函反复看了三遍。
不是因为他说了什么惊世骇俗的话。恰恰相反,是因为他的每一个回答都短得不像一个站在巅峰上的人该说的话。不煽情、不膨胀、不营业,像一块被水流冲刷了千万年的石头,安静地沉在水底,不在乎岸上的人看不看得见。
三个月后他宣布退役。
叶一函关掉浏览器,屏幕重新亮起IDE的深**面。她盯着代码看了十几秒,然后做了一件她从学编程以来从未做过的事。
她新建了一个文件。
开始写一段完全没有计划、没有框架、没有任何预设目标的代码。
她写了一个爬虫。
***设置的是“淮安电竞”和“HuaiAn”。
跑起来的时候她觉得自己大概是疯了。堂堂计算机硕士,凌晨两点在网吧写爬虫去扒一个电竞选手的信息,这种事要是被导师知道,大概会痛心疾首地质问她是不是论文改傻了,然后让她把论文再改一版。
但代码不会骗人。代码跑出来的结果也不会。
那个爬虫最终只爬到了很少的东西。关于他的信息大多数集中在职业生涯期间,退役后的公开动态寥寥无几,甚至连他俱乐部招人的公告都发得很低调,像是不想被太多人注意到。仅有的几条相关新闻里提到,淮安电竞最近在备战次级联赛的预选赛,训练基地就设在本市。
叶一函看着屏幕上的结果,沉默了一会儿。
然后她关掉爬虫,重新打开IDE,切回了声纹识别项目的代码界面。手指落在键盘上的时候,她发现自己嘴角是翘着的。她没照镜子,但她知道自己在笑。
因为她在心里新建了一个文件夹。
这个文件夹的名字还没想好,标签也没打好,权限设置一片空白。里面目前只装了一样东西——一双安静的眼睛,和一排ID的四个字母。
她打了三行代码,停下来喝了一口凉透的水。
楼下的比赛不知道什么时候散了。走廊里传来脚步声和说话声,大概是那群队员打完收工了。叶一函侧耳听了一下,脚步声里有轻快的、有拖沓的、有边走边跟队友复盘的,但没有那个人的。她不知道自己是怎么分辨出来的,但她的耳朵就是告诉她——这些步频、这些力度、这些踩在地板上的节奏,全都不对。
她把耳机戴上,开始写代码。
第二天早上六点,她从网吧出来。
晨光薄薄地铺了一地,把整条街染成淡金色。空气里有刚洒过水的泥土味,早餐摊飘来煎饼果子和豆浆的香气,环卫工人推着车慢悠悠地走过,整条街正在缓慢地醒过来。
手机震了一下。
粉丝群在问昨晚怎么没直播。
她想了想,回了一条:“昨晚遇到一个很有意思的*ug,在de*ug。”
群里瞬间炸了,刷了一整屏的问号和“函姐你不会通宵写代码了吧”。
叶一函把手机揣回卫衣口袋,仰头看了看六点钟的天空。天很蓝,是一种被夜露洗过之后干干净净的蓝,像IDE里代码高亮主题的底色。
她往学校的方向走了几步,忽然停下。
打开手机地图,搜了一个地址。
淮安电竞俱乐部训练基地。
距离学校四公里,打车十五分钟。
她没去。她把地址收藏了,关掉手机,回宿舍洗了个澡,换了身衣服,去实验室开组会。导师问她论文修改得怎么样了,她说快了,昨晚刚解决了一个模型框架的问题。
她说这话的时候面不改色。
只有她自己知道,昨晚上她确实解决了一个问题。不是论文的问题,是一个更大的问题——她终于弄明白了自己这二十一年来对所有人事都精准计算、从不失控的原因。
不是因为她天生冷静。
是因为她一直在等一个能让所有防火墙同时失灵的变量。
现在这个变量出现了。
四个字母。
HuaiAn.
---
下章预告: 叶一函开始用自己的方式接近陈淮安——写爬虫扒他的公开资料只是第一步。接下来,她会用声纹识别技术分析他的比赛指挥录音,从声音里读出更多他从未对人说过的东西。而陈淮安会在某个不经意的时刻,发现自己的世界里多了一个来路不明的变量。