下一章 上一章 目录 设置
33、第三十三章 可以吗? ...
-
十二月上旬,谢知年的毕设终于从一份写满箭头和注释的文档,慢慢长出了点像样的轮廓。
旧教学楼的场景已经搭完,灰蓝色的走廊、蒙着水汽的玻璃窗、坏了一半的应急灯,还有一阵接一阵砸在窗外的雨。玩家可以沿着走廊往前走,可以推开储物间的门,可以绕开主线去天台,也可以在任何一个岔路口停下来,不做选择。那个同行的NPC也终于不再只是一个会跟着玩家移动的像素小人。他会记得玩家有没有拿过药,记得玩家是否在同一扇门前犹豫太久,记得玩家有没有拒绝过他递来的地图,也会在某些时候,稍微离玩家近一点,或者干脆停在原地,等人自己回头。
这些都比谢知年最初预想得顺利。
真正把他卡住的,反而是一件他一开始完全没有料到的事——他不知道怎么让那个NPC在玩家最需要他的时候,说出一句对的话。
他写了好几个版本的对话脚本,放进场景里跑了一遍又一遍,每次都觉得不对。有的太煽情,不像那个角色会说出口的话;有的太克制,玩家可能根本注意不到那是一句有分量的话;有的放在纸面上看还行,一进游戏,配上雨声、昏暗的走廊和角色僵硬的像素表情,就像有人站在旁边一本正经地念课文。
他改了写,写了删,最后把文档关掉,靠在椅背上,盯着天花板发了一会儿呆。
工作室里只剩空调低低的嗡鸣声和电脑风扇转动的声音。窗外的天早就黑透了,谢知年不知道几点,也没有看时间的欲望。他桌边堆着几张写满修改意见的草稿纸,最上面那张被他划得乱七八糟,原本写着“玩家进入地下室前触发对话”,后来被圈起来,旁边又添了一行注释:不要像在劝人。
到平安夜那天,江市终于下了第一场雪。
雪不大,刚开始只是零星几片,在昏黄的路灯下飘着,落到窗玻璃上没多久就化成一小点湿痕。夜航工作室的人大多提前走了,整层楼只剩谢知年一个工位亮着灯,屏幕里的旧教学楼一遍遍下着虚拟的暴雨,屏幕外的雪则悄无声息地落在城市里。
门被推开的时候,谢知年还在盯着那句改了十几遍的台词发呆。
纪淮书带着一身外头的凉气走进来,肩头和发梢沾了几片没化干净的雪。他手里拎着一个塑料袋,里面装着两个饭盒,还有两杯热饮。他没有问谢知年进度怎么样,也没有说“你看起来需要休息”这种废话,只把塑料袋放到桌上,拉了把椅子坐下来,替他把饭盒盖掀开。
“先吃。”
谢知年低头看了一眼。蛋炒饭,加了火腿丁和玉米粒,炒得粒粒分明,上面还卧着一个煎蛋,蛋黄边缘煎得微微发焦。
他确实饿了,拿起筷子吃了几口,热气顺着胃里往上漫,才觉得自己从下午到现在一直绷着的那根弦松了一点。
“我卡住了。”他说。
纪淮书没接话,只坐在旁边等他往下说。
“我不知道让他说什么。”谢知年盯着饭盒里的米粒,声音有点低,“我知道他在什么时候应该做什么,也知道他要不要跟上、要不要等、要不要把东西留下来。但我不知道他在那个时候该说什么。写出来的东西都不对。”
纪淮书沉默了一会儿,抬眼看向屏幕上那条昏暗的走廊。
“那个demo,能让我跑一遍吗?”
谢知年抬头看他。
“我不会做游戏。”纪淮书说,“但我当过玩家。也许我跑一遍,能告诉你哪里像人,哪里不像。”
谢知年看了他两秒,点了点头。他把demo调回初始场景,把键盘推到纪淮书面前:“操作很简单,WASD移动,E互动,没有别的了。”
纪淮书把手放到键盘上,先试着走了两步。屏幕里的玩家角色沿着走廊往前移动,窗外的雨声从音响里传出来,密密麻麻地铺在低沉的背景音乐上。走廊尽头,那名同行的NPC靠在窗边,听见脚步声后抬起头,隔了半秒才跟上来。
纪淮书一开始还算配合。他捡了地图,拿了药箱,顺着主线走到楼梯口,又在岔路前停下来,左右看了看,最后选择了一条谢知年自己很少走的支路。谢知年坐在旁边,没有说话,只盯着屏幕,看他在每一个互动点都停得比普通玩家久一点。
走到走廊尽头的一扇窗前时,纪淮书停住了。
窗外的雨下得很急,像一层模糊的灰纱罩在玻璃外面。像素小人站在窗边,雨水沿着玻璃往下滑,映得他轮廓不太清楚。纪淮书按了一下E键,NPC走到玩家身边,也停下来,和他一起看向窗外。
他没有继续操作。
两个小人在窗前站了将近一分钟,谁也没有说话。随后,纪淮书又按了一下E,又按了一下,再按了一下,像是在试探那个角色会不会对重复的互动产生不同反应。
第三次互动时,屏幕上弹出一句话。
【你在着急吗?】
纪淮书停了下来,没有按键。过了几秒,NPC又补了一句。
【不急。雨不会停的。】
工作室里安静得只剩游戏里的雨声。
谢知年原本是想问他觉得这两句怎么样,可纪淮书盯着屏幕看了一会儿,先开了口:“这个角色知道玩家在着急?”
“……什么?”
“他不是在随便问。”纪淮书说,“他看出来了。你连续按了三次互动,他知道你不是想听他重复说话,也不是不知道接下来该往哪走,就是有点烦,或者不知道该怎么办。”
谢知年愣了一下,想起来,他确实在这条行为线上设了一个检测条件:如果玩家在短时间内重复触发同一互动,NPC会将其判定为焦虑状态,再从对话池里抽取更缓和的回应。
“他还知道什么?”纪淮书问。
谢知年看着屏幕上那两个站在窗边的像素小人,迟疑了一会儿,才说:“他知道玩家有没有受伤,知道玩家有没有走过回头路,知道玩家在某个地方停留了多久,知道他在岔路口有没有犹豫过。”
他顿了顿,又补了一句:“他还知道玩家是不是第一次来这里。”
纪淮书没有立刻说话。他重新把视线落回屏幕,过了好一会儿才问:“那他知道玩家现在在想什么吗?”
谢知年没有立刻回答。
这个问题本身也不是程序能解决的事。角色可以读取标签,可以计算权重,可以根据玩家的选择推断情绪,却不能真正知道一个人站在窗前时,心里到底在想什么。
纪淮书没等他给答案,只把键盘往前推了推,靠回椅背里。
“我觉得你不是不知道他说什么。”
谢知年看向他。
纪淮书抬起手,轻轻敲了敲桌面:“你是怕他一开口,就不像他了。”
谢知年沉默下来。
这句话比任何具体的建议都更准确。他卡住的从来不是台词本身,而是那个角色的声音。他不愿意让他像一个会在恰当时机说恰当话的工具人,也不愿意让他变成只会重复“别怕”“没事”“我在”的普通陪伴型NPC。
他想让这个人说话。
用他自己的方式。
哪怕说的是废话。
“你觉得他应该说什么?”谢知年问。
纪淮书想了想:“不知道。”
“……”
“真的不知道。”纪淮书说得很坦然,“但要是我站在窗边,旁边有人连续按三次互动,我可能不会问他急不急。”
“那你会说什么?”
“我会问他,”纪淮书停了一下,像在认真考虑,“你是不是觉得这窗户上的雨像系统贴图。”
谢知年愣了愣。
“什么?”
“很假。”纪淮书说,“明明下个没完,玻璃上连一点水都没积。”
谢知年盯着他,过了两秒,没忍住笑了。
纪淮书也笑了一下,继续说:“然后如果他还不说话,我就陪他再站一会儿。反正又不会扣血。”
“你这算什么建议。”
“玩家体验建议。”纪淮书把手柄拿起来晃了晃,“不要总想着让他一句话解决问题。没事说点没用的,也挺像人的。”
谢知年低头看着屏幕,忽然觉得那句“你在着急吗”也许并没有错,只是太像一个知道答案的人,太像一个已经把玩家看透的系统。他记下纪淮书的话,重新打开文档,把那句台词划掉,换成了:
【这窗上的雨做得不太像。】
他盯着那行字看了一会儿,自己先笑了。
“你笑什么?”纪淮书问。
“没什么。”
“你肯定在笑我。”
“没有。”
“谢知年。”
“真没有。”
纪淮书看他不肯承认,也没再追问,只伸手把他没吃完的饭盒往前推了推:“先把饭吃完,再改你的假雨。”
谢知年低头继续吃饭。窗外的雪还在下,落地后很快被城市夜里残留的热气化开,只在远处的屋檐和绿化带上留下薄薄一层白。
后来两个人又测了一遍。纪淮书专挑系统最不想让玩家做的选择,绕开提示,不拿道具,走到半截突然掉头,甚至把唯一一把钥匙塞进储物柜里,转身就走。谢知年一开始被他气得不行,后来却不得不承认,他确实找出了不少问题:NPC在玩家第三次拒绝帮助以后仍然会重复同一句话,玩家绕开主线时,NPC会卡在门边反复转圈;玩家故意把药箱丢在角落里,角色却永远不知道该不该捡回来。
“你能不能正常玩?”谢知年终于忍不住。
纪淮书头也没抬:“我很正常。”
“正常玩家不会把队友的药箱塞进储物柜。”
“正常玩家会。”纪淮书说,“就是开发者不愿意承认。”
“你这是恶意测试。”
“测试本来就该恶意。”
谢知年被他堵得说不出话,只能低头把bug一条条记下来。等这一轮试玩结束,已经快十一点了。外头的雪下得更密,玻璃窗上蒙了一层白雾,工作室里却因为电脑和空调一直开着,有点闷。
谢知年站起来活动了一下发僵的肩膀,拿起换洗衣服:“楼上休息间有淋浴,我去冲一下。你别关demo,我回来要看日志。”
纪淮书抬头看他:“你这儿还能洗澡?”
“员工休息间。”
“哦。”
“你先坐会儿。”
“知道。”
谢知年拿着衣服上了楼。
楼下重新安静下来。纪淮书靠在椅子里,看着屏幕上那条下着暴雨的走廊,随手又跑了一遍刚才卡住的地下室节点。玩家走到门口,NPC照例挡在前面,屏幕上跳出一行还没改完的旧台词。
【我不能让你一个人下去。】
纪淮书皱了皱眉,按下退出键。
游戏窗口缩到一边,调试面板弹出来。谢知年刚才为了查日志,没关掉行为模块的编辑器,`CompanionBehavior.cs`正开在后面。纪淮书原本只是想确认那个强制触发到底挂在哪个节点上,鼠标顺着函数名滑过去,却在一段注释前停住了。
```
// 玩家连续触发同一互动时,不要马上问“你怎么了”。
// 有些人不喜欢被问。
// 可以先陪他看一会儿雨。
```
他的手指停在鼠标上。
再往下,是跟随逻辑里的一段备注。
```
// 他话很多,但不一定说重点。
// 越是担心,越爱说些没用的事。
// 玩家听得出来。
```
纪淮书盯着那几行字看了很久。
最下面还有一段,写在玩家拒绝同行的分支旁边,像是谢知年后来又补上去的。
```
// 不要追。
// 下一段地图把伞留在门边。
// 他回头的时候,最好还在。
```
纪淮书没有立刻关掉页面。
屏幕的冷光落在他侧脸上,游戏里的雨还在一遍遍地下。他本来只想帮忙找个bug,却忽然看见一些不该由他看到、却又像早已在许多个细节里被他隐约察觉过的东西。
他正要退出,视线却落在文件最下方的一行开发日志上。
```
// 这个角色不是谁。
// 只是我认识过一个人。
// 他总能在我还没开口的时候,站到我身边。
```
楼梯间传来门被推开的轻响。
纪淮书猛地回过神,手指停在快捷键上,却没有立刻按下去。
谢知年洗完澡下来时,头发还没完全擦干,额前几缕湿发贴在额角,身上换了件宽松的灰色T恤。他一边拿毛巾擦着头发,一边往桌边走,刚靠近两步,就看见纪淮书坐在电脑前,屏幕上开着的不是游戏。
他的动作一下停住了。
纪淮书听见脚步声,终于转过头。
两个人隔着半个工作室对视了一眼。
谢知年的心跳忽然快得厉害。他原本应该立刻走过去关掉页面,或者问一句“你在看什么”,可那些话全堵在喉咙里。他看着纪淮书坐在自己的电脑前,屏幕上亮着那几段自己以为只会被代码和夜色记住的注释,忽然不知道自己该生气,还是该庆幸。
纪淮书先开了口。
“对不起。”
他的声音很低,没有替自己找借口。
“我退出的时候看到这个模块开着,本来是想看刚才那个地下室节点挂在哪里。后来……看到了这些。”
谢知年没说话。
纪淮书看着他,神情罕见地有些无措。他平时最会接话,最会把尴尬的气氛搅散,偏偏这会儿连手都不知道该放在哪里,只能轻轻搭在键盘旁边。
“我不该继续看。”他说,“我知道。”
工作室里很安静。外面的雪落在玻璃上,偶尔被风卷过去,擦出一点细微的声响。
谢知年捏着毛巾,过了好一会儿才问:“你看见了多少?”
“一点。”
“哪几句?”
纪淮书的目光落回屏幕,又慢慢抬起来。
“雨那句。伞那句。还有最后那句。”
谢知年的耳根一下热起来。
他原本可以说那些只是开发日志,可以说那个人不一定是纪淮书,可以说只是自己为了给角色找参考,顺手记下的想法。可纪淮书坐在那里,安静的反常,并没有逼着他把话说得更明白。
这让那些本来准备好的借口,显得一点意义都没有。
纪淮书沉默了一会儿,像是怕自己问得太快,又像是怕不问就再也没有机会。他站起来,绕过桌子,却没有立刻靠近,只停在离谢知年两步远的地方。
“你写他的时候,”他说,“在想我吗?”
谢知年抬起眼。
窗外的雪映得室内光线很白,纪淮书站在那片白里,身上还穿着进门时那件黑色外套,肩头残留的雪早就化了,只在布料上留下一点深色的湿痕。
谢知年突然就想起很多很久以前的事。
想起大一刚开学那阵,他第一次在机房熬到很晚,出来时整层楼的灯都灭得差不多了,纪淮书坐在楼下台阶上等人,手里拎着两瓶冰可乐。
想起篮球场边那场没下完的雨。纪淮书刚打完球,球衣湿透了,站在屋檐底下把外套往他头上一罩,自己淋着雨跑去取车。
想起有一次他赶项目赶得昏头,半夜在宿舍楼下坐了很久,连自己什么时候把电脑合上的都不知道。纪淮书从便利店回来,什么也没问,只把一盒热牛奶塞进他怀里,坐到旁边陪他看路灯下飞来飞去的蛾子。
也想起那些根本算不上什么大事的时刻。食堂里纪淮书把他不吃的菜挑走;实验室空调太低时,顺手把自己的外套扔到他椅背上;他打switch卡在一个怎么也过不去的关,纪淮书坐在旁边看了十分钟,最后把手柄拿过去,边操作边嫌弃他:“你这路线走得像在给敌人做慈善。”
后来是高架桥下的双闪灯,是图书馆外那杯总会买对糖度的奶茶,是会议室门口那块被他吃得只剩最后一口的小蛋糕,是火锅店门口的小马扎,是地铁里人群挤过来时,纪淮书抬起手替他挡开的那一点狭小空间。
他好像从来都不是在某个特定时刻突然出现的。
纪淮书更像是很早以前就已经站在那里了。站在谢知年身边,站在他视线边缘,站在那些他以为不需要任何人陪着的时刻里。只是谢知年直到现在才发现,原来自己回头找人的时候,第一个看见的总是他。
他没有真的照着纪淮书去写那个NPC。
可每当他不知道角色该怎么做时,脑子里第一个冒出来的,确实总是纪淮书会怎么做。
谢知年低头看了一眼自己手里的毛巾,声音很轻:“不是完全照着你写的。”
纪淮书没动。
“但有一点是你。”
“哪一点?”
谢知年停了停,像是在斟酌怎样把那句话说得没那么明显。
“他会记得很多没用的事。”他说,“会在别人没说之前,就先发现一点东西。还有……他说话可能不太好听,但做事的时候,很难让人真的讨厌他。”
纪淮书看着他,没出声。
谢知年被他看得更不自在,干脆抬起眼:“你别得寸进尺。”
纪淮书终于笑了一下。
“我没得寸进尺。”他说,“我就是有点高兴。”
“高兴什么?”
“原来我说的话,你会记。”纪淮书顿了顿,“原来你看我的时候,也不是只觉得我烦。”
谢知年一时没能回答。
电脑屏幕上,那条像素走廊还停在窗前。两个小人站在雨里,一个靠着窗,一个停在几步外,谁都没有往前走。
纪淮书顺着他的视线看了一眼,忽然低声说:“那他最后会说什么?”
“谁?”
“你的NPC。”
谢知年想了想。
“我还不知道。”
“那我有个建议。”
“你又要说窗户上的雨像贴图?”
纪淮书笑了:“那句可以留着。”
“那你还想说什么?”
纪淮书沉默了一会儿,才说:“他不用说太多。玩家如果已经走到他面前,可能本来就不需要别人给答案。”
谢知年看着他。
纪淮书抬起手,手指停在半空,没有碰他。
“他可以问一句,”他说,声音忽然很轻,“可以吗?”
谢知年的呼吸停了一下。
纪淮书的眼睛离得很近,近到他能看清里面那点没有藏好的紧张。
“可以吗?”他又问了一遍。
谢知年没有回答。
他伸出手,先抓住纪淮书悬在自己脸侧的手指。纪淮书的指尖有点凉,掌心却是热的。谢知年握住他,往前靠了半步,然后微微踮起脚,在纪淮书还没反应过来的时候,先吻了上去。
那个吻很轻,轻得像窗外刚落下来的雪。
谢知年的嘴唇有点凉,带着刚洗完澡后淡淡的水汽。他没有立刻退开,手还抓着纪淮书的手指,像是怕对方一动,自己就会后悔。
纪淮书僵了半秒。
随后,他终于很慢地抬起另一只手,落在谢知年的腰侧,隔着薄薄的T恤扶住他,力道轻得近乎克制。原本停在半空的那只手则穿过谢知年还没干透的发尾,掌心稳稳托在他后颈上。
电脑屏幕上,雨还在下。
窗外,江市的第一场雪无声无息地落满了夜色。