马文龙的手指在桌面上敲出一串不均匀的节奏。
那是一种许琛很熟悉的声音——不是焦虑,不是犹豫,是某种决策链条在脑子里高速运转时的外在泄露。就像cpu在满载计算时,散热风扇会不由自主地提速一样。
“你说的这些人,”马文龙的视线从白板上那行字移开,落在许琛脸上,“好奇归好奇,但我不敢赌项目。”
他的语速比平时慢了半拍,每个字都带着一种经过称量的重量。这不是客套话。马文龙从来不说客套话——他连领带都懒得打的人,没有任何动力去维护社交礼仪。
“《天命人》现在的开发节奏你清楚。每一个模块的进度都卡在关键路径上,任何一个环节出了纰漏,整条流水线就得停。”他的食指在桌面上重重点了一下,指甲盖和木质桌面碰撞的声音在安静的会议室里格外清脆。“你游戏社那帮学生——我不否认他们可能有天赋。但天赋是一回事,能不能扛住3a项目的工业化强度是另一回事。”
许琛没有打断他。
马文龙把身体往前倾了两度,手肘撑在桌沿上,那件皱巴巴的灰色t恤在肩膀处绷出几道褶子。
“我需要一个可量化的筛选机制。”他说,语气里没有商量的余地,“不是你说行就行。得让奇迹游戏的资深开发人员出题——按《天命人》当前最难的模块出。数值组、ai行为树组、战斗节奏组,三套卷子。过不了的,一个都不要进来。”
他的最后一句话说得很平,但那种“一个都不要”的绝对性,像一把刀,把所有可能的讨价还价空间一刀切断了。
会议室里的空气凝了一瞬。温韵诗站在门边,手里的文件夹被她无意识地捏紧了一些,指节微微发白。她的目光在马文龙和许琛之间快速移动了一个来回,嘴唇抿成一条线。
许琛靠在椅背上,双手搭在扶手两侧。他的表情没有任何变化——没有紧张,没有犹豫,甚至连思考的间隙都没有。
“行。”
一个字。干脆得像刀切豆腐。
马文龙的手指停了。他显然没预料到这个回答会来得这么快——快到他甚至来不及做出“如果你有异议我们可以再商量”的准备动作。
许琛转过头,目光扫向坐在会议桌侧面的两个人。
王建。刘哲。
王建坐在左侧第三个位置,右手无意识地转着那支笔帽被咬裂的记号笔,笔杆在他指间翻了两圈。他的表情是一种克制的专注——嘴角既没上扬也没下压,但眼底有一层很薄的光,像猎人发现猎物进入射程时的那种微妙亢奋。
刘哲靠在椅背上,双臂交叉抱在胸前,那件洗得发白的黑色t恤胸口的“i
void
warranties”字样在日光灯下隐约可辨。他的表情比王建更收敛,几乎可以说是面无表情——但他的右脚在地面上轻轻点了两下,那是他在“有意思”的时候才会有的习惯动作。
“你们出题。”许琛说,语速不快,但每个字都指向明确的目标,“按《天命人》当前最难的模块出。数值组、ai行为树组、战斗节奏组,三套卷子,四十八小时内交到我手上。”
王建的笔停了。他和刘哲对视了一眼。
那个眼神交换只持续了不到半秒,但许琛看到了——两个人的瞳孔里同时闪过一丝极其微妙的东西。不是犹豫,不是为难。
是“正好让你看看差距”。
他们太清楚这些题目的难度了。
王建手里那支记号笔被他握紧了一些,裂开的笔帽在他拇指的压力下发出一声细微的嘎吱。他心里已经在构思出题方向了——“三姿态系统在不同地形下的碰撞体积补偿公式推导”,这道题他自己的组员平均需要四十分钟才能写完整。给一群大学生两个小时?能答出框架就算对得起“天才”这两个字了。
刘哲的嘴角动了一下,幅度极小,像是某种被压制住的笑意。他的ai行为树设计题更狠——要求考生在给定的敌人状态机框架下,独立设计一套完整的“精英怪”决策逻辑,包括感知范围、仇恨权重、技能释放条件和脱战判定。这道题的标准答案,是他自己花了三天时间迭代出来的。
“没问题。”王建开口了,声音里带着一种“你确定?”的潜台词,但嘴上说出来的只有三个字。
刘哲点了一下头,没说话。他的右脚又在地面上点了一下。
许琛把他们的表情收进眼底,嘴角没有任何弧度。他站起来,拿起搁在桌边的双肩包,拉链拉到一半停住了——他想起什么,转头看向温韵诗。
“通知游戏社那边,后天上午九点,全员到三楼大会议室。带笔记本电脑,不需要联网。”
温韵诗点头,手指已经在手机屏幕上飞快地打字了。
许琛拉上背包拉链,走出会议室。走廊里的冷气扑在他脸上,带着一股中央空调特有的干涩金属味。他没有回头。
身后,王建已经打开了笔记本电脑,新建了一个文档。文档名:“考核题目(终稿)。docx”。
他的手指悬在键盘上方,停了两秒。
然后开始打字。
——
两天后。
奇迹游戏三楼大会议室。
这间会议室平时用来做项目评审和里程碑汇报,面积大约一百二十平方米,长条会议桌被搬走了,取而代之的是四十七张临时从行政部调来的折叠桌。折叠桌的桌面是那种浅灰色的防火板材质,边缘包着铝合金的收边条,有些桌子的收边条已经翘起来了,露出底下发黄的胶水痕迹。
桌子排成六排,每排八张,最后一排只有五张。桌与桌之间的间距被刻意拉开到一米五以上——这是刘哲的要求,“防止抄袭”。
四十七名游戏社成员坐在各自的位置上。
他们的年龄从十九岁到二十二岁不等,穿着五花八门——有人穿着印有游戏角色的t恤,有人穿着学校统一发的运动外套,还有一个女生穿了件明显是昨晚通宵后没来得及换的格子睡衣外套,头发用一根圆珠笔别在脑后。
每人面前一台断网的笔记本电脑。屏幕上是刘哲亲自设定的考试系统——界面极简,黑色背景,白色字体,左上角一个倒计时器,右上角一个“提交”按钮。没有任何花哨的ui设计,甚至连字体都是系统默认的微软雅黑。
空调出风口的冷气从天花板上方吹下来,在折叠桌的金属桌腿上凝出一层极薄的水雾。
王建站在会议室前方,靠近白板的位置。他今天穿了一件深蓝色的polo衫,袖口没有卷起来——这是他在“正式场合”才会有的着装习惯。右手捏着一叠打印出来的题目终稿,a4纸的边缘被他的拇指和食指反复摩挲过,纸面微微起了毛。
他的嘴角带着一丝弧度。不明显,但在场的资深策划都看到了。
那是一种“我知道接下来会发生什么”的从容。
他出的数值题,核心考点是“三姿态系统在不同地形下的碰撞体积补偿公式推导”。这道题涉及三种棍法姿态在斜坡、台阶、悬崖边缘三种地形条件下的攻击判定范围修正——需要考生同时掌握物理引擎的碰撞检测原理、角色控制器的胶囊体参数关系,以及战斗设计中“手感”与“数值正确性”之间的平衡取舍。
他自己的组员——那些在天讯干了三年以上的资深策划——平均需要四十分钟才能写完这道题。而且写完的答案里,十个人有六个会在“边界条件处理”这个环节出错。
他自己的组员——那些在天讯干了三年以上的资深策划——平均需要四十分钟才能写完这道题。而且写完的答案里,十个人有六个会在“边界条件处理”这个环节出错。
给学生两个小时。能答出框架就算不错了。
刘哲站在会议室右侧靠墙的位置,双手插在裤兜里,肩膀靠着墙面。他的目光从四十七个学生身上缓慢扫过,像一台低速运转的扫描仪,不带任何情绪色彩地采集着信息。
他出的ai行为树设计题更难。
题目要求考生在一个给定的状态机框架下,为一个“精英级敌人”设计完整的行为决策逻辑。考生需要独立处理的变量包括:感知范围(视觉锥体角度、听觉衰减曲线)、仇恨权重(伤害仇恨、治疗仇恨、嘲讽技能的优先级覆盖)、技能释放条件(血量阈值、距离判定、冷却时间、连招前置条件)、以及脱战判定(追击距离上限、归位路径的a*寻路优化)。
这道题的标准答案,是他自己花了三天时间,迭代了七个版本之后才定稿的。
九点整。
王建看了一眼手腕上的表——卡西欧g-shock,表盘上的数字跳到了090000。
“开始。”
他的声音不大,但在安静的会议室里传得很远。四十七台笔记本电脑的屏幕上,倒计时器同时启动——“12000”开始往下跳。
会议室里响起一片键盘敲击声。密集的,不均匀的,像一场刚开始的雨。
王建走到第一排最左边的位置,开始缓慢地沿着过道往后走。他的脚步很轻,运动鞋的橡胶底在地面上几乎不发出声音。他的视线没有刻意去看任何一个人的屏幕——至少表面上没有。
但他的余光一直在工作。
第一排第三个位置。一个剃着寸头的男生,手指在键盘上的移动频率很高,但每隔十几秒就会停下来,右手食指在空中画一个小圈——那是在思考的时候无意识的习惯动作。屏幕上的文字在增长,但速度不算快。
第一排第六个位置。一个戴无框眼镜的女生,坐姿极端挺拔,脊背没有碰到椅背。她的打字速度很均匀,几乎没有停顿,像一台运转平稳的打印机。
第二排。第三排。
王建走过第四排的时候,他的余光扫到了一个东西。
第四排第二个位置。一个瘦高的男生,穿着一件洗得有些发旧的黑色连帽卫衣,帽子没戴,露出一头略长的碎发。他的坐姿有些懒散——身体往椅背上靠着,左手搭在键盘左侧,右手的食指和中指在触控板上缓慢移动。
他的屏幕上——
王建的脚步顿了。
那道碰撞补偿题。对方已经写完了。
不是框架。
是完整的公式推导。
三种地形的分支判断条件,用if-else的伪代码结构清晰地列在屏幕左侧。每一个分支下面,碰撞体积的修正系数用数学公式表达,变量命名规范,注释简洁但精准。边界条件处理——那个他自己组员十个人有六个会出错的环节——被对方用一个极其简洁的minmax钳位函数解决了。
二十分钟。
这道题他自己的组员需要四十分钟。
王建的喉结滚动了一下。他能感觉到自己的心跳在那一瞬间加快了半拍——不是紧张,是一种“预期被打破”时身体的自动反应。像是你以为面前是一堵墙,走近了才发现墙后面还有一片你没见过的天地。
他若无其事地继续往前走。脚步没有变化,速度没有变化,视线从那个屏幕上移开,落在了前方走廊尽头那扇紧闭的门上。
但他的右手——那只一直捏着题目终稿的右手——手指收紧了一些。a4纸的边缘在他的指腹下发出极细微的沙沙声。
——
两个小时后。
考试结束的提示音从四十七台电脑上同时响起——一声短促的“叮”,像医院心电监护仪的单次报警。
学生们陆续站起来,有人伸懒腰,有人揉太阳穴,有人低声跟旁边的人交流了两句。那个穿格子睡衣外套的女生把别在脑后的圆珠笔拔下来,头发散落在肩上,她用笔尖戳了戳自己的手背,像是在确认自己还活着。
王建和刘哲没有跟任何学生交流。他们收走了所有笔记本电脑,用一辆从it部借来的推车把电脑运到了四楼的阅卷室。
阅卷室是一间十五平方米左右的小会议室,平时用来做一对一的绩效面谈。房间里只有一张圆桌、六把椅子和一台投影仪。圆桌上摆着一台连接了所有考试数据的台式电脑,旁边是五份空白的评分表和一把红色签字笔。
王建、刘哲,加上三名资深策划——数值组的老陈、ai组的小林、战斗节奏组的赵工——五个人围坐在圆桌旁。
阅卷开始。
没有人说话。
房间里只有鼠标点击的声音、翻页的声音,和偶尔有人拔开笔帽时那声轻微的“啵”。
第一份卷子。刘哲从头看到尾,用了大约四分钟。他拿起红笔,在评分表的第一行写下一个数字:87。
笔尖在纸面上停留了半秒,留下一个比数字本身略大的墨点。他的眉头动了一下——不是皱眉,是眉心那块皮肤微微收缩了一毫米,像是某种意料之外的确认。
第二份。91。
第三份。76。这份答得一般,ai行为树那道大题的状态转移逻辑有明显的循环引用问题。刘哲在旁边画了个叉,没有多余的批注。
第四份。89。
分数一个接一个地填进评分表。红色的数字在白纸上排成一列,像一串正在生长的藤蔓。
老陈批到第七份的时候,手里的笔在空中停了两秒。他抬头看了刘哲一眼,嘴唇动了动,最终没有开口,又低下头继续批。
小林批到第九份的时候,发出了一声极轻的鼻音——“嗯”。不是疑问,是那种“原来如此”的确认音。
赵工从第一份批到第十份,一个字都没说。但他翻页的速度越来越慢。
王建批到第十二份的时候,手里的红笔停了。
他盯着屏幕上那份答卷的“ai行为树设计”大题,目光一动不动。
他盯着屏幕上那份答卷的“ai行为树设计”大题,目光一动不动。
答题者给出了一套标准的行为树结构——感知层、决策层、执行层,三层之间的数据流向用箭头标注,节点类型区分清晰(序列节点、选择节点、条件节点、动作节点)。每个节点的触发条件和退出条件都写得很详细,变量命名用的是驼峰式,注释是中英文混合的——关键术语用英文,解释性文字用中文。
这些都在预期之内。
让王建停下来的,是答卷最后面附的一段手写文字。
不是打字。是用电脑触控板手写输入的——字迹有些歪扭,但每个字都辨认得清楚。
“补充建议:当前设计中,重甲盾兵在被破盾后的恢复帧数(设定为45帧)与玩家追击窗口(劈姿态收招帧数32帧+切姿态延迟3帧=35帧)存在三帧的逻辑冲突。玩家在最优操作下仍有10帧的空窗期无法衔接下一次攻击,建议将盾兵恢复帧数调整为38帧,或为劈姿态增加一个3帧的追击加速修正。”
王建的瞳孔收缩了一下。
这个bug——重甲盾兵破盾后恢复帧数与玩家追击窗口的三帧冲突——是他自己的组员上周才发现的。发现的过程还很曲折:先是一个测试员在反复测试中感觉“打完盾兵之后总有一个很短的卡顿感”,然后策划组花了两天时间逐帧回放录像,才定位到这个三帧的逻辑空隙。
这个学生,在两个小时的考试时间里,不仅完成了整道大题的标准答案,还额外发现了一个他们团队花了两天才定位的设计缺陷。
王建把红笔放在桌上。笔杆滚了半圈,碰到评分表的边缘停住了。
他没有立刻写分数。
他抬起头,看了刘哲一眼。
刘哲也在看他。两个人的视线在空中相遇了大约一秒钟。刘哲的表情没有什么变化,但他的右脚——那只一直在地面上轻轻点着的右脚——停了。
王建低下头,拿起红笔,在评分表上写下了一个数字。
96。
——
全部阅卷完成。
刘哲把最终统计数据录入excel,连上投影仪,画面投到了阅卷室墙上那块不大的白色幕布上。
幕布有些旧了,右下角有一块淡黄色的水渍,边缘微微翘起。但上面的数据清晰可辨。
总参考人数:47人。
及格线(70分)以上:34人。
通过率:72。3%。
其中90分以上:11人。