
第二章:夜将终结
光明村的市集在村子中央,老橡树的树冠底下。设定里,白天的市集总是很热闹,卖菜的、卖布的、卖魔法药水的摊子挤在一起,空气里混着草药、烤面包和光明村特有的光明花的香。
然而现在已经是傍晚了,大部分摊主开始收东西,木板箱盖上的声音此起彼伏,偶尔夹杂着几句关于收成的闲聊。
姜晚晴沿着石板路走,靴子踩在青苔上有些滑。她刻意放慢了脚步,观察着周围的一切——不是为了欣赏风景,而是为了确认这个世界运行的规则。
她注意到几件事:第一,NPC的巡逻路线是固定的,三个穿皮甲的守卫每隔五分钟会经过老橡树一次,步伐和间距完全一致;第二,市集尽头有一块地面明显穿模了,草地和石板路的贴图重叠在一起,形成了一片诡异的绿色马赛克;第三,头顶的蓝色月亮边缘有一圈肉眼可见的锯齿,像是一个分辨率不够的贴图被强行拉伸了。
到处都是Bug。
武器摊在市集的东边,由一个叫多里安的矮人经营。姜晚晴走到摊位前的时候,他正把一把长剑从展示架上取下来,准备收进箱子。
“要买什么?”多里安头也没抬,“明天再来吧,今天的货都收——”
他抬头看见她,愣了一下,然后咧开嘴笑了:“欧律诺墨?哈尔莫斯家的丫头?明天成年了是不是?”他把那把长剑重新放回架上,“来来来,给你看几把好的。你爹跟我说过,你力气大,适合用重剑。”
力气大。又出现一个她不知道的设定。她在设计文档里只写了Helios职业的基础属性偏向力量,但没具体说过欧律诺墨这个人物的天生条件。
看来游戏在她没写的地方做了默认填充——填充的依据是什么?是职业模板,还是别的什么?
多里安从箱子里翻出三把剑,一字排开。第一把是标准的单手剑,剑身窄长,适合劈砍;第二把是阔剑,宽而重,需要双手握持;第三把造型奇特,剑刃呈波浪形,像是某种她叫不出名字的异形兵器。
“这把是猎魔人的旧货,”多里安指着第三把,“前阵子有个路过的冒险者卖给我的,说是从东边的遗迹里挖出来的。附过魔,但魔力已经散了,剩下的就是块好钢。”
姜晚晴拿起那把波浪剑,比想象中轻。剑柄上刻着一行小字,她凑近了看,是希腊语——“και η νύχτα θα τελειώσει”,夜将终结。这倒是她写的。她记得这句,是她当时给某个尚未完成设计的神秘武器写的铭文,当时觉得酷,现在觉得有点羞耻。
“就这把。”她说。
多里安挑了挑眉:“不试试手感?那边有木桩。”
“不用。”她把钱袋递过去,里面有多少钱她没数,但哈尔莫斯给的量应该刚好够这把剑——她在设计物价的时候,把矮人武器的价格定得偏高,但又控制在初始资金能覆盖的范围内。
这是她作为游戏设计师的逻辑:让玩家在第一笔消费中体会到“刚好够买”的紧张感,从而对得到的装备产生更强的珍惜感。
但此刻她不是玩家,她是欧律诺墨,而哈尔莫斯的钱袋里装的不是系统生成的数字,是那个沉默的铁匠打了一辈子铁攒下来的东西。
多里安数了数钱币,又抬头看了她一眼,从柜台底下摸出一个小皮鞘,把剑装进去,递给她时多说了一句:“路上小心。东边的路最近不太平——不是以前那种不太平,是新的不太平。有人说看见不该存在的东西在林子里走。”
不该存在的东西。姜晚晴想起来了——她的游戏里没有Boss,因为被腰斩的时候Boss还没设计完。但这意味着世界里的威胁是随机的、未经设计的、由Bug自动生成的。
不太平,可能意味着任何事。可能意味着什么都不会发生,也可能意味着某个数值溢出的怪物正在地图的某个角落不断复制自己。
她接过剑,系在腰间,忽然觉得这个动作很陌生——她从来没有佩过剑,但欧律诺墨做起来很自然,像是做过无数次。手指绕过剑柄,调整角度,让剑鞘贴着大腿外侧,每一步都不会磕碰到。
她思考,这种肌肉记忆到底来自于哪里,可能是在被赋予欧律诺墨之后也继承了“欧律诺墨”应该有的品质?
往回走的路上,天色彻底暗了下来。两个月亮升到了正头顶,蓝色那颗的边缘锯齿更加明显了,像是在提醒她:这里不是真实的世界,这里是代码,是贴图,是半成品,是一个连Boss都没有的烂尾项目。
但空气是真实的,风是凉的,围巾上有一股铁锈和炭火混合的味道——哈尔莫斯铺子里的味道。
她把围巾往上拉了拉,挡住下巴,忽然想起妈妈也会在她出门的时候往她包里塞围巾,总是同一句晚上降温别感冒了。她以前觉得烦,现在觉得那种烦也是一种幸福,是只有在被人在乎的时候才会产生的、微小的、奢侈的情绪。
石头房子的窗户亮着灯,橙黄色的,暖的。她推开门,看见埃拉在灶台前搅动锅里的炖菜,哈尔莫斯坐在桌边打磨一把匕首,磨刀石和金属摩擦的声音细碎而安稳。
两个人同时抬头看她,一个问“买到了吗”,一个说“洗手吃饭”,语调不同,但眼神里有一种相同的、沉甸甸的东西。
姜晚晴忽然觉得鼻子有点酸。不是因为感动——虽然确实有感动——而是因为她意识到了一件事:这两个人不是NPC。至少,不只是NPC。
他们有表情,有记忆,有对“女儿”的习惯性唠叨和默默付出,有她自己和妈妈之间的那种、说不清道不明的、由无数个琐碎瞬间堆叠而成的连接。
她写了两行字,这个世界补充了剩下的全部。
“妈,”她试着叫了一声,声音有点涩,“我买了把剑。”
埃拉转过身,看了一眼她腰间的剑,眉头皱了一下:“波浪形?看着怪里怪气的。”但她没再多说什么,只是从柜子里拿出一块干净的布,叠好,放在桌上,“吃完饭把剑擦擦。明天成年礼要用。”
哈尔莫斯放下了匕首,看着她,嘴唇动了动,像是想说什么,最后只是点了点头。那个点头的幅度很小,但姜晚晴看懂了——他在说“我看到了”,在说很多他永远不会说出口的话。
她坐下来,接过埃拉递来的碗,炖菜冒着热气,里面有胡萝卜、土豆和某种她叫不出名字的肉类。她吃了一口,味道比想象中好——不是那种“游戏设定里应该好吃”的好,而是真正的、有层次的、带着咸香和微甜的好。
埃拉在炖菜里加了蜂蜜,这是她没写过的细节,是这个世界自己生长出来的。
窗外的双月悬在老橡树上方,蓝色的那枚边缘依然有锯齿,红色的那枚低垂着,把整个村子染上一层薄薄的暗红。
远处有人敲钟,声音悠长而钝重,一下,两下,三下——那是成年礼前夜的晚钟,提醒所有明天成年的孩子早点休息。
姜晚晴坐在自己写的世界里,吃着自己没写过的炖菜,被两个自己没写全的人注视着,忽然觉得这件事荒诞到了极点,又合理到了极点。
她是一个被优化的程序员,是一个习惯性逃避现实的人,是一个在社交里永远保留安全距离的ISFP——但此刻她无路可逃,因为这里没有退出按钮,没有Alt+F4,没有任务管理器。
她唯一能做的,就是活下去,找到回去的办法,并且在找到之前,不让自己死在这个充满Bug的世界里。
毕竟她的代码里还有一个致命的漏洞:没有设计存档点。
吃完饭,她回到阁楼上的小房间。房间不大,一张床,一张桌子,一个衣柜,窗台上摆着几盆干枯的花——埃拉说她小时候非要种,种了又忘了浇水,但她一直没扔,就那么摆在窗台上,像一种沉默的纵容。
姜晚晴坐在床边,把剑靠在床头,伸手摸了摸窗台上那盆枯死的花。泥土干透了,裂成几块,但花茎还立着,保持着某种倔强的姿态。她忽然想起自己在代码里写过一行备注:“NPC的互动逻辑需增加情感权重参数。”当时的意思是让NPC的行为更有人情味,不要像传统RPG那样机械重复。
但她现在怀疑,这个“情感权重参数”在运行过程中被放大了无数倍,以至于这些NPC不仅有了人情味,还有了自己的灵魂。
她躺下来,闭上眼睛,在脑子里过了一遍所有可能让她回到现实世界的方案:通关游戏?但她没有设计通关条件,因为Boss还没做。找到Bug?但她不知道这个世界的控制台在哪里,不知道有没有GM指令。等到自然醒来?但万一一辈子都醒不来呢。
她翻了个身,把脸埋进枕头里。枕头里有荞麦壳的味道,干燥的,朴素的,让她想起小时候外婆家的枕头。
不想了。先活过明天再说。