Jump to content
模组网
icedream

【Creation Kit 学习指南 24】场景

Recommended Posts

概述
本章将讲解Creation Kit的新场景功能。场景相对于先前的Bethesda工具来说是一个新的主要特征,它能对角色多重动作的协调性起到高度控制。这对于对话场景、杂物放置及设置比单个包复杂的角色动作来说很有用。

你将学到:

  • 如何创建一个新场景。
  • 如何对场景添加对话、计时器及动作
  • 如何在场景中运行脚本

场景介绍
迄今为止我们已学到如何通过包系统制作角色的简单动作,以及制作对玩家和通常状态下的对话系统。这些在我们面临复杂行为之前已经足够了。如果我们希望他和Gilfre(住在水合磨坊的那位)交流,然后去chop森林一会儿--这将需要通过一个复杂的脚本去解决配置、对话、计时、条件等等。
或者,我们可以简单的编写场景中所有期望的动作。
打开GSQ01任务并进入场景标签,如下所示:
gallery_1_72_21551.png
这和进入窗口左侧的场景列表中的对话视窗标签的方法类似,除了实际内容在大区域的右方。
右击左区域并选择“新建”创建一个新场景,命名为"GSQ01BenduGilfreScene"。确信点击它使其高亮。
布置场景
右击并选择“新建角色”。将打开任务中已被创建的角色别名列表。双击Bendu对他添加一个动作场景。尽管在此任务中我们不需要Gilfre的别名,但是你依旧要记住对特殊角色创建别名的方法(别名标签,新建引用别名,命名"Gilfre",独有角色,下拉菜单中选择Gilfre)
一旦你创建新别名,返回场景标签,选择场景,然后右击选择新建角色并在场景中置入Gilfre。现在场景应如下所示:
gallery_1_72_31877.png
我们现在要告诉游戏在此场景中出场的角色,但是现在并不让他们活动。
段落
在Creation Kit中,一个场景将被分解为若干个段落,也就是将活动分为几个不相干的部分从而使游戏可以运行它们。右击场景区域并选择“在末尾新建段落”。(我们将此段落添加至场景“末尾”,但是由于没有其它段落,因此它是第一个创建的段落。有时目录选项含有一个很可笑的名称)
首先我们要做的是让Bendu和Gilfre互相靠近。这里有一大堆选择,但是我们让他们在水合磨坊的地图标记处碰面。我们通过使用包让他们同路移动。
动作包
右击场景中标记"Bendu"的方形标签,并从背景目录中选择"新建动作 -> 包"。将会打开场景动作包窗口。
gallery_1_72_55369.png
这个列表显示大多数我们可以布置的此别名角色的其它包堆栈。因此如果你学习过包的教程,因此我们可以从基础包上方找到别名包进而发现场景包。因为游戏自上而下查找包,因此场景包总是有优先权(前提是它们有效)
右击包列表并选择"新建"从而创建一个新的包。我们将对这个场景创建一个新的完整动作;然而这看起来做的过分了,但是由于场景的特殊性,因此很难使用常规包完成。在任何情况下,将此包命名为"GSQ01BenduGilfreHitMarks"。默认临时包是“旅行”--保持不变并选择水合磨坊地图标记为目标。设置合理的半径例如250
gallery_1_72_702776.png
gallery_1_72_32524.png
点击包窗口的确定,然后再次在场景动作包窗口点击确定从而返回合适的场景。你可以在此场景中看见Bendu下方的包。
右击Gilfre对她添加一个动作包。尽管此时并没有通过右击选择“新建”创建一个包,而是重新使用通过在下拉目录中选择“添加”创建一个包。这会在游戏中打开一个包列表。使用顶部的过滤器迅速找到"GSQ01BenduGilfreHitMarks"并在场景中双击添加它。

