他说自己不是天才
我对丁盛豪的感受实在有一种错位感。
2024 年的 RubyConf China 演讲中,丁盛豪在视频中显得非常活跃,语速很快,讲到兴起时会不自觉地 " 蹦 " 一下。他看起来也很喜欢幽默感,在介绍演讲的主题时说:我觉得在这样一个技术会议上讨论艺术非常的合适,毕竟我毕业于庆应义塾大学。
讲完了他还要自己作个笑点解析:义塾的谐音是艺术。在后面讲到其他准备好的包袱时,他更是自己憋不住先笑出来。
我们一起聊了几个小时,如果能抛去录音中那一大串我有点听不懂的技术名词,他更像那种班上的 " 好哥们 ",学习不一定是最好的,但你知道有些有趣的难题只能找他聊聊。有时三五天过去,可能连你自己都忘了问题是什么的时候,他又会突然找到你说:" 我想到一个这样的思路 ……"
如果你还没听过丁盛豪的名字,那看看他的经历,你可能会明白我的错位感从何而来。
刚进入米哈游时,丁盛豪的学历一栏还显示着 " 高中 ",但他已经能在一周内写出云游戏的原型。在别的硬件大厂准备和罗技合作、重资研究时,丁盛豪只花了 200 来块钱,买了个古早手机和自制的键盘就复刻了 NVIDIA Reflex 的延迟测量流程 。
他单独设计了 PCB 电路替代了高度集成的 BMC 芯片,大幅改善了当时云游戏服务器的选型难度与成本,还给性能又拔高了一截。再比如,某个准备上线云的游戏遇到了操作迟缓的问题,负责的 QA 团队都还没摸清头脑,丁盛豪一下就定位到了程序里的某行代码上 ……
这些故事听起来甚至有些古早的意林味,同事间很快传出了 " 奇怪的传言 ":只要有难解的技术难题,丢给他就都能解决。
2023 年,丁盛豪从米哈游离职,拿到投资创办了柚衣科技。在两年的开发后,他们上线了第一款游戏 demo《印格》,同时搬到了漕河泾的孵化基地,和同一层的好几家独立工作室一同办公。
" 米哈游离职 "" 小天才 ",在亲身接触之前,这两个标签会成为人们对他的全部印象。你很难不感觉这个人会不会是个超级 geek(极客)?有一种遥遥无边的距离感。
但他创业后选了个做 AI 叙事引擎的小众方向——我的意思是,看看那些曾经和游戏叙事研究有过关系的人,身上大多有人文主义的气质。我相信,会对游戏叙事感兴趣的人身上也一定多少带有这种气质。因为游戏叙事是一件关乎表达的事情,如果本身并不关注这个领域,人们甚至很难意识到在游戏内叙事是一门极艰深的学问。
他甚至找到了艾米莉 · 肖特的故事块(Storylet)概念,这个名字拿去微信搜索栏一搜只能跳出来五、六篇文章。
这导致人文主义形象的丁盛豪比作为 " 技术天才 " 的丁盛豪更先入为主地占据我的印象,随着我们采访的推进,我越发确信我的感觉没有出错。
采访末尾,我没忍住,问他自己到底是怎么看待这个天才标签的。丁盛豪看起来有些尴尬地双手捂脸,仰靠在椅背上不好意思地大笑起来。
人、玩家、技术
丁盛豪不是很喜欢天才的这个标签,在他看来,传闻肯定显得有些夸张了。
丁盛豪的技术能力很强,但这多源自他早早就开始自学程序的经历。他形容自己对如何解决问题有一种旺盛的好奇,和其他人交流自己的解决思路时,也是以自己怎么想到这件事先开始讲。
相比技术,他首先是一名玩家,也更在乎人。在我们的交流过程中,他的目光一直在我和另一位编辑的身上来回调换,确认自己所说的技术问题有没有讲清楚。因为这个确认的行为太明显了,期间,我有点恶作剧的小心思,端着烟灰缸走到他们的身后默默听着对话。
我听他从 AI 的能源密度讲到芯片,讲到机柜与机柜的距离与光速成了延迟密集型运算的瓶颈,再到局域性原理和立体晶闸管。坏消息是我感觉自己好像误入一场民科交流会,好消息是我的恶作剧成功了——丁盛豪每讲完一段都会转个 180 度再次和我确认,这好像成了什么默契。
最后,他说,人类研究了这么多技术原理,都不用什么立体晶闸管,只是大脑上多长了几个沟壑,仔细想想人其实很厉害。
他似乎不太相信所谓程序的严谨和既定,也不愿意在思考路径上偷懒,这给丁盛豪带来了一种跳出思维惯性和视觉盲区的能力。感觉像一名追求 " 邪道速通 " 的玩家跑到了现实。当他给我们讲他视角下的 " 技术难题 " 时,我们会因为其背后简单的逻辑笑出声来。
比如测试组发现某个游戏在 PC 端上运转流畅,但一旦在手机上运作镜头速度就出现问题。有点骇人的传闻版本是这样的:丁盛豪跑过去看了游戏一眼就说 " 你们查一下某某行代码是不是没有写 "。
事实上,这个看了 " 一眼 " 确实存在,只不过丁盛豪一眼看到的是帧数——这游戏在手机上看起来就没 60 帧。接着才是技术定位,其实这涉及的是一个游戏开发中相当基本的概念:Delta Time(从上一帧到这一帧,真实经过的时间)。
Delta Time 会影响游戏后台判定时间的标准。举例来说,假如游戏设定的是每过一帧角色就移动一点,那么哪怕操作一样,在帧率不同的设备上,角色每秒前进的距离肯定是不同的。因此 Delta Time 的作用就是告诉系统," 在现实的一秒钟内,我刷新了多少帧 "。
这是一个初学者常犯的问题,其实并不难,只是 QA 组完全没注意帧数问题会和操作适配相关。丁盛豪猜到了原因,但因为没接触那边的代码,因此做了个反汇编,查到代码里确实没写 Delta Time 才转告同事。
" 亲爱的开发者,不要再忘记乘上 Delta TIme 了 "
另一个相似的例子也在做云游戏优化时出现,其时所有人都在跟丁盛豪说程序报出来的帧数就是 60 帧。" 我说不可能,我肉眼看就不像 60 帧,我看起来这游戏像《黑魂 3》。它都不是 60 帧、30 帧的问题,它快一帧又慢一帧。" 后来才有了丁盛豪花 200 买高速摄影手机的故事。
拿到手机的丁盛豪在播放器上播放一秒钟的视频," 傻傻地 " 一帧帧数出来只有三十几,同事才相信。
这是一种玩家直觉式的反应,他们最后查到垂直同步线出现问题,一个屏幕里插入两帧画面,其实也是玩家们再熟悉不过的事情——画面撕裂,而这件事从显像管时期就已经存在了。
比起 QA 组会看不出帧率,程序想不到 Delta Time 出了问题,我更愿意相信他们曾经意识到这种想法,却缚于一种认知:后台给到的帧率不可能有问题;这个代码引用自某个上万个人点赞的库,不应该出现 Delta Time 都没写的这种问题。
所以才出现了丁盛豪用手机拍屏的执著," 我当时花了很大的精力,想要先测明白云游戏的端到端延迟是多少。我不要你告诉我你的内部报了多少毫秒延迟,我就想测个端到端的。从玩家按下鼠标到画面出反应,它对比原生差了多少个毫秒?"
" 我们做优化永远是盯着数据做优化,如果盯着一个全是错误的数据做优化,那你肯定做不出来任何东西。"
他把思考过程看得比结果重要,因为这是告诉你第二次、第三次、第四次解决问题的根本办法。这甚至延伸到游戏创作的方面上,丁盛豪会反思自己的工具思维和程序背景,不能偷懒似地光想着一个想法应该怎么在程序里实现。
更庞大的世界需要更大的工具
决定做叙述引擎也跟他的玩家身份有关系。丁盛豪是个跑团玩家,他很在意玩家在游戏里的所作所为到底有没有得到相应的反馈,再小的一件事,也至少要在文本上让你感受到 " 我对这个世界有所改变 "。
要讨论在游戏内如何叙事是一件特别麻烦的事情,即便暂时不去触碰玩法、交互或系统方向的问题,我们依旧会面临一个问题:几乎没有一套系统性的工具能支持我们创作,这里还是一块八仙过海各凭本事的领域。
在过去与未来很长一段时间内,我们依然要依赖文学理论,但这些理论更多是在作品完成之后进行分析,并非指向创作。
一部分原因在于,叙事艺术始终是一件 " 灵感 " 优先的事情,但在人类上千年的探索与积累中,可被挖掘的灵感都已被挖掘得差不多了——太阳底下无新事,对吧?就算有人精通了所有写作的手法与技艺,那也只能让其成为熟练的文字工作者或教授,好的作品依旧是一件难以产出的事情。
还有一部分原因在于,游戏成为了一项综合性的工程,传统文学理论在这里很难完全发挥作用。
历史上曾有过一些尝试,我们在这里有两个例子,一是 1960 年在法国组建的 " 乌力波 ",又名 " 潜在文学工坊 "。
乌力波的成员试图用规则约束文本,修改结构产生新的创作。例如成员之一的乔治 · 佩雷克就写了一本名为《消失》的书,全文不存在任何一个字母 "e"。你可以把这件事看作佩雷克本人就在玩一个 " 不要说‘ e ’挑战 ",其更主要的目的是挑战传统规则,激发后人在文本上的创作力。
他也有许多其他尝试,比如用 " 数形结合 " 的思路创作小说。
第二个例子是 " 超文本 ",也即是我们现在所熟悉的 " 超链接 "。戏剧作家们曾希望这种新技术能带来新的剧本创作方式,像《不眠之夜》那样在一个大房间内同时发生许多事的沉浸式戏剧成为可能——尽管现在超链接的普遍作用是给人跳转至购物网站。
后来,人们开始猜想游戏本身有没有可能才是我们想要的那个载体?这是一块挑战叙事的新领域,新的表现形式是不是应该带来新的写作模式?实话说,这一块的探索很少,大多数都存在于一些独立游戏中——比如说,《文字游戏》。
它当然是可读的文本,但同时也是图像
在明年的全球游戏收入有望突破 2000 亿美元时,大多数游戏厂商编写剧情的方式还是独立于游戏玩法外、低效的。负责人建立管线,然后执行文案将游戏按模块分领,在各种在线文档中写完负责的脚本,再和关卡或战斗等小组协同工作。
这背后有很现实的因素,相较于玩法、视觉的开发,剧情设计是一个高投入又难以产出的事情。因此大多数厂商要么直接砍掉剧情文案,要么用一些奇技淫巧规避风险。
" 你在今天的大厂内去找 300 个编剧一起做一个《博德之门》,大家是做不出来的。因为大家没有任何办法让 300 个编剧一起工作。"
但拉瑞安做出来了,为什么?这一方面确实展示了拉瑞安的实力,另一方面,丁盛豪解释,拉瑞安内部有很强大的剧本编辑工具。目前市面上虽然也有不少叙事引擎和开源项目,像 Twine,Ink 或者是 Yarn Spinner 这样的工具也有,但大多比较小型,难以支撑大规模开发。
《神界:原罪 2》的 mod 编辑器也能实现一些简单的事件编辑功能
只有关注、理解了这样的背景,才能理解丁盛豪和柚衣科技正在做一件什么样的事。他们试图给出一种新的、属于游戏创作的方式,至少给编剧们提供一种工具,让他们加入到游戏的开发中来。连丁盛豪本人都觉得 " 很难跟投资人解释我们这两年到底做了什么 "。
柚衣希望可以让更多的人能够参与进合作,多个编辑写出来的孤立故事可以通过某种方法拼接起来,或者通过一些 AI 途径,让单人也能写出丰富的网状叙事。
那么,这个工具要怎么办到?
给叙事以解放的 AI
1989 年,第二届 GDC 从克里斯 · 克劳福德的家里搬出(那时还叫 CGDC),来到了旧金山东南部的假日酒店。当时参加大会的人数只有 125 人,其中有一位设计师道格 · 夏普带来了自己的游戏《芝加哥之王》。
《芝加哥之王》是一个实验性的互动叙事游戏,主要讲述的是一个小混混如何在黑帮大佬阿尔 · 卡彭入狱之后试着接管芝加哥。玩家要点击主角头上冒出来的想法,决定接下来做什么、发生什么。
但道格 · 夏普是位特别追求叙事艺术的作者,他不想给游戏带来庞大的分支树,又希望每个玩家能玩到属于自己的故事。于是《芝加哥之王》的呈现方式大致是这样的:一位 " 电影放映员 " 拿着大量裁剪之后的电影胶片,根据观众的反应将这些片段组装成每次都不一样、但是每次又都能够说得通的故事。
这是我能想到关于故事块(storylet)最形象的例子了,当然,这个与后来由《伦敦陷落》的艺术总监艾米莉 · 肖特提出的概念有些差异,但目前我们照此理解即可。
丁盛豪和柚衣科技选择的解决思路就是故事块,它的正式名称其实是 " 基于相关性的叙事 ",即游戏根据目前的各种状态(可能包括人物、位置、物品、对话历史等等可以被设置的变量)来决定下一个将要展示的文本是怎么样的。
它和传统的线性或分支叙事的表现形式很像——玩家沿着一条自己选择的情节从开头游玩到结尾。这也是为什么《印格》很像一款传统的 CRPG 作品,但其实它们有本质的不同。
《印格》大体上讲了一个医院的故事,主角接自己的妹妹出院,途中和各种病友、护士、家属交谈,慢慢接触这个世界。它有掷骰或小游戏环节,不过总体还是对话为主。
在开头的部分,你就能感受到那股熟悉 CRPG 味。游戏中,玩家会应妹妹的请求买一罐汽水,但售货机前会同时站着另一个同样想买东西却没钱的路人。你可以买妹妹要的橙子汽水,可以买鼻涕虫味的汽水,可以直接痛殴售货机,也可以问问旁边的路人正在干什么。每一个选项都会在后文收到相应的伏笔。
如果说线性叙事是我们创作了一连串待发生的情节序列,那么上面这个 " 给妹妹买汽水 " 的桥段就有可能被分出 4 个不同的分支。
而故事块就是把这些序列都打散了,让它们每一个都跟游戏本体直连,不再是悬浮于玩法之上的独立层。
图源:厌氧菌
前者会面临一个所谓 " 叙事失调 " 的问题,即假如玩家的行动和游戏想要展现的叙事有冲突,那玩家就很容易感到受限。这里的经典例子是《巫师》里的杰洛特沉迷昆特牌,完全忘了自己本来要去找希里。
后者从根本上解决了这个问题,只要作者撰写的故事块越多,那么玩家的自由空间便越大。它本来有一个作者难以检查所有情节是否可以衔接的逻辑性问题,但 AI,或者说丁盛豪准备使用的一阶谓词限制方法,算是补足了最后一块砖。
当然,线性叙事可以通过大量的剧情分支和反复打磨达成类似的效果,或者干脆做成沙盒式的涌现式叙述——后者的代表是《矮人要塞》与《模拟人生》。但这会带来两个硬伤,一是给编剧带来同样难以检查的问题。
想想《博德之门 3》上线后对拉瑞安的访谈,为了把影心拿着的遗物顺利交给玩家,他们甚至专门派了一名工作人员处理和遗物有关的所有文本问题,每天的工作就是提问:" 诶,如果我无视 / 杀了影心直接走了怎么办?"
二是涌现式的叙事文本很少能满足玩家对 " 故事 " 的需求,因为大部分文字都是以报告或通知的形式显现,玩家只能自行脑补中间到底发生了什么事情。
故事块的架构和 AI 的适配程度相当高,并且相比直接将 AI 引入游戏,它能最大程度保留作者想要表达的诉求,作者依然可以选择在何时、何地,调动起玩家的情绪。丁盛豪几乎没考虑过无需表达的情况," 连科技产品都要表达 "。
在柚衣正研发的叙事引擎中,只要写好了开头和结尾,那么中间的情节就可以不断地进行填充,甚至于随时拆出来修改再放回去。多个作者可以同时撰写不同方向的故事,AI 会自动对多个故事块的逻辑自检,提醒哪里的剧情线没写完、哪里又发生了冲突。
它可以在文本输入后自动生成新的线路、关联情节,需要的时候还可以补写剧情。最重要的部分在于,它可以将编剧所写的文本自动转写成程序,接入游戏中。
《印格》结束后的分支图
丁盛豪解释,这个引擎可以做到的东西实际应该更加广泛,RPG、模拟经营,甚至动作要素的游戏都可以接入。只是他们目前仍以剧情与文本类为主,希望在《印格》中做好技术验证。
可能唯一的难点在于,编剧要完全上手这样的新写作模式得花上很长的时间," 我们的编剧可能花了快两年才大概搞明白这个系统到底是怎么用的 "。
对于柚衣来说,让程序员理解编剧到底需要什么样的工具也很困难,《印格》已经推翻了三次才形成现在的样子。不过编剧的工作量减少是肉眼可见的,尤其是越往后工期便缩减得越短。
目前已经有游戏已经用上了柚衣的引擎,11 月底上线的影游《江山北望》其实就已经启用了部分功能。丁盛豪说,《江山北望》是目前市面上数值最复杂的影游,但 AI 引擎给他们减少了大量的剧本工作量,腾出许多核心工作量到其他地方。
不过这些事对玩家来说,可能体感并不会特别强烈,因为放映员毕竟藏在幕后,只有在重复游玩的过程中你才会意识到自己在游戏里的自由得到了极大程度的提升。它最大的价值还是在创作者手中,或者说,有创作思维的人手中。
丁盛豪说引擎预计明年中就会对外开放,届时会有点像 RPGmaker 的编辑器形式。他们其实不愿意进入一个闭门造车的状态,有更多的作者试着用引擎做点什么,他们才能更好地做更多测试。
我们问他,柚衣到底想做一家科技公司还是游戏公司?他考虑了一下说,可能在更长远的未来会是个科技公司吧,但他其实并不相信世界上存在技术壁垒这件事,柚衣必须一直发展。
" 我其实不相信游戏性是由工业化本身带来的。嗯,我只是觉得游戏的长期运营可能是由这个东西带来的,但是这其实不是游戏最核心的东西。"
一切从人开始
" 大家都很希望能在计算机上体验人生,但是真的要做一个体验人生的游戏很难。"
丁盛豪最喜欢的游戏就是《史丹利的寓言》,这个游戏极大地刺激了他对游戏的看法。他不想变成史丹利的样子,坐在电脑前面,出现一个指令就按一个按钮——同时,他也不想让玩家变成史丹利。
其实,柚衣差点就不是一家游戏公司,丁盛豪在创业时还考虑过在医疗和法律方向验证 AI。在他看来,能否用逻辑验证限制住 AI 的发散想法,关乎到 AI 是否真的能与专家系统结合,参与到严肃的重复性工作上来,是否能真正解放人类的生产力。
他观察到如今的大语言模型其实本质上还是一个概率模型,如果我们只依赖基于概率的采样方法推理,那哪怕有 1% 或 0.001% 的可能出错,AI 始终无法做到逻辑严密的推理。
他拆解了医院对患者诊疗的过程,发现在 SOAP(主诉、客诉、诊断、流程)四个过程中,AI 可以加入到对主诉和客诉的指标判断中,相当于协助医生把所有可能跟患者相关的病症都筛选出来,这一过程中不会产生疏漏。这一部分对 AI 是不容有逻辑上的模糊的。
因为许多在一线的医生有时候也很容易忘掉一些罕见病。
丁盛豪深有体会,因为他自己就患有一种因遗传产生的病症,发病率大概在千分之一到万分之一。这种叫 IgA 肾炎的病症会导致人产生的抗体沉积在肾小球,在类似于感冒发烧或剧烈运动的情况下使人极度疲惫。" 累瘫痪的那种。" 甚至引发血尿、蛋白尿、脱水、昏迷等症状。
医院一般来说很少对这种病做出诊断,因为其病程特别漫长,大约要数十年左右才会发展到肾衰,并且目前难以医治。
这也导致丁盛豪从小跑步或生病后,家长朋友会觉得怎么他装病装得这么像。在后来留学途中,因缘巧合他才得知自己原来有这种病症。
" 如果早点筛查出来,起码知道有这种可能,也不至于我初中的时候一直体育不及格。中考的时候我拼死跑了 1 千米,跑到了 60 分,然后瘫了三天。我后来才知道原来我不能跑啊?" 说完他又一次自己先笑出来。
巧合的是,我和《芝加哥之王》的作者道格 · 夏普有过几次因工作产生的书信往来,他因罹患中枢神经痛产生了认知问题,再也无法进行编程或计算工作。这让他完全转向写作和闲情逸致的退休生活。不过,他一直关注着游戏叙事的进展。
他曾在 1989 年试着对未来的互动小说创作与互动小说生成做过一次预言。
在他的定义中,互动小说创作是人类进行纯手工打造的叙事作品,像《赛伯朋克酒保行动》或者《红弦俱乐部》这样的游戏;互动小说生成则是属于人工智能的领域," 即使一百万个莎士比亚在打字机上敲击,也无法编写出涵盖每一个潜在故事分支所需的所有对话。配合故事的其他角色都非常聪明,他们在幕后协调,呈现出无缝的互动叙事。"
他觉得,两者在文学造诣上的高度会在 2030 年第一次平等。
就目前 AI 的进展来说,我觉得这是没什么指望的了;不过我希望丁盛豪和柚衣的叙事引擎可以尽快端出来,让人们多写一点故事,我也可以跟道格老爷子报告一下又产生了什么新的突破。
毕竟," 讲故事是人类交流的最高形式之一 ",多一条可以叙述的道路便会有更多的交流。


登录后才可以发布评论哦
打开小程序可以发布评论哦