
开放宇宙游戏如何作念好协调?
整理/秋秋&林致
本年的GDC(游戏开导者大会)上,Sucker Punch职责室的器用设施员Roland Munsil,作念了一场对于《羊蹄山之魂》编剧管线的分享。

约略来说,他们给编剧作念了一个剪辑器,跑通了新管线。
也曾《对马岛之魂》的旧管线,需要谋划手搓上万条代码,至少浮滥600小时;而在《羊蹄山之魂》中,他们透澈变解雇责流,让编剧、谋划、制作主谈主乃至音频团队,能在一套职责空间中协调——新器用细节到了界面上的一颗标点。
《羊蹄山之魂》的得益有目共睹。发售两天收回一齐开导资本,首月全球销量破330万份(PS5独占),总收入超16亿元,Metacritic媒体评分87,玩家评分8.5——这套剪辑器管线撑抓的,是一个经过市集考证的大体量产物。
对行业来说,这场分享的道理不啻是如何作念一个剪辑器。
开放宇宙仍是不少团队的主流立项地点,但宇宙越作念越大,文履行量随着涨,编剧、谋划等岗亭之间的空转和访佛服务,仍是是许多大团队绕不开的协调问题。
如何让数百东谈主的团队少作念毋庸功?这场分享给了一个很具体的回应。
以下为演讲实录,为简略阅读,内容有所谐和:
01
不作念《博德之门》
我是Sucker Punch职责室的器用设施员Roland Munsil,今上帝要分享咱们在开导《羊蹄山之魂》时,对脚本写稿管线(Writing Pipeline)的要紧重构。

先看一下咱们的产物布景。
《羊蹄山之魂》是《对马岛之魂》的续作,两款游戏齐是日本历史布景的开放宇宙动作游戏,带有电影化故事(Cinematic Story)和战斗玩法(Game play)。

同期,游戏的叙事内容占相比大(Narrative Heavy),基本上通盘任务齐包含多量对话。每个干线任务可能有几百句台词,哪怕是短支线也有几十句,况兼任务量自己就不少——毕竟这是一个大型开放宇宙游戏。

