icedream 210 Report post Posted March 9, 2015 概述 本章将探索对话系统的更多功能,并设定包括战斗状态在内的各种情况下的对话。 你将学到: 什么是特殊话题 如何重置计时器 如何制作战斗任务线 如何创建模块话题 特殊话题 到目前为止,我们已经制作完成玩家和角色之间的普通对话。这显然很重要,但是要想使游戏更为现实,我们必须编写日常对话、战斗对话、回应对话等等。(你也许还想写膝盖中箭式的对话,那么接下来将讲到) 如果你刚学完开放结局,那么你会有一定的基础。和从对话目录选择一个选项不同,特殊话题由程序在事件发生时运行。如果你观察任务窗口的杂项标签(创建问候和告别语的地方),然后你会看见所有的常规事件。 一个话题类型的所有对话都集中在一起。当游戏确定一个角色的对话线时,例如Hello,在定义每个Hello话题时都要先考虑每一个消息。并按照优先级将每一个话题堆栈粘贴排序(优先级为70的将先于优先级为50的被选择)。一旦巨栈被创建,它将从上开始直到选择满足所有条件的消息并启动。 如果没有发现合适的消息,那么角色将不会说话。 如果你是一个程序员,你也许对这种无效率的方法不满意。事实上我们可以用一种复杂的方法提高效率,但是在现阶段,这些已经足够了。 重置计时器及单时间线 有一些简单的方法用以创建单线对话。 在消息窗口中,有一系列选项框、下拉菜单、文本区域。只说一次 顾名思义,选择这个选项意味着此对话只说一次,说完之后不再说。当然你要谨慎,不要将所有的剧情关键对话都设定只说一次,因为玩家有可能会忽略它。这个选项最好用在角色的介绍上。时间间隔 一旦说完此对话,它将在一定时间内无效。这将限制重复次数,但是本质上将增加编写的对话次数。随机 试想一下一个特定角色的hello堆栈--我们不希望对话按照顺序不停的重复,因为这样会使他们看起来机械化。因此我们不能用计时器控制。相反,我们可以使之随机化,从而使对话不具有规律。 当然,如果这些问候语针对特定的任务阶段,我们又不想让对话耗尽。因此我们可以将栈底的对话标记为“随机结束”,从而用详细的选择控制消息选择系统。 如果依旧困惑,请看以下案例。使用方法 打开任务GSQ01并点击杂项标签。打开先前创建的GSQ01Hellos话题。你会注意到当任务完成后Bendu只说"I can't thank you enough for helping me"。这显得不灵活。因此我们使对话多样化。 首先,打开消息"I can't thank you..."并选择随机选项,然后将重置时间设为0.5小时。关闭它并右击选择“复制”从而复制这句话。至少重复2次,产生4行对话。如下编辑新的3行: "I can only imagine how thrilling the fight with that thief was!" "A beautiful piece, isn't it? I'm thrilled to have it back." "Oh, something else?" 现在打开最后一行并标记“随机结束”。注意有意设定其为不必要且乏味的--这告诉玩家此NPC不会在问候语中说其它话。因此他会随机说前三行话,当他感到疲倦时,他将说最后一行话直到计时器重置。战斗对话 "Like the bite of a flea!" 这是任务窗口中的“战斗”标签,是事件话题联系战斗状态的地方。你可以像建立问候语一样建立它,然后游戏将使用相同的逻辑、时间重置器、堆栈、任务优先权等参量输出它。 Creation Kit系统运行它的方式看起来复杂且不直接,但是当你理解它们时,会明白这是为了适应一系列环境(条件及消息堆栈)。其它对话话题 默认状态下,当我们在对话视窗中设定一个新话题时,它将设定一个“顶级”话题。这意味着它指定的话题是有效的,当玩家第一次点击它们时它将在角色对话框中以选项的形式出现。 在这种情况下,橙色话题边缘表示它为顶级话题。双击边缘打开对话分支窗口。出现2个选项: 正常: 这个分支将不会出示话题列表除非它明确地链接其它分支。对于有组织的目标或由ForceGreet包触发的分支非常有用。 屏蔽: 当启动一个被屏蔽的限制分支时,只有一个角色可以说的事情。起始话题成为他们的问候语,顶级选择列表被起始话题链接的东西取代。 屏蔽话题对于含有角色重要对话的剧情很有用,我们不想让玩家在听到此对话之前通过普通对话话题。(因此请确信通过改变分支底部的选项来使起始话题无效!) 屏蔽分支在编辑器中是浅绿色。 Share this post Link to post Share on other sites