第十章 二十四道菜的启示

5月10日,子夜零点过七分。

李君宪点击“提交”,SVN弹窗显示:“版本 0.5.0 提交成功。日志:IGF冲刺前最终集成版本。包含时间系统修复、美术资源更新、音频预加载优化。”

他靠在椅背上,颈椎发出连串细响。宿舍里只有机箱风扇的低鸣,窗外是彻底沉睡的校园。屏幕上的《洛阳小店》运行在测试模式下,李师傅站在窗边,窗外月光凝滞,室内油灯将他的影子投在墙上,一动不动。

版本0.5.0。这是IGF投稿前的最后一个完整版本。核心玩法闭环完成,美术风格统一,音效初步集成,性能达标。距离5月31日截稿还有二十一天,剩下的时间将用于打磨细节、修复边缘Bug、准备投稿材料。

但李君宪没有感到轻松。一种更深的不安,像水底的暗流,在完成某个阶段性目标的虚脱感之后,悄然浮现。

他打开博客后台的募捐页面。金额停在了9328.5元,捐款人数439。最后一条捐款来自两小时前,用户“一个前游戏美术”,留言:“十年前我入行时也想做这样的游戏,后来做了十年换皮手游。看到你们,想起自己年轻时的样子。钱不多,当是给当年的自己捐的。”

他盯着那条留言看了很久。然后关掉页面,打开QQ群。核心组的聊天记录停在晚上十一点,林薇发了“遮罩图最终版已提交”,叶晚回了“收到”,苏语发了“音频预加载测试通过”,陈末发了“内存占用峰值29.8MB,达标”。

一切都在按计划推进。但李君宪总觉得缺了点什么。缺一个“魂”。《洛阳小店》现在有了骨架,有了皮肉,有了呼吸,但没有魂。那个能让玩家在屏幕前安静下来,想起某个遥远午后、某个熟悉气味的魂。

手机震了。是张明远的短信,时间显示五分钟前:“睡了吗?方便的话,来我家吃个便饭。有些关于二十四诗品的想法,想和你聊聊。”

凌晨零点十二分。这个邀请很不寻常。

李君宪回复:“张老师,现在?”

“对,现在。我还没睡,煮了粥。不远,从你学校东门出来,沿建设路走三百米,右拐进家属院,三号楼二单元302。”

他看了眼屏幕上的游戏,又看了眼窗外浓稠的夜色。然后起身,抓起外套,轻轻带上门。

洛阳师范的教职工家属院很老,红砖楼,楼道灯是声控的,脚步稍重就亮,随即又暗。李君宪摸黑上到三楼,302的门虚掩着,透出暖黄的光。

他敲门。

“进来,没锁。”张明远的声音传来。

推门进去,是个小两居,陈设简单到近乎清贫。客厅兼做书房,两面墙是顶天立地的书架,塞满了书,线装本和平装本混在一起,有些用牛皮纸包了书皮。中间一张老式写字台,堆着手稿和书。空气里有墨香,还有淡淡的粥香。

张明远从厨房出来,端着两碗白粥,一小碟咸菜。“坐。就这儿。”他把粥放在写字台空出的一角,自己拉了把藤椅坐下。

李君宪在对面坐下。粥很烫,米粒煮开了花,表面结了薄薄的米油。

“这么晚打扰您……”

“没事,我习惯晚睡。”张明远摆摆手,用勺子慢慢搅着粥,“你的0.5.0版本,叶晚给我看了。做得很好。但你觉得,还缺什么?”

李君宪愣了一下。这个问题太直接。

“缺……魂。”他如实说。

“魂。”张明远重复这个字,点点头,“那你觉得,什么是‘冲淡’的魂?”

“是……安静?慢?留白?”

“是,也不是。”张明远放下勺子,从书堆里抽出一本薄薄的手稿,翻开某一页,推过来,“这是我年轻时抄的《二十四诗品》批注,清代杨廷芝的。看这句。”

李君宪凑近看。泛黄的纸上,清秀的小楷批注:“冲淡非枯淡,乃绚烂之极归于平淡。譬如水席,二十四道菜,五味调和,终归一碗清汤,而百味尽在其中。”

“水席?”李君宪抬头。

