对话分支不只是几行文本
任务对话经常会出现选择:接受或拒绝、询问不同情报、选择奖励、决定剧情走向。客户端如果只把它当成文本和按钮,会在条件、回滚、弱网、本地化和剧情状态上出问题。玩家点了一个选项后,NPC 表情、任务状态、奖励和后续对白都可能变化。
对话分支需要一套小型状态机。它要知道当前节点、可选项、显示条件、提交结果、已读状态、跳转目标和退出策略。尤其是重要选择,客户端不能只在本地切到下一句,必须等服务端确认。
flowchart TD
A[对话入口] --> B[加载对话节点]
B --> C[条件过滤选项]
C --> D[显示文本与选项]
D --> E{玩家选择}
E --> F[本地预览反馈]
F --> G[提交选择]
G --> H{服务端确认}
H -->|成功| I[进入下一节点/更新任务]
H -->|失败| J[恢复节点并提示原因]
I --> K[结束或继续]
条件过滤要能解释
有些选项只有特定等级、职业、道具、好感度或前置任务才显示。隐藏还是置灰,需要产品决定。隐藏能减少干扰,置灰能告诉玩家目标。客户端应支持两种策略,并显示不可选原因。
条件判断最好由服务端或任务配置统一给出结果。客户端可以做本地预览,但不能因为本地条件错了让玩家看到非法选项。重要选择提交后仍由服务端校验。
选项顺序也要稳定。本地化后文本长短变化,不应改变选项顺序。选项 ID 才是提交依据,不是按钮索引。否则翻译调整后可能提交错选择。
选择提交要区分轻重
普通询问类选项可以本地切换节点,不必每次请求服务端;影响任务状态、消耗道具、选择奖励或改变剧情分支的选项必须提交服务端。配置里应标记选项类型和提交策略。
提交中的 UI 要锁住相关按钮,防止玩家连点两个选项。失败时恢复原节点并提示原因,比如条件变化、任务已完成、道具不足、网络失败。不要让对话卡在半句文本。
如果选择会给奖励,应该走统一奖励展示或任务奖励流程。对话系统只负责触发,不直接改背包。
剧情表现要和节点同步
对话不仅是文字,还可能有 NPC 表情、镜头、角色动作、音效、背景音乐。节点切换时,这些表现要跟随。客户端可以把每个节点的表现指令放在配置里:镜头 ID、表情、动作、语音、背景。
语音和文本要同步。玩家快速点击跳过时,语音要停止或淡出;自动播放时,语音结束可以推进下一句。分支选项出现时,不应继续播放上一句长语音造成混乱。
如果资源缺失,比如语音没下载,对话仍应可读。语音是增强,不应阻塞任务主线。剧情关键演出则可提示下载或使用简化演出。
本地化布局要提前考虑
对话选项在中文里很短,翻译成德语或俄语可能变很长。按钮要支持多行,滚动区域要稳定,不能把确认按钮挤出屏幕。选项编号或图标可以帮助玩家识别。
文本里可能有玩家名、道具名、颜色标签和变量。变量替换后长度不可预测。客户端应在排版前完成替换,并支持富文本安全解析。不要让运营在文本里写任意标签。
从右到左语言如果支持,选项布局和标点也要考虑。即使当前只做中文,也应避免把文本宽度和按钮位置写死。
退出和回滚
玩家对话到一半关闭窗口,任务状态如何?普通对话可以下次从入口开始,重要选择提交后应从服务端状态继续。客户端本地保存当前节点只用于体验,不应覆盖服务端任务进度。
网络断开时,如果选择请求结果未知,重连后应拉取任务状态。若服务端已接受选择,继续后续节点;若未接受,回到选择节点。不要让玩家在本地走到后续剧情,服务端却仍停在前面。
小结
任务对话分支是文本、条件、剧情和服务端状态的交汇点。客户端用节点状态机、选项 ID、提交策略、表现指令和回滚恢复,把对话做成可追踪流程,玩家的每个选择才会显得自然且可靠。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
对话调试工具应显示当前节点 ID、可见选项、不可见原因、选项提交策略、最近一次服务端确认和下一节点。剧情问题通常不是文本错,而是节点状态和任务状态没有对齐。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。