不外有少量需要明确,咱们不是《博德之门》(Baldur's Gate),也不是《质料效应》(Mass Effect),没策画作念复杂的动态网状系统:要是你玩过这款游戏,那见过最多的对话选项,估量即是两个分支的回应,这些回应莫得实质性的影响,很快就会记忆干线。

02
原来的管线有多坑
开赴点,咱们的中枢团队约150-200东谈主。其中厚爱对话管线的有5名编剧(Writers),12名任务谋划(Mission Designers),2名制作主谈主(Producers)。
在开导《羊蹄山之魂》的四年中,咱们产出了约15万字对话和5万字文本素材。这其中,有75%是任务专属对话,玩家只会听一次;剩下25%是系统性对话(Systemic dialogue),比如战斗呼喊、商东谈主叫卖、布景村民谈天,不错在多个场景里访佛播放。

这个体量和《对马岛之魂》险些一模通常,因此许多作念法不错径直复用。
布景先容完结,咱们接下来聊一聊管线(Pipelines)。
在讲《羊蹄山之魂》的新管线之前,咱们得先望望《对马岛之魂》的旧管线——自后作念的许多决策,齐是被旧经过逼出来的。
旧管线接收三方沉寂单干的模式(Three-way Split):
谋划、设施和好意思术在Perforce(版块适度软件)里职责,处理代码、任务结构和财富,这是构建履行游戏的地方;
编剧在Google Docs里写脚本。谋划会参照这些文档,先在游戏里搭好占位符对话(Placeholder Dialogue);
制作主谈主则厚爱把Google Docs里的台词,手动录入里面的台词数据库(Line Database)。数据库里每条台词齐有源文本和元数据(Metadata)。制作主谈主再从数据库生成灌音表(Recording Sheets),送去录制。之后制作主谈主会把音频拉回数据库,这时间也可能会处理腹地化。
最后,数据库如期把录好的音频、字幕和文本打上对应的ID,推送到Perforce里——这些带ID的文献,没法径直在游戏里使用。
是以这一步最坑,谋划必须在引擎里,手动把每条台词的ID,挂到对应的触发器上。我估量光这一项,就浮滥了谋划至少600个小时的纯苦力——还没算上修改迭代和系统性对话。


编剧那里也很厄运。咱们主编剧的原话是,嗅觉我方即是"把脚本隔着栅栏扔昔时"。
因为他们在Google Docs里写完文本就交出去了,没方针在游戏里我方测试。想改点东西,哪怕只是疏导两句台词的公法,齐得找谋划赞理操作,这就导致全球看似齐很忙,但效用很差。
更要命的是,编剧永恒不在引擎里职责,不知谈引擎能杀青什么,不成杀青什么——只可祷告我方写的东西能跑起来。
此外,Google Docs、台词数据库、Perforce这三个地方的由三组东谈主小气,数据很容易脱节,来不足同步。
谋划可能在Perforce里删了一句台词,但Google Docs和数据库没更新;编剧可能在文档里加了台词,但没进数据库……最坏的情况是,一些台词仍是在游戏里删了,但其他东谈主不知谈,把这些废台词送去灌音、腹地化后才会发现,最后钱白花了。
况兼咱们的脚本、灌音等要领,也不是一次就能完成的,是以这种数据同步的问题往往会发生。
最后,咱们对这些外部器用的适度力很有限:在Google Docs莫得发言权,台词数据库又是索尼里面的小团队厚爱,他们无法实时反应咱们的定制化需求。
03
如何让编剧"写代码"
《对马岛之魂》作念完的时候,咱们决定透澈改掉这套管线。
决议上很约略:不消台词数据库,让编剧径直在游戏内的杀青文献(Implementation)中职责。
表面上,这能一次性处置之前的通盘问题:数据源统一了;不消手动挂台词了,因为编剧写台词的过程,自己即是在完成邻接;编剧径直战争底层杀青,对引擎的协调也会跟上来;况兼咱们甩掉了外部器用,适度权回到我方手里。

但具体施行前,需要先处置两个问题。
第一个相比约略:如何把原先存在数据库里的元数据存到Perforce里?
咱们作念了一种自界说文本边幅,径直当作文献存进Perforce,再写代码来读写息争析。底下这张图不错看到它粗野长什么样。

第二个问题就大了:如何让不懂代码的编剧,去剪辑游戏的底层杀青文献?
要回应这个问题,先得阐明注解一下咱们游戏的底层架构。
游戏叙事管线的中枢组件叫"对话对象(Conversation Object)"。触发该组件后,系统会自动适度变装的动作,比如头部教授和口型同步,然后逐句播放台词。

上头两张截图诀别是两段对话。第一段唯惟一句台词,第二段有六句。每句台词齐有唯一的ID,图里用红色标出来了。
第一段对话挂在NPC变装Settler_Info_Tsuri身上。第二段里,四句来自兼并个NPC,另外两句来自Hero——这是咱们里濒临主角Atsu的代称。绿色部分则是附带台词源文本的瞩目。
这些对话对象是"触发即弃"(Fire and Forget)的——代码只需要启动对话,系统会自动找到变装、按公法播放、播完自动收尾,不需要迥殊的料理。

再看另一个稍许复杂的例子。

上头的对话波及分支(Branching)。
玩家第一次际遇这个NPC时,他会问:"你擅长骑马吗?我需要找回一双离家出走的马。"
但要是之前仍是对话过,再来找他,台词会变成:"我仍需要匡助,把我的马找回来。这活应该能赚不少钱。"这即是Branch_If :Play_Count 0的道理——判断玩家是不是第一次来。
而玩家的选项径直写进了对话结构中。遴荐Refuse(拆开),跳到背面的收尾台词;遴荐Accept(遴选),则退出对话,触发对应的任务(Mission Rigging)。
此外,对话系统还支抓荒谬敕令(Special Commands)。比如Set Emotion不错改变变装的面部方式、Delay不错在两句台词之间插入停顿……
我说这些,是为了阐明:咱们的对话不单是是一个台词列表,它还能作念分支、遴荐、多样适度行动,需要的话以致不错直战争发淘气脚本(Scripts)。
而在《对马岛之魂》的开导中,这些东西全需要谋划手动创建和剪辑。
了解之后,咱们回到之前的问题——如何让编剧来剪辑这些内容?

昭彰不成让他们径直濒临这堆代码,编剧需要的是径直写稿。是以咱们需要一个前端器用,提供更友好的剪辑界面——最终,咱们用Dear ImGui开导了这个器用,里面叫"Sucker Punch Writing Tool"。

这个器用的截图里有许多内容,但咱们只需要暖热中间的脚本剪辑器部分(Script Editor)。
开赴点,脚本剪辑器会把对话对象文献、数据库文献组合成一个脚本给编剧,编剧看到的不再是一堆/line ID和代码瞩目,而是履行的台词文本。
其次,咱们还将剪辑器界面作念成了脚本边幅(Screenplay Format)。这是影视和游戏行业的设施脚本边幅:变装名在上方,有特定缩进;对话鄙人方,是另一种缩进;中间穿插动作形色——这种边幅对编剧来说相当庄重,同期也不影响游戏蓝本的对话结构。
第三,咱们还挑升师法了业界设施脚本软件Final Draft的操作逻辑。编剧不错用快捷键在变装名、对话、动作形色之间快速切换。这种全键盘逻辑,能让编剧能保抓连气儿的写稿节律,可提现游戏app不消在多样下拉菜单里用鼠标点来点去。

最后,咱们莫得把底层指示完全藏起来。像Delay(停顿)、动画触发器这些元素,编剧在界面上仍然看获得、改得了。

这亦然咱们的设计念念路:器用既要对编剧友好,也要对谋划有用,对话对象里的通盘内容齐呈目下兼并个视图里,分歧任何东谈主荫藏。
04
新的职责流
目下编剧的职责流变成了这么:
谋划搭好任务框架,放上占位符对话。编剧开放器用,径直修改台词,添加动作形色和扮演带领(Direction)。
改完之后,编剧不错在腹地编译一次游戏,走到触发点去履行听一听。
咱们引擎内置了一个叫Robo Voice的功能,莫得灌音的台词会用类似Microsoft Sam的合谚语音(TTS)来播放。听着不太天然,但能帮编剧感受对话节律,比什么声息齐莫得强。
调到安谧,编剧能径直将其提交到Perforce,通盘过程不需要谋划介入,除非要加什么复杂功能。之后交给制作主谈主安排灌音,或者由主编剧、其他共事作念脚本审查(Script Review)。
有时候经过也会反过来——编剧先写好脚本,谋划再过来拆分红对话、邻接任务逻辑。但不论哪个地点,两边之间齐不再需要来去返回反复叮属。
除了线性脚本,这个器用还支抓剪辑网格对话(Gridded Dialogue)和UI文本。
网格对话即是前边提到的系统性对话,比如一群变装走向玩家时的呼叫,因此咱们需要用多量变体,对应不同的景况和变装。这些内容设定好之后,就不错跨场景访佛播放。

UI文本剪辑器则笼罩了游戏里多样类型的文本需求,让不同俗例的编剧齐能在这里干活。
这条管线约莫用了两年部署到位,杀青了咱们想要的大部分功能。况兼通盘名目周期里,咱们一直在给它加东西,因为会束缚发现新的矫正空间。

先说预期之内的收益:谋划再也不消手动挂台词了;全球不消再三个地方手动同步数据了;Google Docs和台词数据库也退役了,编剧和谋划能统一用我方的器用了,想加什么功能我方说了算。
更进攻的是,编剧的职责方式被透澈买通了。
开赴点,他们不错我方在引擎里测试、在腹地迭代、蜕变奏、加停顿、改方式、设分支,不需要事事找谋划代劳。以前以为太缺乏,不好道理启齿央求的小谐和,目下我方开端就行了。
其次,编剧摸清了引擎的技艺界限。他们每天在引擎里职责,能看到谋划是如何邻接任务的,能看到底层是如何杀青的,因此写出来的东西,也更贴合游戏的履行罢休。

你可能会问,那腹地化该如何办?
这是新管线里唯一的例外——腹地化团队还得用旧的台词数据库。但咱们写了脚本,能自动从Perforce把数据同步给他们,至少里面不再有东谈主手动小气台词数据库了。
上线之后咱们发现,这条新管线带来的刚正远超领先的设计。
第一,为制作主谈主提供了诸多便利。
一启动咱们其实不确定制作主谈主会不会想用这个器用。领先的见识是给他们作念个导出到Excel的功能,再加上一些基本的元数据剪辑,应该就够了。但履行用起来之后咱们很快发现,径直在器用里作念功能简略得多。

咱们作念了一个自界说查询界面(Custom Query Interface),制作主谈主不错在里面搜索、筛选、批量修改对话。这比之前导出到Excel再导回来的经过好太多。
制作主谈主也因此被拉进了编剧和谋划兼并个脚本视图里,能看到完好的高下文、分支逻辑和通盘标注,对对话的全体协调更完好。
另外,咱们还为灌音要领作念了自界说导出功能。咱们每次灌音要准备许多版块的材料:演员一份、导演一份、灌音棚多样变装各一份……以前这些全靠手工致理,目下制作主谈主只须设定好查询条目,就能一键导出通盘边幅,不错省却多量访佛职责。

第二,通盘东谈主齐在兼并个职责空间(Shared Workspace)里职责了:
谋划和设施能看到编剧写的动作形色和情感备注,更容易协调剧心意图;
编剧能看到谋划写的底层逻辑和Bug备注;
主编剧启动径直在器用里作念脚本审查(Script Review),径直批注修改,再也不消导成Word文档了;
音频团队也进驻了,径直在里面调参数。

全球分享兼并套文献组织架构(Organization Scheme),彼此应用对方留住的瞩目和标签,造成了一个良性轮回。诚然这需要全球共同小气财富,有时也不免会有摩擦,但这比之前三个团队各自沉寂职责要好太多了。

第三,咱们在器用里加了一个粉色钻石(Pink Diamond)图标,用来显露"这段对话到底有莫得在游戏任务里被触发(Hooked up)"。

需要阐明晰,这跟台词自己有莫得被邻接是两回事,台词的邻接是自动的。粉色钻石只考证有莫得东西触发这段对话。
说真话,这功能是我顺遂加的,有几个东谈主提了需求,我以为有用就作念了。没料想最后成了通盘器用里最受宽饶的功能之一。
对谋划来说,修复一个任务的职责量很大。一个大型任务可能要创建一百多段对话,过程中很容易漏配几段,有了粉色钻石,哪个没亮一眼就看到了——况兼这个东西全球齐能看到,不错彼此提醒。
对编剧来说,莫得粉色钻石,阐明游戏里莫得任何东西在调用它,宽心删。有粉色钻石,那就得找谋划聊聊再说。
有谋划曾告诉我,在作念《对马岛之魂》的时候,名目接近尾声时挑升作念了一次大范围排查,把游戏里通盘没被援用的对话全找出来,一个个连上去;而到了《羊蹄山之魂》,这件事从来没发生过。全球在日常职责中看着粉色钻石,边作念边就补了。
况兼这个东西的技艺杀青约略横蛮,但十分灵验:它不消编译游戏,即是开放器用时,全盘扫描通盘文本文献,查找有莫得包含CONV_起首的字符串。
这意味着它会有误报(False Positives)。可能某个文献里援用了一段对话,但阿谁文献压根没构建到游戏里,这种误报亦然不免的,你要搜检也压根不可能,是以全球也能协调;
况兼它不会有漏报(False Negatives)。莫得粉色钻石即是竣工没被援用,不错安全删除。

第四,咱们还作念了一个小功能,让UI团队在游戏运行时,纪录每个文本框的极限长度。
器用读取这些数据后,会在编剧写UI文本时给出视觉教导(胶囊图标)。灰色代表字数安全,红色代表超长,翻译成其他话语可能会爆框——这既帮了编剧适度篇幅,也反过来帮UI团队排查了哪些文本框的罢休设得过严。


天然,我也有必要说说这个过程中踩过的坑。
开赴点,复杂的逻辑会严重影响脚本的可读性。 碰到复杂的网状分支,比如商东谈主NPC的对话树,脚本界面里全是逻辑跳转,一句台词齐看不见(如下图),这对配音演员和腹地化东谈主员来说确切是厄运。


要是时刻允许,咱们会把对话单独导出成Word文档,再行梳理分支结构简略演员协调变装。但履行情况是赶工居多,演员往往连基本的台词分支齐来不足捋明晰。
其次,Perforce合并箝制(Merge Conflicts)。
目下通盘东谈主齐在Perforce里改兼并套文献,箝制是家常便饭。有半年时刻险些通盘东谈主齐在密集修改内容,我天天帮全球处置箝制,相当厄运。

05
结语
回想一下此次管线重构的前后对比。
以前在《对马岛之魂》里,兼并份脚本洒落在三个地方,咱们必须手动保抓同步,谋划必须手动挂每一条台词。多量时刻耗在搬运和对接上,编剧以为我方的修改老是不成快速落地,这通盘经过一团乱。
目下,通盘东谈主在Perforce的兼并套文献上职责。咱们有一个我方开导的器用,简化了每个东谈主的职责,也让咱们能快速地往职责流里增加样功能。
粉色钻石、UI字数教导这些需求,齐是因为团队我方掌控器用,发现痛点就能迅速作念——这些功能的代码有时漂亮,但能处置履行问题。
最进攻的是,编剧的技艺被开释了。他们不错我方作念编剧润色,不需要把活交给谋划,不错我方进游戏调行动、试驱散。这是整件事里最有价值的变化。
编剧也因此,把这个器用列为了《羊蹄山之魂》开导过程中最佳用的器用之一。

最后想说一句,但愿全球齐能改善我方的管线,别再从Google Docs里复制粘贴千千万万行台词了。
游戏葡萄招聘商务司理,
点击「阅读原文」可了解细目
推选阅读

极限汉化丝之歌 | 对话鹰角主策 | AI零代码开导
起底游戏附进 | 白银之城 | 去职字节创业
对话最后地 | 对话前沐瞳CEO | 对话鸣潮总监
游戏行业竹素推选:
点击下方柬帖,暖热公众号
(星标可第一时刻收到推送和完好封面)可提现游戏平台
澳门新浦京游戏下载官网