注意我们并没有在此包中插入任何条件。因为它只在此场景中使用且不会成为正常包堆栈估值的一部分,这样可以更安全。然而游戏会依赖设计者的设计且不会对错误有任何预防措施,因此要谨慎设定包的条件!
当场景开始时,它将从首段开始,在别名栈的上方布置这些包,并强制重新评估这些包(在此情况下,选择我们刚刚制作的包)。此段将在它的所有动作完成后完成,在这种情况下旅行包意味着角色已经到达目标。
再次强调:场景在段落的所有动作完成前不会运行。这里有一些类型的包(如下所示)从不会完成,因此当心被这些包欺骗!
当他们碰面后我们不希望场景就此终结,因此添加更多的内容。
第二段
再次右击场景区域,并再次选择“在末尾处添加段落”添加一个新的空段落。右击创建一个新的动作,但是此时要选择“对话”而非“包”。
对话动作
gallery_1_72_7842.png
底部的巨大列表表示一个消息栈,就如同对一个"正常"对话编写一个话题一样。双击这里创建第一句为"Oh, um. Hello."
(假设Bendu看到了Gilfre,但是Gilfre没有发觉。那么将会很戏剧化。)
由于是对场景编写对话,因此我们不必对其设定条件,由于游戏可以智能的通过赋予的别名找出必要声音类型,并且从不考虑其它对话选项。因此一旦我们编写完对话,只需点击“确定”就可以了。
添加一个新段落,并对Gilfre创建一个对话动作。她会说"Get back to work, you."(可怜的Bendu被无视了),现在你的场景那个应如下所示:
gallery_1_72_48904.png
(你的场景动作数量也许有所不同,不必为此担心。)
继续添加内容
如果你仔细观察,你会注意到一个问题--我们未对新增段落添加任何包,因此当我们来到这里,所有角色将退回他们的基础包。这回使场景看起来可笑。
右击第2段Bendu的部分并对其添加一个包动作。由于我们只让他在此区域闲逛,因此可以再次使用相同的包。再次选择GSQ01BenduGilfreHitMarks,对Gilfre的第2段添加相同的包。
因为我们希望他们在此场景中活动,而非对第3段添加新的动作,我们可以对此段添加一些动作。如果将鼠标指针移至区域右边缘,那么指针将变为缩放箭头,从而可以改变区域。将它们延伸至第3段,场景应如下所示:
gallery_1_72_64460.png
记住在动作结束之前段落不会终止。这只应用于在此段落中完成的动作,所以在Bendu的对话完成后第2段将完成
会面
因为我们不知道角色在对话时会选择什么选项,所以我们不能确定他们如何会面。幸运的是,我们可以简单地打开对话动作(双击动作名称,并非对话),然后设定"路径"区域的值,在这种情况下我们对Bendu设定"Gilfre"的路径目标,他们都必须面对目标。
gallery_1_72_117.png
我们也可以通过对旅行包设定特殊X标记目标来使他们相遇。

计时器行为
你也许会认为Bendu被孤立了,因此让他在Gilfre返回正常包后坚持一会儿。在末尾处至少添加一段,并在此时只针对Bendu的包行为。
右击第4段的Bendu区域,并添加一个新行为-> 计时器。这不完全如你所想--一个用来测量场景的临时间隔。在这种情况下,它将为Bendu在Gilfre离开后的等待设定一个时间。设定为4秒(游戏时间的精确度为微秒级,因此应写为4.000000秒),这个时间已经足够了。
最后的场景应如下所示:
gallery_1_72_50965.png
运行场景
我们也可以通过脚本运行场景(通过设定属性并调用Start()),或者在场景标签下选择"从任务起始处开始"选项。
新增功能
我们可以点击标签上方的"数据编辑"或在场景起始处添加脚本。你可以双击段落标题并在某个段落开始和结尾处放置脚本。如你所想,这会打开很多复杂的行为和功能。实际上,天际中任务比场景及适当段落脚本都要小。
最后,“所有行为必须在段落结束前完成”的规则将被打破。因为它只在默认状态下有用。但是如果在场景窗口中,你可以看见对特定段落结束处设定的条件。
警告
一个角色只能在一个时间存在于一个场景中,如果你要在一个场景中使用一个在另一场景中运行的角色,那么此场景将会暂停直到调用该角色的另一场景完成。如果同时调用一个角色将会产生冲突及奇怪行为,因此你应该谨慎使用场景。如果合理利用,场景将会发挥出强大的功能。
课后思考
你能让Bendu会见Gilfre时根据当时时间分别说"Good morning," "Good afternoon,"或"Good evening,"吗?
注意
如果使用TESEdit来复制场景记录时,注意不要删除复件中已存在的对话段落,因为他们表示的是原版信息。最好是移除链接的表单但是不移除段落然后用新的操作对话信息创建新的段落(除非旧的对话需要重复)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...