第20季揭幕战开场前,东湖雷鸣主场的转播里,解说员梁伯韬在介绍客队主教练时停顿了一下:“邵启明今天回到东湖体育馆。十六年前的总决赛第七场,最后一投就是他在这块场地上投丢的。”玩家操控的后卫已经39岁,那一球他当然记得,可他早就说不清邵启明后来去过哪些球队、带过哪些年轻人。邵启明记得。赛前握手时,他只说了一句:“你们这里的篮筐还是那么硬。”一个二十年的存档有没有历史,可以用这一刻来检验:世界里的人是否记得玩家已经淡忘的事,而且每个人记得的版本都不一样。

模拟场景东湖雷鸣、雍城猎鹰、西岭,以及梁伯韬、乌恩、邵启明、陈蔚、纪川等人物和全部赛季事件,均为说明体育剧情大模型设计思路的虚构示例,文中数字仅用于演示。

World State:二十个赛季先要被完整地存下来

历史的前提是记录。不少体育经营类游戏的存档只保存“当前状态”:现在谁在哪支球队,合同还剩几年,能力值多少。这样的存档跑满二十年,第20季的世界依然完整,但第4季发生过什么已经无从查起,最多剩下一张历年冠军名单。

要让人物在多年后提起往事,世界状态至少需要两层。第一层是当下的快照:十六支球队的阵容,每名球员的年龄、能力、合同和伤病状态,教练组、媒体机构、主要球迷组织,以及联赛规则。第二层是按时间排列的事件日志:第几季第几场,谁和谁,在什么情况下,发生了什么。快照回答“现在是什么样”,日志回答“怎么变成了这样”。

另一个常被忽略的问题是,玩家不在场时世界是否还在运转。二十年里,联赛中绝大多数比赛、训练和转会都与玩家无关。如果只有玩家所在的球队在推进剧情,其他球队的人物就会像背景板一样原地不动。乐鱼体育在长期存档上倾向的做法是分层模拟:与玩家关系较强的核心人物,每周计算训练、情绪和决策;联赛里有一定知名度的球员,按赛季结算表现、转会和伤病;其余背景球员只做统计层面的更新。这样既能控制计算量,也能保证那些将来可能被人提起的角色,确实有一段可以被提起的经历。

Memory:哪些事二十年后还值得说出口

二十年的日志会非常长,人物不可能也不应该记住全部。东湖雷鸣的中锋乌恩和玩家同一年进队,第2季某次训练结束后,两人聊过乌恩老家的草原和他父亲养的马。这段闲聊属于Short-term Memory,几周后就会淡化,除非后来发生的事让它重新变得重要,比如第17季乌恩的退役仪式上,他的父亲坐在了看台第一排。

比闲聊更持久的是Relationship Memory:谁在困难时帮过谁,谁在训练里和谁起过冲突。再往上是Career Event,例如一次转会、一次续约谈判、一次失去首发。最高一层是Important Event:冠军、总决赛的关键球、重伤、公开决裂。这一层基本不衰减,它们构成了人物理解自己和他人的底色。

类型 模拟事件记得的人 第20季时的权重
Rivalry 第4季总决赛G7,邵启明最后一投不中,东湖首次夺冠 邵启明、乌恩、玩家、梁伯韬 高,几乎不衰减
Interview 第6季玩家对记者陈蔚说“东湖会是我最后一支球队” 陈蔚、部分球迷 中,因后来的转会被重新激活
Championship 第8季东湖再次夺冠,玩家当选总决赛MVP全队、球迷、媒体
Injury 第9季乌恩跟腱断裂,缺席整个赛季 乌恩、队医、玩家 对乌恩高,对其他人中等
Coach 第10季梁伯韬卸任主教练,转行做解说 玩家、乌恩
Transfer 第11季玩家转会西岭 乌恩、陈蔚、球迷 高,情绪复杂