“洛阳水席,吃过吗?”张明远问。

“吃过几次。但没吃全过二十四道。”

“水席的精髓,不在某一道菜,而在整套宴席的起承转合。”张明远站起来,从书架上抽出一本老旧的菜谱,翻到中间,摊开。是手绘的水席菜单,二十四道菜名竖排,旁边用小字注了做法和典故。“开席四道镇桌菜,是‘雄浑’。中间十六道行菜,是‘纤秾’‘沉着’‘高古’……各种滋味轮转。最后四道扫尾菜,是‘冲淡’——一碗酸辣开胃汤,一碗清炖丸子汤,一碗甜汤,一碗鸡蛋汤。从浓到淡,从繁到简,但淡不是无味,是前面二十三道滋味的余韵和沉淀。”

他指着最后那碗鸡蛋汤:“这叫‘圆满汤’,就是白水煮蛋花,点两滴香油,撒一点香菜。什么调料都不加,但喝的时候,嘴里还有前面二十三道菜的味。这才是‘冲淡’——不是一开始就淡,是经历了一切之后,选择淡。”

李君宪盯着那页菜谱。水汽氤氲的示意图,二十四道菜名像一首诗。他忽然明白了什么。

“我们的游戏……只有最后这碗汤。”他低声说。

“对。”张明远合上菜谱,“你只做了‘冲淡’,但‘冲淡’之所以是‘冲淡’,是因为前面有‘雄浑’‘纤秾’‘沉着’。没有前面的浓墨重彩,后面的云淡风轻就没有分量。你的玩家,一进来就是一碗清汤,他们喝不出味道,因为没经历过前面的宴席。”

“可我们不能把二十四品都做完再投稿……”

“不需要做完。”张明远重新坐下,端起粥碗,“但需要在‘冲淡’里,留下前面二十三品的影子。让玩家隐约感觉到,这个安静的小店背后,有一个更广阔、更丰富、更喧嚣的世界。让他们感觉到,李师傅的平静,不是天生的,是经历了很多之后的选择。”

“怎么留影子?”

“用细节。”张明远说,“店里的某件旧物,可能来自一场遥远的旅行(飘逸)。墙上的一道刀痕,可能记录着某次冲突(悲慨)。客人的某句话,可能暗示着外面的世界正在发生大事(雄浑)。甚至天气——雨下得特别大的那天,可能对应着世界某个角落的‘流动’达到顶峰。你要让玩家感觉到,这个小店不是全部,只是整个世界的一个切片,一个避风港。正因为外面有风雨,这里的安静才有价值。”

李君宪的手指无意识地敲着桌面。脑子里有什么东西正在连接。

“时间系统……”他喃喃道,“我们做了时间分层,让室内静止、窗外加速。但这只是技术效果。如果……如果窗外加速的,不只是光影,还有‘事件’呢?在玩家静止的十分钟里,窗外可能快速闪过几个季节,闪过几批不同的行人,闪过一场雨、一场雪、一次节日游行。虽然只是像素剪影,但玩家能感觉到:世界在轰隆隆地前进,而这个小店,像激流中的一块石头,停在原地。”

“对。”张明远眼睛亮了,“就是这个。让‘静’和‘动’产生对话。让这个小店的‘淡’,成为对外面世界‘浓’的回应。”

“那音乐……”李君宪想起苏语的处理,“环境音加速后会变调。但如果变调后的声音,隐约能听出是某种旋律的扭曲版本呢?比如远处加速的市声,仔细听,其实是‘纤秾’主题的某个变奏,被时间拉长了,模糊了。”

“好!”张明远拍了下桌子,“让不同品的音乐动机,以变形的方式,在‘冲淡’里隐约出现。像水席的余味,在最后一碗汤里回荡。”

思路打开了。像推开一扇门,后面不是房间,是整片原野。

“但只剩二十一天了。”李君宪看着粥碗表面已经凝固的米油,“这些改动很大,要重做事件系统,要加新的美术素材,要改音乐设计。团队会撑不住。”

