第 21 章
开封的倒影
李想坐的是夜班火车。从杭州到蔚州没有直达高铁,他在北京南站转了一次,又在大同站等了四十分钟,换上一趟绿皮车。车厢里暖气烧得过头,有人脱了鞋,有人在吃桶装方便面。李想靠窗坐着,把羽绒服叠起来垫在腰后,看窗外华北平原的冬夜一点点变成雁北的丘陵。他上一次坐这种火车是十五年前,刚从河北一所专科学校毕业,背着画板去北京找工作。
蔚州不是蔚县。蔚州是老名字,现在地图上叫蔚县,但本地人还是叫蔚州。李想出生在那里,长到十八岁离开,此后回去的次数一只手数得过来。上一次是2016年春节,他母亲去世,他回去办丧事。那之后他再没回去过。
火车在凌晨四点半到站。站台上只有一盏高压钠灯,灯光打在结了冰的月台上,颜色像旧照片。李想背着包走出来,冷空气灌进领口,他打了个寒颤,然后笑了。他想起沈明远在批准邮件里写的那句话。他当时在工位上读到那句话,盯着屏幕看了很久。然后他关掉邮件,打开请假系统,填了三天。他回蔚州不是来看树的。他是来看一座城的。
蔚州老城里有一棵老槐树,长在南门内的关帝庙前。李想小时候常在那棵树下玩,树冠遮住了半条街。他不知道那棵树还在不在。但他真正想看的不是树,是城——那座他从小穿行其中的明代州城,那些砖缝里长出青苔的城墙、那些被改造成民居的庙宇、那些在街角突然出现的牌坊。他想知道,当一个人真的在乎一座城的时候,他看到的到底是什么。这个问题的答案,将直接决定他在《燕云十六声》开封城里种下的每一棵树。
开封城的制作,是《燕云十六声》在高峰期内投入最大、也最能体现其创作野心的一张地图。在Everstone工作室的内部项目排期表上,开封区域的人力标注颜色是红色——最高优先级,资源倾斜级别等同于战斗系统重构。从2023年第三季度正式启动到2024年11月首次内部完整测试,开封城占用了项目组内容生产线上将近百分之四十的产能,累计投入超过一百二十个人月。
这个数字在网易游戏的历史上并非没有先例。《逆水寒》的汴京城也做过大规模的历史复原,其建筑群规模与细节精度在国产MMO中至今仍是标杆。但开封城与汴京城有本质区别:汴京城是MMO的主城,设计逻辑是功能性的——拍卖行、仓库、任务发布NPC、帮会入口,这些系统节点决定了城市的空间布局,历史还原是加分项,不是底层逻辑。开封城的底层逻辑恰好相反。
在2023年6月的一份策划文档中,开封区域的主策划方云舟写下了这样一段话:项目组希望玩家在开封城里不是“使用”一座城市,而是“住进”一座城市。这个表述后来被沈明远在项目组全员邮件中引用,成为开封城设计的纲领性表述。“住进一座城市”意味着城市的空间逻辑不能由游戏功能决定,而必须由城市本身的生活逻辑决定。坊市在哪里、街巷怎么走、桥架在河上什么位置、早市和夜市分别在什么时辰开张——这些问题的答案,不能来自策划的系统需求表,只能来自历史。
方云舟为此做了一件事。他带着策划组的三个人,花了两周时间,把《东京梦华录》全文拆解成一张Excel表。这张表后来被项目组内部称为开封城的DNA序列。它按卷次和条目,将孟元老笔下汴京城的每一处空间细节、每一种商业业态、每一个节令习俗,全部转化为可检索的数据字段。卷二的“州桥夜市”条目下,标注了出摊时间、主要品类、人流密度描述;卷三的“相国寺内万姓交易”条目下,标注了摊位分区、商品类型、与宗教空间的互动关系;卷四的“会仙酒楼”条目下,标注了建筑规制、服务流程、消费档次。这张表不是用来写设计文档的。它是用来建城的。
方云舟在随后的一份补充说明中写道:团队的目标是让玩家在开封城里走的时候,每一步踩到的都是《东京梦华录》里的地面。他在后面附了一个具体的例子:如果玩家在州桥夜市停留,他应该能看到卖旋煎羊、白肠、鲊脯、冻鱼头的摊贩;如果他在相国寺每月五次开放的万姓交易日进入寺庙,他应该能看到庭中设彩幕露屋义铺,卖蒲合、簟席、屏帏、洗漱、鞍辔、弓剑、时果、脯腊之类。这些不是任务道具,不是可互动的系统节点。它们只是在那里。
“只是在那里”这四个字,后来成为开封城开发过程中被反复争论的焦点。
美术团队的工作流,在开封城项目上经历了一次彻底的转向。在此之前,《燕云十六声》的场景美术已经形成了一套相对成熟的工业化流程:概念设计、模块化资产生产、程序化生成辅助、人工精修。这套流程在清河、雁门关等区域得到了充分验证,效率与品质的平衡点被证明是可靠的。但李想在开封城启动会上说了一句话,让这套流程必须重新设计。他说,开封城不能是拼出来的。
李想当时站在会议室的白板前。白板上贴满了《清明上河图》的高清局部截图,虹桥、城楼、街市、漕船,密密麻麻。他用马克笔在空白处写了三个字:有机感。模块化的问题在于,它会让城市看起来像被摆放的——街道和建筑的转折角度都一样,材质过渡生硬,整座城有一种“乐高感”。但真实的城市不是被摆放的。真实的城市是长出来的。
“长出来的”城市需要什么?需要建筑师理解每一栋房子为什么建在这里而不是那里,为什么是这个朝向而不是那个朝向,为什么用了这种材料而不是那种材料。这些“为什么”的答案,在宋代城市中尤其复杂。因为宋代是中国城市史上一个关键的转折期:坊市制度瓦解,沿街开店成为常态,城市空间从封闭的里坊制向开放的街巷制转变。这意味着开封城的空间逻辑不是整齐划一的网格,而是混杂、叠加、充满偶然性的有机体。
李想的要求是:美术团队在制作开封城的每一栋建筑之前,必须先回答一个问题——这栋房子的主人是谁?做什么营生?为什么选择这个位置?
资深场景美术师王恺在会后找到李想,语气很克制,但意思很明确。开封城规划面积是雁门关主城区的三倍,建筑单体数量超过两千。如果每一栋都按这个流程走,工期根本不可能守住。李想看着王恺。他们是老搭档了,从《逆水寒》时期就在一起合作。李想知道王恺不是在推诿,他是在说一个真实的工程问题。李想的回应是,他们需要一个中间层——一个能批量生成“为什么”的中间层。这个中间层,后来被命名为“建筑身份系统”。
建筑身份系统是一套基于历史规则的半自动生成工具。它的核心逻辑是:将宋代开封城的建筑类型、空间分布规律、阶层与业态对应关系,转化为一套可配置的规则引擎。美术师在放置一栋建筑时,不是从模型库中直接拖拽,而是先设定建筑的身份参数——业主阶层、业态类型、所处地段。系统根据这些参数,自动匹配相应的建筑形制、材质规格、装饰等级,并在一定范围内随机生成差异化的细节。
这套系统的技术基础,是项目组此前在生产线重塑中建立的视觉组件库。但它的设计思想,来自李想在2023年8月的一次内部培训中讲的一个案例。那个案例是关于《清明上河图》里的一座桥。不是虹桥。是一座很小的平桥,在画卷的右段,城门外不远。桥上有四个人:一个挑担的、一个骑驴的、两个步行的。桥下有一条小船,船头站着一个撑篙的人。
李想把这张局部截图投在幕布上,问在场的美术师一个问题:这座桥为什么在这里?没有人能立刻回答。李想等了十秒钟,然后给出了自己的解释。桥的右边有一条小路,通往一片农田。桥的左边是一个茶肆。挑担的人从农田那边过来,要去茶肆送货。骑驴的人从城里出来,要往乡下去。桥在这里,因为路在这里。路在这里,因为田在那边,茶肆在这边。这整段逻辑,张择端没有画出来,但他画了桥,桥就包含了这一切。他停了一下,然后说,他们要做的不是画两千座桥,而是理解两千条路。
建筑身份系统的底层规则库,就是这“两千条路”的数字化表达。策划组的历史顾问顾知远为此提供了核心支撑。他依据《东京梦华录》《宋会要辑稿》《宋史·食货志》等文献,整理了一份《汴京城市空间功能分区与建筑规制对应表》。这份表格长达六十多页,详细标注了汴京城内十一个功能分区的建筑密度、立面规制、街道宽度、沿街业态类型及其分布概率。例如,汴河沿岸的沿街建筑中,邸店占比应达到百分之四十五以上,酒楼茶肆占比约百分之二十,其余为相关服务业态;而在内城商业区的十字街口,酒楼占比则升至百分之三十五,且建筑等级显著提高。
这些数字不是装饰。它们被直接写入了建筑身份系统的配置参数。当美术师在引擎中放置一栋建筑时,系统会自动校验其身份参数与所处地段的匹配度。如果偏差超过阈值,系统会弹出提示——不是强制修改,而是提醒美术师确认:当前建筑身份与地段匹配度低于标准值,是否确认放置?
这个设计后来被证明是建筑身份系统中最具争议的部分。一部分美术师认为它限制了创作自由,把场景美术变成了填表工作。王恺在内部评审会上直言,有时候他就是想在一片酒楼中间放一栋安静的民居,觉得那样好看,但系统不让放,因为匹配度不够。李想的回答很直接:在开封城,好看不能优先于可信。
这句话后来在项目组内部流传开来,成为一个被反复引用的梗。有人赞同,有人不以为然。但没有人能否认一个事实:当开封城在引擎中第一次完整生成时,所有进入测试的人都感受到了某种难以言喻的“对”——不是视觉上的震撼,而是一种空间逻辑上的自洽。
街道的宽窄变化不是设计出来的,是功能需求推出来的;建筑的密度分布不是美术摆出来的,是业态逻辑算出来的;汴河沿岸的拥挤与内城官署区的疏朗之间的对比,不是刻意营造的,是历史本身留下的痕迹。
沈明远在第一次完整跑图后,在内部论坛上写了一句话:他在开封城里走了四十分钟,没有做任何任务,没有打开任何界面。他只是走。他觉得他是在一座城里走,不是在一张地图里走。
策划组的工作,在开封城项目上与美术组形成了某种镜像关系。美术组在解决“城怎么建”的问题,策划组在解决“城怎么活”的问题。方云舟的团队为开封城设计了一套被内部称为“城市呼吸系统”的动态机制。这套机制的核心,是让开封城的时间流动与空间逻辑形成闭环。具体来说,它包含三个子系统:基于宋代市场制度的动态经济系统、基于坊市瓦解后的城市空间使用逻辑、以及基于节令与昼夜的城市事件系统。
动态经济系统是整个呼吸系统中最复杂、也最冒险的设计。它的基础模型来自宋代开封真实的市场制度。与唐代严格的坊市制不同,宋代开封的市场在空间和时间上都获得了极大的解放。汴河沿岸形成了全天候的物流与商业走廊,内城主要街道两侧店铺林立,早市与夜市在时间和空间上接力运转。更关键的是,宋代开封已经形成了相对成熟的价格波动机制——汴河的漕运通畅与否、季节性的物资供应变化、节令性的消费需求爆发,都会导致物价的起伏。
方云舟的团队试图将这些历史机制转化为游戏系统。他们在策划案中设计了一套物价浮动模型:开封城内十二个主要商业区的物价,会根据游戏内的季节、天气、漕运状态——由汴河水位和船只数量模拟——以及玩家行为产生动态变化。这套模型的底层数据参考了宋代实际物价记录。《宋会要辑稿》中保存了大量物价数据,包括米价、绢价、盐价、酒价等。顾知远将这些数据整理成基准价格表,策划组再根据游戏节奏进行系数调整。
策划案中有一页流程图,后来成为项目组内部讨论的焦点。那页流程图上用不同颜色的笔迹标注了多次修改:原始设计、系统策划陈曦提出的质疑、最终妥协方案。核心矛盾点在于一个参数:物价波动的幅度。
方云舟的原始设计是,物价波动幅度应达到基准价格的百分之三十以上,以模拟宋代汴京真实的物资紧缺与季节性波动。他引用了《东京梦华录》中关于冬至前后物价上涨的记载,以及《宋史·食货志》中关于汴河漕运中断导致京城粮价暴涨的记录。他认为,这种波动本身就是游戏内容——玩家需要根据物价变化调整自己的经济活动,囤积、投机、跨区贸易,这些行为将构成一种自发的玩法。
陈曦的质疑很直接:玩家不是来开封炒期货的。她在流程图旁写下了自己的判断:物价波动超过百分之十五,大部分玩家会直接放弃经济系统。他们不会去研究为什么今天的米比昨天贵,他们只会觉得这个游戏在刁难他们。陈曦的依据来自《逆水寒》的经济系统运营数据——在那款游戏中,即使是百分之十以内的物价波动,也经常引发玩家社区的抱怨和客服工单。
这场争论持续了两周。最终妥协方案是:物价波动幅度设定为基准价格的百分之十二,但在特定节令期间——冬至、元宵、清明——可以触发最高百分之二十的波动,且这些波动会通过NPC对话和界面提示向玩家预警。这个方案写在流程图的最下方,旁边有方云舟的一行小字:这已经不是我想要的经济系统了。但这行小字下面,还有陈曦回复的一行字:但它可能是玩家愿意用的经济系统。
城市空间使用逻辑是呼吸系统的第二个子系统。它的设计初衷,是解决一个在开放世界游戏中普遍存在的问题:NPC的行为与城市空间的关系往往是割裂的。NPC沿着预设的路径移动,在预设的位置停留,执行预设的动作。城市对他们来说只是一个布景,不是一个真正的生活场域。
方云舟的团队试图在开封城中打破这种割裂。他们设计了一套基于“空间身份”的NPC行为分配系统。每一个NPC在生成时,都会被赋予一个空间身份——他属于哪个街区、他的活动半径是多少、他在一天中不同时辰通常会出现在哪些位置。这个空间身份不是预设的路径点,而是一组行为规则。NPC会根据规则,在属于自己的空间范围内自主选择行动。
例如,一个身份为“虹桥附近酒楼伙计”的NPC,他的行为规则包括:清晨去汴河码头接收当日食材、上午在酒楼后厨备菜、午间在前厅跑堂、午后可能去附近茶肆短暂休息、傍晚继续工作、夜间酒楼打烊后回住处。这些行为的具体时间点和路径不是固定的,而是在规则框架内随机生成。这意味着,玩家在开封城的不同时间、不同日期进入同一区域,看到的NPC行为会有差异——不是完全随机,而是在一套历史逻辑约束下的动态变化。
这套系统的技术实现并不复杂,真正困难的是规则库的构建。顾知远为此整理了一份《汴京城市居民时空行为参考》,依据《东京梦华录》等文献中关于不同阶层、不同职业人群的日常生活描述,提炼出二十三种NPC身份模板,每种模板对应一套行为规则。酒楼伙计有酒楼伙计的规则,汴河船工有汴河船工的规则,相国寺僧人有相国寺僧人的规则,夜市摊贩有夜市摊贩的规则。
这份参考文档的细节程度,在项目组内部引发过一阵半开玩笑的讨论。有人在内部论坛上贴出了其中一页,问顾知远是怎么考证出“早市卖鱼者午后或至附近酒肆小酌”这个细节的。顾知远在下面回复:《东京梦华录》卷四“鱼行”条记载“每日早赴鱼市,午前即散”。“小酌”是合理推测,宋代汴京下层市民午后有饮酒习惯,多处文献可证。这段对话后来被截图在项目组内部流传,成为一个梗。
但方云舟在一次策划例会上认真地说,他们需要的恰恰就是这种级别的细节——不是“卖鱼者”这个概念,而是“五更取鱼、六更设摊、午前收摊、午后小酌”这个具体的人。玩家可能永远不会跟踪一个卖鱼NPC的完整一天,但当他们反复经过虹桥早市的时候,他们会感觉到这里的人是活的。
城市事件系统是呼吸系统的第三个子系统,也是与美术组的建筑身份系统形成直接呼应的设计。它的核心逻辑是:开封城的节令与昼夜变化,不仅改变城市的视觉呈现,也改变城市的功能逻辑。元宵节期间,主要街道两侧会出现临时性的彩棚灯山,州桥夜市的营业时间延长至三更,相国寺开放夜间参拜;清明节前后,城外汴河沿岸会出现踏青人群,城内纸马铺生意兴隆;冬至日,官署区关闭,但商业区的酒楼茶肆通宵营业,因为宋代开封有冬至守夜的习俗。
这些节令事件不是任务。它们只是发生。方云舟在设计文档中写了一段说明:城市事件系统不主动引导玩家参与。玩家可以在元宵夜去州桥看灯,也可以不去。他去了,看到的是满街花灯和拥挤的人潮;他不去,那座城里的灯照样亮,人照样挤。他们不是在给玩家提供“元宵节任务”,他们是在让这座城市过元宵节。
这段话后来成为开封城设计哲学的一个浓缩表达。沈明远在内部评审会上将它概括为四个字:城先于人。城市本身的生命力优先于玩家的行为引导。城市是主体,玩家是访客。
系统策划陈曦在评审会上提出了一个尖锐的问题:如果玩家不去看灯,做灯的意义是什么?方云舟的回答是:意义在于,当他某一天偶然经过的时候,灯在那里。陈曦没有继续追问。但她在会后私下对一位同事说了一句话,后来被传了出来:问题是,他会偶然经过吗?
这个问题的答案,在开封城首次内部完整测试中以一种令人不安的方式浮现了。
测试是在2024年11月的一个周二启动的。Everstone工作室从网易杭州园区邀请了六十名内部测试人员,都不是《燕云十六声》项目组成员,其中一半有《逆水寒》的游戏经验,另一半是从其他项目组抽调的泛用户代表。测试周期三天,每人每天至少四小时,自由探索开封城区域。测试目标是验证城市生态系统的稳定性、NPC行为的合理性、以及动态经济系统的平衡性。
测试第一天下午,方云舟坐在监控室里,面前是一整面墙的屏幕。每一块屏幕显示一名测试者的实时画面,旁边的数据面板记录着该测试者的位置、移动轨迹、交互行为、界面操作。整个监控室里有七个人,包括数据分析师、QA负责人和两名策划。沈明远也在,他坐在后排,没有看屏幕,在看手机上的实时数据仪表盘。
数据开始回流。头两个小时的数据看起来很正常——测试者们在开封城的各个区域分散开来,有人沿着汴河走,有人进了相国寺,有人在虹桥上停下来看风景。移动轨迹图显示,人群分布相对均匀,没有出现明显的聚集或空白区域。方云舟稍微松了口气。
然后第三个小时的数据进来了。数据分析师首先注意到了异常。他指着屏幕上的一条曲线——任务触发率。在正常开放世界区域中,玩家在自由探索约三十分钟后,会开始主动寻找任务触发点,任务触发率通常会迅速攀升至百分之六十以上。但在开封城区域,任务触发率在第一个小时达到百分之三十八的峰值后,开始持续下降。到第三个小时,这个数字降到了百分之十二。
方云舟问他们在干什么。数据分析师调出了行为分类统计。第三个小时,六十名测试者的主要行为分布如下:步行浏览——无明确目的移动——占比百分之四十七,定点观赏——在某一位置停留超过两分钟——占比百分之二十三,与NPC非任务对话占比百分之十一,界面操作——查看地图、背包等——占比百分之九,任务相关行为占比仅百分之十。方云舟盯着这组数字,没有说话。
第四个小时的数据更加明确。任务完成率全线走低,但城市内的“无效停留时间”——策划术语,指玩家在非任务节点、非功能节点停留的时长——急剧上升。测试者在虹桥上停留的平均时长达到了四分半钟。在相国寺庭中,有人停了七分钟。在州桥夜市,有人反复在同一段街道上来回走动,没有触发任何交互,只是走。
沈明远从手机屏幕上抬起头,问了一句:有人在玩吗?没有人回答他。
第二天下午,QA团队开始收集测试者的定性反馈。形式是一对一面谈,每人十五分钟,由QA专员按照提纲提问,全程录音。当天晚上,第一批面谈录音的文字稿被整理出来,发到了项目组的内部邮件列表。方云舟在工位上打开邮件,往下翻。他先看到的是一些常规评价——画面很好、城市很美、细节惊人。然后他翻到了一条反馈。测试者编号032,男,二十四岁,《逆水寒》玩家。他在面谈中说:“我在虹桥上站了十分钟,看船来船往,很美。然后我就下线了。”
方云舟把这句话读了两遍。他继续往下翻。测试者编号045,女,二十七岁,轻度游戏用户。她说开封城是她见过的最漂亮的游戏城市,但她不知道为什么要待在里面。她走了一个多小时,看了很多东西,然后她觉得看完了,就没有然后了。测试者编号019,男,三十一岁,硬核MMO玩家。他的反馈更加直接。他质问项目组花了多少人力做这座城,认为至少一半是浪费的,因为他根本不需要一座这么真实的城。他需要的是一个让他有事可做的城。项目组把汴河上的船做得那么细,但他不能上船,船也不带他去任何地方。那他为什么要看船?
方云舟关掉邮件,站起来,走到窗边。窗外是杭州城西的夜景,远处能看到西溪湿地的轮廓。他站了大概五分钟,然后回到工位,打开了一个新的文档。他写下的第一行字是:我们造了一座城,然后发现没有人需要住进去。
第三天下午,测试结束后的复盘会在项目组大会议室召开。参会人数超过四十人,包括沈明远、陆辰、李想、方云舟、陈曦、赵铮,以及各系统负责人和核心执行策划。会议室前面的大屏幕上,投射着数据分析师整理好的测试报告。报告的核心结论只有一句话:开封城的视觉品质与历史还原度达到预期目标,但玩家行为数据显示,该区域在“游戏驱动力”维度上显著低于项目基线。
数据分析师用激光笔指着屏幕上的对比图表。开封城区域的任务完成率是清河区域的百分之三十七,是雁门关区域的百分之二十九。玩家平均在线时长并不低——实际上,开封城的平均停留时长比清河区域高出百分之二十二——但有效游戏时长占比仅为百分之四十一,远低于清河区域的百分之七十八和雁门关区域的百分之八十五。有效游戏时长是策划术语,指玩家在执行任务、战斗、系统交互等核心游戏行为的时间。
数据分析师翻到行为分类饼图。百分之五十二的时间在“环境浏览”。这个词是他们临时造的,因为现有的行为分类标签无法覆盖测试中观察到的情况。它包括无目的步行、定点观赏、跟随NPC观察其行为、以及在城市中反复穿行但不触发任何系统交互。
会议室里沉默了大概十秒钟。沈明远先开口。他的声音很平静,但说出来的话不平静。他们做了两年,花了一百二十个人月,造了一座美轮美奂的城市。然后玩家告诉他们,在这座城市里最主要的活动是散步。
没有人笑。李想坐在会议桌的另一端,双手交叉放在桌上,看着屏幕上的饼图。他的表情看不出情绪。方云舟坐在他斜对面,面前摊着一本笔记本,上面密密麻麻写满了字,但他在整个复盘会的前半段没有说一句话。
陈曦打破了沉默。她的声音不大,但很清晰。她说她不认为这是失败。这是数据。数据告诉他们一件事:玩家承认这座城很美,但他们不知道美有什么用。这不是城的问题,是他们的问题。他们没有给玩家“用”这座城的理由。
赵铮问什么理由。他的战斗系统在开封城测试中没有被触发几次,数据很难看,但他的语气并不沮丧,更像是真的在追问。陈曦说她也在找。但至少有一点是清楚的。在清河,玩家知道自己是侠客,要战斗、要成长。在雁门关,玩家知道自己是士兵,要守城、要杀敌。在开封,玩家是什么?
这个问题悬在会议室上空,没有人立刻接住。陆辰最终接住了。他的声音很轻,像是在自言自语,但会议室足够安静,所有人都听到了。他说,在开封,玩家是一个站在桥上看船的人。
复盘会结束后,方云舟在工位上坐到了凌晨两点。他把测试期间的所有定性反馈文字稿重新读了一遍,用黄色高亮标记了每一处提到“不知道该干什么”或类似表述的地方。他一共标记了三十七处。然后他新建了一个文档,标题是《开封城问题诊断与修正方向(草案)》。
这份文档的前三页,是他对开封城设计哲学的一次自我解剖。他写道,他们犯了一个根本性的错误。他们以为“城先于人”意味着城市本身的生命力可以替代游戏驱动力。他们错了。城市本身的生命力不能替代任何东西。
它只能作为基底存在,而这个基底之上,必须有一个明确的、持续牵引玩家行为的驱动力系统。他们把这个系统弱化到了几乎不存在的程度,因为他们担心它会破坏城市的“有机感”。他们担心任务指示图标会破坏虹桥的美感,担心引导线会让汴河两岸变成一条跑任务的通道。他们的担心是合理的,但他们的解决方案是幼稚的——他们选择几乎不做引导,以为玩家会自己发现城市的美。玩家确实发现了。然后他们走了。
方云舟在第四页开始列出修正方向。他没有推倒重来,而是在现有城市生态系统的框架内,提出了三个层面的修正方案:第一,在城市空间中嵌入一套“发现式任务链”——任务触发点不通过UI图标提示,而是通过NPC行为和环境线索自然引导玩家发现;第二,强化城市空间的功能分层——不同区域提供不同类型的核心玩法,但不破坏该区域的历史逻辑;第三,在动态经济系统中加入更明确的玩家参与接口,让“物价波动”从背景机制变成可感知、可参与的玩法。
这份草案在第二天上午被发送给了沈明远和陆辰。沈明远在当天下午回复了邮件。回复说方向对,但时间不够。方云舟盯着这六个字看了很久。他知道沈明远的意思。开封城的上线时间已经锁定在2025年第一季度,剩下的开发周期不到四个月。他提出的三个修正方向,每一个都需要至少六个月的开发与测试周期。时间确实不够。
但沈明远在邮件末尾附了一份数据对比表。这份表格后来被方云舟称为“开封城的体检报告”。它没有评论,没有建议,只有两组数字的并置。
表格的上半部分,是开封城区域的开发投入数据。总开发人月:127。美术资源占比:项目总美术资源的百分之三十八。策划人力占比:项目总策划人力的百分之三十三。建筑单体数量:2,347。独立NPC数量:1,856。动态事件类型:47种。语音台词总量:约12万字。历史考据参考文献:超过200篇。
表格的下半部分,是开封城区域在内部测试中的玩家行为数据。任务完成率:百分之十九。清河区域为百分之五十一。战斗触发率:百分之八。雁门关区域为百分之六十七。经济系统参与率:百分之六。社交互动频次:每小时0.3次。清河区域为每小时2.1次。有效游戏时长占比:百分之四十一。环境浏览占比:百分之五十二。测试后留存意愿——愿意再次进入该区域的测试者比例:百分之九十四。测试后任务意愿——认为该区域“需要更多任务”的测试者比例:百分之七十一。
最后两个数字的并置,构成了这份表格中最耐人寻味的一对矛盾。百分之九十四的人愿意再回来,但百分之七十一的人觉得这里缺东西。他们愿意回来,不是因为这里有什么。是因为这里没有什么。
方云舟把这份表格打印出来,贴在工位的隔板上。他在旁边用铅笔写了一行字:他们想回来。但他们回来之后,我们能给他们什么?
李想从蔚州回来的那天,杭州下了雨。他坐的是早班高铁,到大同转车,下午三点到杭州东站。他没有回家,直接去了园区。他的工位上堆着三天的邮件和文档,最上面一份是方云舟的《开封城问题诊断与修正方向(草案)》打印稿,封面贴着一张便签,是沈明远的字:你看看。
李想坐下来,花了两个小时读完了方云舟的文档和那份数据对比表。然后他打开引擎,加载了开封城的最新版本。他没有操作角色移动,只是把镜头拉高,俯瞰整座城市。汴河在画面中央蜿蜒穿过,虹桥的弧形木拱在下午的光照下泛着暖黄色的光泽,州桥夜市的小摊沿着河岸排开,相国寺的庑殿顶在一片灰色民居中显得庄重而沉静。他看了很久。
然后他打开邮件,给沈明远写了一封回复。这封邮件后来被沈明远转发给了项目组全员,成为开封城修正阶段的精神基调。
李想写道,他回蔚州看了那座老城。城墙还在,南门还在,关帝庙还在,那棵老槐树也还在。他在树下站了很久。他想起小时候在树下玩,从来不会问“这棵树有什么用”。它就是一棵树。它在那里,春天发芽,夏天遮阴,秋天落叶,冬天光秃秃地站着。它不需要有用。但它是那座城里最重要的东西之一,因为所有人——住在城里的人、从城外进来的人、路过的、回家的——都知道它在那里。它让那座城有了一个中心,不是地理上的中心,是记忆上的中心。
他继续写道,他们做开封城,犯的错误不是“做了太多没用的东西”。他们犯的错误是,他们做了那么多东西,但没有让它们变成开封城的“老槐树”。玩家站在虹桥上看了十分钟船,然后下线了。不是因为他们不喜欢那座桥。是因为那座桥没有变成他们的记忆。它只是一个好看的模型。他们要做的,不是减少“没用的东西”。他们要做的,是让那些东西变得有用——不是功能上的有用,是情感上的有用。让虹桥不只是虹桥,让州桥夜市不只是州桥夜市,让相国寺不只是相国寺。让它们变成,当玩家离开这座城之后,偶尔会想起来的地方。
沈明远在转发这封邮件时,加了一句话。他写的是:他们在乎那些树。现在的问题是,怎么让别人也在乎。