表里最值得留意的是Interview那一行。第6季那句“东湖会是我最后一支球队”,原本只是一次普通采访里的话,权重不高。第11季玩家转会西岭时,陈蔚把它重新翻了出来,它的权重随之上升。可见记忆的重要程度并非写入时一次定死,后来的事件能让一件旧事重新变得要紧。世界状态、事件日志和记忆权重具体如何组织,体育剧情大模型的记忆结构那篇有更细的拆分。

Relationship:老对手、旧队友和只听说过玩家的新人

二十年里,关系网比任何单个人物的记忆变化得都多。关系是双向的:玩家怎么看乌恩,乌恩怎么看玩家,是两条独立的记录。第11季转会之后,玩家对乌恩的信任几乎没变,乌恩对玩家的评价却明显下降。第9季他跟腱断裂,是玩家每周去医院看他;他没想到两年之后,先离开的会是对方。

NPC之间的关系同样在变。第4季总决赛,封盖邵启明最后一投的人其实是乌恩,此后两人成了联赛里最出名的一对对手。到了第12季,邵启明合同到期,以自由球员身份加盟东湖。那时玩家在西岭打球,错过了这段关系转变的全过程:两个老对手从互相提防,到第13季一起拿下冠军,再到邵启明退役那天,他在场边第一个拥抱的人是乌恩。

还有一类关系是二手的。第20季雍城猎鹰的新秀纪川只有19岁,从没和玩家交过手,却已经对玩家有了看法,这个看法来自主教练邵启明在训练里讲过的故事。邵启明讲的版本自然有偏向:第4季那场G7,在他的叙述里,玩家在最后一攻之前有一次没被吹的走步。纪川对玩家的初始评价由这个版本决定,而不是由玩家的实际表现决定。二手关系让新一代人物进入历史的方式更接近真实的体育世界:年轻人通过前辈的讲述认识传奇,而讲述本身带着立场。

玩家离开的四个赛季,东湖自己写下了一段历史

第11季到第14季,玩家在西岭。这四年对东湖雷鸣来说并不是空白,一连串变化完全由NPC的自主行为推动,但每一步都受世界规则约束。

玩家转会西岭东湖缺少持球核心邵启明合同到期加盟第13季东湖夺冠乌恩与邵启明结成同盟

邵启明为什么会来东湖?他的合同在第12季到期(Contract);东湖在玩家离开后急需一个能持球的得分手(Club、Role);他是Ambitious性格,31岁仍没拿过冠军,愿意去有机会争冠的球队(Personality、Career);而东湖更衣室里最有话语权的乌恩没有反对,因为玩家走后,乌恩对“外来者会不会背叛球队”的顾虑,已经从邵启明身上转到了玩家身上(Relationship)。

这些约束把剧情限定在合理的范围里。AI不能为了制造一段戏剧性的回归,让已经退役的球员复出;也不能让一个Loyal且合同在身的球员,在赛季中途毫无缘由地要求交易。自主行为的价值在于让世界自己产生后果,而这些后果之所以可信,恰恰因为它们受到规则限制。

第15季,玩家以老将身份回到东湖。他面对的是一个在没有他的情况下夺过冠的更衣室:乌恩是队长,邵启明刚退役转入教练组,墙上挂着第13季的冠军合影,照片里没有他。回归发布会外,有球迷举着写有第6季那句话的标语。陈蔚在发布会上问的第一个问题是:“你说过东湖会是你最后一支球队,现在这句话还算数吗?”

Story Generation:什么时候翻出旧账,翻到什么程度

有了世界状态、分级记忆和关系网,剧情生成要解决的问题就变成了检索:在某个具体时刻,哪些旧事应该被提起,由谁提起,用什么语气。

触发旧记忆的条件通常很具体:同一块场地,同一个对手,相似的比赛局面(又一次抢七,又一次最后一投),有纪念意义的时间点,以及人物身份的变化。第20季揭幕战同时满足其中三条:东湖主场,对面是邵启明,两人的身份都变了。所以梁伯韬在解说里提起第4季G7,是有来由的。