“那就做最小的版本。”张明远说,“不用做二十四品的完整影子,做三个。选三个和‘冲淡’反差最大的:雄浑、纤秾、悲慨。在玩家静止时,窗外快速闪过这三个品的‘惊鸿一瞥’。比如雄浑,可以是一队士兵的剪影快速走过。纤秾,可以是远处一棵树瞬间花开花谢。悲慨,可以是一个老人坐在街边的剪影,从挺直到佝偻。每个只持续几秒,像素剪影,没有细节,但意境要到。”

“三个……也许可以。”李君宪快速估算,“美术剪影林薇和叶晚能画,音乐变形苏语能做,事件系统陈末和我可以改。但时间……”

“你们已经很快了。”张明远看着他,眼神温和,“但有时候,慢就是快。花三天时间,给游戏注入一个魂,比花二十一天打磨细节,更重要。因为细节可以后续补,魂丢了,就补不回来了。”

李君宪沉默。窗外的天还是黑的,但东边天际已经泛起极淡的青色。凌晨三点十七分。

“我回去和他们商量。”他站起来。

“粥喝完再走。”张明远指了指碗,“凉了,但养胃。”

李君宪端起碗,几口喝完。米油很厚,带着粮食本身的甜。

“谢谢张老师。”

“不用谢我。”张明远也站起来,送他到门口,“是你们在做的事,启发了我。我教了三十年古典文论,第一次看到有人想用游戏诠释它。这比写一百篇论文都有意义。”

在门口,他忽然想起什么,从书架上抽出一本薄薄的册子,递给李君宪。

“这是杨廷芝《二十四诗品小解》的影印本,我手头有两本,这本送你。里面有很多具体的意象联想,可能用得上。”

李君宪接过。册子很薄,封面是牛皮纸,用毛笔写了书名。纸页已经脆了,翻动时发出细碎的声响。

“走了,张老师。”

“嗯。路上小心。”

回学校的路很静。环卫工人已经开始清扫街道,竹扫帚划过水泥地的声音,沙,沙,沙。有早起的老人提着鸟笼走过,笼子用蓝布罩着。

李君宪走得很快。脑子里的想法像沸腾的水,不断冒泡。三个品的惊鸿一瞥,要怎么设计才能不突兀,不打扰“冲淡”的主体氛围?像素剪影的抽象程度要多大?音乐变形要如何处理才能既暗示又不过分?

到宿舍楼下时,天已经蒙蒙亮。他掏出手机,在核心组群里发了一条消息:

“紧急想法。都醒了吗?如果醒了,现在语音。很重要。”

一分钟后,林薇回复:“醒着。在画‘纤秾’的草图。”

两分钟,叶晚:“我也醒着。在改茶杯的阴影。”

三分钟,苏语:“刚练完琴。可以。”

四分钟,陈末:“在跑压力测试。可以切语音。”

李君宪爬上三楼,推开宿舍门。王浩和张强还在熟睡,鼾声起伏。他戴上耳机,接通语音。

“大家都听着。我刚从张明远教授家回来,他给我讲了个概念:洛阳水席。”

他用最简练的语言,复述了水席二十四道菜与二十四诗品的关系,以及“影子”的想法。说完后,耳机里安静了几秒。

“我懂了。”林薇第一个说,“我们现在的《洛阳小店》,只有最后一碗汤。好喝,但没前因。需要让玩家感觉到,这碗汤之所以好喝,是因为前面吃了二十三道菜。”

“三个品的惊鸿一瞥……”叶晚小声说,“我可以画剪影。雄浑的士兵队列,纤秾的花开花谢,悲慨的老人……这些意象,张老师的笔记里有提到,我有感觉。”

“音乐上,我可以把三个品的主题动机做极简处理,加速到几乎听不出旋律,只剩节奏和音色特征。”苏语的声音带着兴奋,“比如雄浑用低音鼓点,纤秾用琵琶轮指的快进版,悲慨用埙的长音但截断。然后混在加速的环境音里,像远处的回声。”

“事件系统技术上可行。”陈末说,“但我需要知道具体触发规则。是玩家每次静止时随机出现一个?还是有顺序?持续时间多长?要不要和游戏内时间挂钩?”

“随机出现,但权重不同。”李君宪快速思考,“雄浑在白天出现概率高,纤秾在春天,悲慨在黄昏。每次只持续3-5秒,就是几帧剪影动画,配上处理过的音效。玩家可能注意不到,但潜意识里会留下印象。”

