如何在不限制玩家好奇心的前提下让自由提问式游戏场景保持在正轨上
对于正在构建一个允许玩家向 NPC 提出任何问题的场景的独立叙事游戏设计师而言,将提问与故事推进分开处理能够保持故事的连贯性。让玩家自由组织语言提问,但要提前决定世界知晓什么、该 NPC 知晓什么,以及该场景明确允许改变哪些具体游戏状态。然后,将各式各样的问题与一小组预先编写的产出联系起来:基于既定事实作答、推迟回答 NPC 无法回答的问题,或者将对话引回已知路线。玩家可以掌控对话走向,而不会意外编造出线索或触发计划之外的情节转折。
从场景的事实与状态入手
设想一个发生在灯塔的宁静虚构场景。守塔人玛拉(Mara)正在等待一名带着黄铜钥匙的信使。该场景的目的是让玩家了解灯塔为何熄灭,并决定是否帮助玛拉向港口发出信号。这是一个设计示例,而非来自已上市游戏的报告。
在编写对话之前,制作一份紧凑的场景表,其中包含三个单独的列表:
**世界事实:** 灯熄灭是因为其透镜被拆下送去维修了。钥匙在信使身上。港口正在等待信号。
**玛拉的知识:** 她知道透镜送修了,且信使原定在日落前到达。她不知道信使现在何处,也不知道玩家为何而来。
**允许的状态变更:** `lens_explained` 可变为 true;`player_offered_help` 可变为 true;且仅在玩家主动提供帮助并得到玛拉同意后,`signal_route_open` 才能变为 true。任何提问本身都不能将信号设置为已发送、找到钥匙或改变信使的位置。
这种区分至关重要,因为一个听起来合理的回答可能会悄悄变成新的世界事实。如果玛拉随口说在北桥附近见过信使,玩家很可能会将其视为线索。除非北桥本身就是预设场景的一部分,否则该回答便凭空创造了内容,并可能衍生出新的任务义务。场景表为编剧和实现人员提供了一个关于什么可以说、什么可以发生的共享参考基准。
允许提问形式多变,同时保持产出边界可控
自然语言提供了表达同一含义的多种方式。玩家可能会问“为什么灯熄了?”、“信标怎么了?”或“你们还能引导船只进港吗?”。这些不同的措辞都可以导向既定的透镜解释。但并非每个问题都需要直接回答。根据问题与场景事实和目的之间的关系对它们进行分类。
脱离脚本的问题:“谁偷了灯塔透镜?” —— 分类:**回答** —— 示例回复与效果:“没人偷。它拿去修了。” 设置 `lens_explained = true`;不要指认任何嫌疑人。
脱离脚本的问题:“信使现在在哪里?” —— 分类:**推迟** —— 示例回复与效果:“我不知道。他们本该在日落前到的。” 无状态变更;NPC 不会仅仅因为玩家提问就凭空获知信息。
脱离脚本的问题:“我们能用这盏灯给港口发信号吗?” —— 分类:**回归已知路线** —— 示例回复与效果:玛拉说明透镜仍在外送修,然后提供既定选择:通过其他方式帮助向港口发送信号。仅在玩家接受且玛拉同意时才开启该路线。
这些标签描述的是设计产出,而非死板的回复模板。回答可以在给出已知事实之前确认玩家的措辞。推迟回答可以提供一个有用的下一步建议,例如查看信使是否到达。回归已知路线意味着将问题重新连接到场景的既定选择上;它不需要终止对话或重复相同的台词。关键在于回复的措辞可以灵活变通,而其事实主张和状态效果始终保持明确。
在组织台词之前先确定意图和状态
对于每一个接收到的提问,首先读取已提交的场景状态。判断它是在询问既定事实、NPC 无法知晓的事实,还是请求采取某种被允许的行动。一个问题可能涉及多个类别;关于灯的回答与提供帮助的提议可以是各自独立的结果。接着选择一条回复路径,并在该路径内组织台词。生成的措辞只是决定的表现形式,而非决策者本身。
当玩家询问未来事件时,这种顺序尤为关键。“信使到了吗?”在信使已经到达时与在场景仍记录信使失踪时有着截然不同的答案。无论自信的语气还是玩家的假设,都不应改变这一状态。如果所需的状态不可用,该场景在开发阶段应显式报错,并避免给出权威性声明。切勿为了让对话听起来完整而默默假设信使已到达,或凭空捏造在桥上的目击记录。
保持已接受状态效果的精简与明确。例如,提供帮助可以请求触发已知的 `player_offered_help` 状态转换。游戏可以先验证玩家做出了该选择且玛拉接受了,随后再更改 `signal_route_open`。仅仅提到“帮助”一词的提问不应被算作提供帮助。在原型中,可以将回复与提交的状态转换并排记录以供审查。
保护场景免受意外过早揭示的影响
玩家可能会在尚未发现基础信息之前就直接询问最终答案。决定玛拉在当前故事节点可以分享哪些信息。一句如实的推迟回答,例如“我还没见过信使”,既能保留角色的认知边界,又能维持玩家继续探索的空间。它不应假装已找到线索,也不应仅仅为了拖延场景而隐瞒早已确立的事实。
在育碧的 [NEO NPC 原型叙述](https://news.ubisoft.com/en-us/article/5qXdxhshJBXoanFZApdG3L/how-ubisofts-new-generative-ai-prototype-changes-the-narrative-for-npcs)中,该工作室描述了围绕玩家自发输入而由编剧设定的角色背景和情境约束。这是来自实验性原型的第一方叙述,而非证明某种特定边界设计在上市游戏中必定成功的断言。对于本场景而言,其有益的经验是在要求模型即兴发挥台词之前,先编写好角色的知识和职责定位。
[Jamin Smith 关于《Acolyte》的叙述](https://www.gamedeveloper.com/design/deep-dive-designing-for-spontaneity-and-non-linearity-in-alternate-reality-games-with-i-acolyte-i-)描述了自然语言提问的优势,以及熟练玩家过早发现信息时出现的节奏问题。这是一位设计师针对单款游戏的思考。以灯塔为例,一个需要复核的问题是:询问信使是否会在游戏尚未确立后续情节之前将其揭示出来。如果是,应修改该状态下允许的事实集,而不仅是修改回答的措辞。
让脱靶回归变得有用,而非千篇一律
未知的问题不应总是触发同一句“我无法回答”。玛拉可以确认问题中合理的部分,说明限制,并指出一个既定的选择。如果被问到信使去了哪里,她可以解释自己最后知道的情况,并提议去检查港口信号。如果被问到灯是否能修好,她可以解释透镜遗失的情况并说明已知的替代方案。这样回答既能留在场景设定的范围内,又能切实响应玩家的实际兴趣。
引回正轨应当是通往玩家可执行行动的路径,而非强求其使用确切的词句。通过多种自然的提问方式以及可见的非对话交互来提供相同的预设行动。这让停止对话的玩家依然能够推进进度,并让设计师能够检验自由提问究竟是丰富了角色塑造,还是变成了隐晦的密码谜题。可选的润色细节可以大相径庭;但必需的线索在游戏世界中应有一个稳定、可检视的归宿。
对照既定故事测试自由提问
给测试人员提供该场景和一个简单的目标:搞清灯为何熄灭并决定是否提供帮助。不要告诉他们该问什么问题。观察他们将哪些陈述视作线索、是否有任何回答改变了他们的下一步行动,以及他们是否能在不复述特定句子的前提下达成预期选择。之后,将对话内容与场景表及实际的状态变更进行比对。
增加一轮负面测试,使用容易诱发胡乱编造的问题:“信使过了哪座桥?”、“谁偷了透镜?”以及“我已经发送信号了吗?”。在初始状态下,合格的回复不应声称在桥上有目击记录、发生了盗窃或已完成信号发送。它可以回答已知的送修事实、承认信使位置未知,或引导玩家走向受认可的信号选择。检查日志中的文本和存储的标志位:在玩家提供帮助被接受之前,`signal_route_open` 应保持 false,而 `signal_sent` 必须在独立的预设行动发生之前一直保持 false。
如果生成的台词创造了毫无根据的线索,请排查是场景表遗漏了事实、NPC 接收到的上下文过于宽泛,还是回复忽略了明确的限制。如果玩家可以自由提问却找不到下一个有意义的行动,请改进通往预设选择的回归路径。一个连贯的自由提问场景,应当是在玩家措辞千变万化的同时,世界事实、角色认知和实际后果依然清晰可辨。