但提起的方式要经过性格和关系的过滤。梁伯韬从教练转行做解说,Media-friendly,他会在直播里把那段往事讲完整。乌恩第17季退役后进了东湖的球探部门,性格Reserved,他在公开场合绝不谈玩家当年的转会,只会在赛前走进更衣室时说一句“这回别再走了”。邵启明作为对方教练,用一句关于篮筐的玩笑带过,把真正的情绪留到赛后。

还有几条约束同样重要。其一是知识来源:人物只能记得自己经历过、看到过或听别人讲过的事,纪川不可能知道玩家和乌恩在医院里说过什么。其二是一致性:生成的对话不能与事件日志矛盾,邵启明可以把那一球的结果归咎于裁判,但不能说那一球投进了。其三是频率:如果每场比赛都有人追忆往事,历史就会变成噪音,大多数比赛应该只是比赛。

第20季揭幕战的结果是雍城猎鹰赢了1分。最后3秒,纪川在第4季邵启明出手的同一侧底角投进了制胜球。赛后发布会上邵启明说:“十六年了,这个篮筐总算对我们软了一次。”这场比赛写入事件日志,成为纪川的第一条Important Event,也让39岁的玩家和19岁的新秀之间,有了第一段对手关系。

Long-term History:存档变成一部只属于这个玩家的联赛史

到第20季,这个存档里已经积累起一部完整的联赛史。它有传奇球员:乌恩在第17季退役,东湖为他退役了球衣号码。有老对手:邵启明从对手变成队友,又变成对方主教练。有经典比赛:第4季总决赛G7,以及第13季那个玩家缺席的冠军赛季。有转会恩怨:第6季的承诺和第11季的离开,至今仍有球迷记得。有教练故事:梁伯韬从主教练变成解说员,他在直播里讲的往事,是许多年轻球迷第一次听说的“东湖旧事”。还有退役角色,他们以教练、解说、球探的身份继续留在世界里,关于这类人物怎样换一个身份重新进入故事,可以参考退役球员以教练身份回归一文。

这部历史的独特之处在于,另一个玩家的存档里不会有它。如果他在第4季没有赢下那场G7,邵启明也许会在自己的球队拿到冠军,从此不必转会;如果他第11季没有离开,乌恩和邵启明大概永远只是对手。每个存档从同一套联赛规则出发,二十年后却分化出完全不同的人物谱系和记忆。

这也是乐鱼体育的体育NPC大模型在长期存档上要达到的状态:玩家的职业生涯是这部历史的一条主线,却不是全部。乌恩、邵启明、梁伯韬、陈蔚和纪川都有各自的线,它们与玩家交叉、分开、再交叉。玩家退役之后,这部历史仍会继续,只是他会从讲述者变成被讲述的人。

二十年存档仍然难做好的几件事

这套思路在设计上说得通,落到工程里还有几个没有完全解决的问题,值得如实写出来。

  • 日志膨胀:二十个赛季的事件日志会持续增长。常见做法是把久远的赛季压缩成摘要,只保留Important Event和Career Event的原始记录,但压缩时丢掉哪些细节,会直接决定多年后人物还能说出什么。
  • 遗忘的尺度:忘得太快,人物像失忆;忘得太慢,每个人都像档案管理员。不同性格的人物记性本来就该有差别,这需要反复调整。
  • 历史的可见性:玩家自己也会忘。存档需要一条可以回看的时间线或一本“联赛年鉴”,让玩家在NPC提起往事时能查到来龙去脉,否则再好的伏笔也会落空。
  • 离线事件的传达:玩家不在场时发生的事,需要通过报道、队友讲述、赛前回顾片等方式让他得知,否则这些历史对玩家来说等于没有发生过。

回到标题:AI体育剧情大模型能不能让一个20年存档拥有属于自己的历史?从机制上看可以,前提是它能把世界状态完整记录下来,给记忆分级并允许旧事被重新激活,维护双向且不断变化的关系网,并在生成时克制地、有来源地提起往事。做到这些,第20季揭幕战上那句关于篮筐的玩笑,才会让一个39岁的老将愣一下,因为他知道对面那个人在说什么,屏幕外的玩家也知道。