“那我们的时间表……”林薇问。

“推迟三天。原定5月20日的内部测试,推到5月23日。用这三天,全力实现这个‘影子系统’。之后再用十八天打磨细节。”李君宪说,“风险是,如果三天做不出来,或者效果不好,我们会损失宝贵的打磨时间。大家投票吧。同意这个方向的,敲1。”

短暂的沉默。

然后,屏幕上,四个“1”几乎同时跳出。

林薇、叶晚、苏语、陈末。

“好。”李君宪说,“那我们从现在开始,进入‘影子计划’。分工:林薇和叶晚,今天出三个品的剪影概念草图和最终像素图。苏语,今天出三个品的极简音效设计。陈末,今天完成事件系统的框架,留出接口。我负责整体设计和集成。今晚十二点,再次会议,同步进度。有问题吗?”

“没有。”

“没问题。”

“好。”

“收到。”

语音挂断。李君宪摘下耳机,看向窗外。天已经亮了,是那种清澈的、泛着淡金色的晨光。远处食堂的烟囱开始冒烟,新的一天开始了。

他打开博客,新建一篇只有标题的文章:

“5月11日,晨:从一碗汤,到二十四道菜的影子”

没有内容,只有一个标题,和一张他刚刚在楼道里拍的、蒙着蓝布的鸟笼的照片。点击发布。

然后他打开代码编辑器,新建一个文件夹,命名为“ShadowSystem”。在里面的第一个文件,他写下:

// 影子系统

// 目的:在玩家静止时,以极简的剪影和音效,暗示其他二十三品的存在

// 原则:不打扰,不解释,只暗示

// 首批实现:雄浑、纤秾、悲慨

// 李君宪,于2006年5月11日清晨

他开始写事件触发逻辑。窗外的光一点点移动,从桌面移到键盘,再移到墙上的课程表。王浩醒了,迷迷糊糊去洗漱,回来看到李君宪对着屏幕,小声说:“李哥,你一宿没睡?”

“睡了会儿。”李君宪没抬头。

“牛逼。”王浩竖起拇指,爬上床继续睡回笼觉。

中午,林薇发来了第一版剪影概念图。雄浑是十个像素小人组成的队列,扛着模糊的旗帜,在窗外快速横向移动。纤秾是一棵树,用十帧动画完成从枯枝到繁花到凋零的循环。悲慨是一个坐着的老人剪影,用五帧完成从挺直到佝偻到低头的姿态变化。

叶晚在下面补充:“林薇姐画了动态,我做了像素化。每个剪影不超过16x16像素,保证在窗外只是一个小点,不抢戏。”

下午,苏语发来了三段音频,每段只有三秒。雄浑是沉闷的、有节奏的踏步声,但被加速处理得像远处闷雷。纤秾是极快的琵琶轮指,快到像一阵风铃。悲慨是埙的一个长音,但被从中切断,留下突兀的空白。

陈末在傍晚提交了事件系统框架,注释写得很清楚:“支持时间触发、随机权重、动态加载。内存占用预估增加2-3MB,性能影响可忽略。”

李君宪开始集成。把剪影动画导入,配置触发条件,绑定音效,调整出现时机。测试,调整,再测试。

晚上十一点,第一个可运行的版本完成了。他让游戏运行,控制李师傅走到窗边,静止。

十秒后,窗外快速闪过一队士兵的剪影,踏步声像遥远的雷。只有三秒,就消失了。世界恢复正常的加速光影。

又静止二十秒。一棵树在远处瞬间花开花谢,琵琶轮指声像一阵倏忽而过的风。

再静止三十秒。一个老人坐下,低头,埙声刚起就断。

三次惊鸿一瞥,加起来不到十秒。在长达十分钟的静止体验里,只是几个小小的插曲。但整个世界的“厚度”不一样了。玩家能感觉到,窗外那个加速流动的世界,不是空洞的,是有内容的,是有战争、有花开、有衰老的。而这个小店,是这一切的旁观者,也是庇护所。

李君宪让游戏循环运行了一个小时。三次影子事件随机出现,每次都有微妙的不同。士兵队列有时长有时短,花开有时繁有时疏,老人有时低头有时仰头。虽然只是像素的微小变化,但有了“生命感”。

深夜十二点,语音会议。

李君宪把录屏发到群里。五分二十七秒的视频,记录了三次影子事件的全过程。

播放完,群里安静了半分钟。

“我哭了。”叶晚第一个说,声音带着鼻音,“那个老人……让我想起我爷爷。”

“音乐和画面的结合,比我想象的还好。”苏语轻声说,“埙声断掉的时候,我心里咯噔一下。”

“技术实现很干净。”陈末说,“事件触发平滑,没有卡顿。内存占用增加了2.1MB,在接受范围内。”

“这才是‘冲淡’。”林薇最后说,“有了外面的浓,里面的淡,才有意义。”

李君宪看着屏幕上定格的画面:李师傅站在窗内,窗外是流动的光影,和一队刚刚消失的士兵剪影的残影。内外两个世界,两种时间,在像素的方寸之间,完成了对话。

“那么,”他说,“‘影子系统’通过。明天开始,正式集成到0.6.0版本。之后的两周,打磨细节,修复Bug,准备投稿材料。”

“收到。”

“明白。”

“好。”

“嗯。”

语音结束。李君宪关掉电脑,躺到床上。身体很累,但心里很满。像做完一场复杂的手术,病人有了心跳。

窗外的夜很深了。他想起张明远说的水席,想起那二十四道菜,想起最后那碗鸡蛋汤。他们现在做的,就是往汤里撒的那点香菜——几乎看不见,但喝的时候,能尝到前面所有滋味的余韵。

他闭上眼。在沉入睡眠的前一刻,脑子里忽然冒出一个念头:

等“冲淡”做完了,下一品,做什么呢?

也许是“纤秾”,看牡丹盛开又凋谢。

也许是“沉着”,在铁匠铺里日复一日捶打。

也许是“悲慨”,守一座注定陷落的城。

二十四品,二十四条路。他们才刚踏上第一条。

但至少,路的方向,找到了。

第一卷·冲淡·完

后记

2006年5月31日深夜十一点四十七分,李君宪在洛阳理工学院宿舍,点击了IGF China投稿页面的“提交”按钮。

《洛阳小店》v1.0,压缩包大小11.7MB,包含一个可执行文件、一份设计文档、一份团队介绍、五张截图、一段两分钟的宣传视频。

提交成功的提示弹出时,宿舍里只有他一个人。王浩和张强去通宵庆祝考试结束,刘明在网吧调试私服。窗外,洛阳的夏夜闷热,远处有隐约的蝉鸣。

他静静坐了几分钟,然后打开博客,新建最后一篇第一卷的文章:

“5月31日,夜:提交”

他写道:

“交了。

“从3月18日到5月31日,七十四天。

“从一个人,到一个五个人的核心团队,再到背后四百三十九位捐助者。

“从一个像素小人,到一个能呼吸的小世界。

“从‘冲淡’这一品,到隐约看见其他二十三品的影子。

“我们做到了这个阶段能做到的最好。

“接下来,是等待。六月中旬公布入围名单。

“如果入围,我们去上海。

“如果没入围,我们继续做下一品。

“无论如何,这条路,我们会走下去。

“因为二十四诗品,我们才走完第一品。

“剩下的二十三品,二十三首诗,二十三个世界,在等我们。

“谢谢所有人。

“第一卷·冲淡,到此结束。

“我们第二卷见。

“——李君宪,于2006年夏夜。屏幕的光,映着‘提交成功’四个字。”

点击发布。

然后,他关掉电脑,走到窗边。夜风带着热气涌进来,远处火车站传来汽笛声,悠长,坚定,开往未知的远方。

而在某个尚未抵达的未来,上海国际会议中心的某个展台上,一个女孩会戴上耳机,在《洛阳小店》的像素画面前,安静地站了十分钟。然后她会摘下耳机,对身边的同伴说:

“这个游戏……好像不止是一个游戏。”

但那是下个卷章的故事了。

此刻,在2006年洛阳夏夜的尾声里,只有一个年轻人,在窗前站了很久。然后他回到桌前,翻开那本杨廷芝的《二十四诗品小解》,在“纤秾”那一页,用铅笔轻轻写下:

“待续。”