NWN2 toolset说明手册
引言无冬之夜2(NWN2)自带的编辑器功能十分强大,借助它你可以编写自己的故事模组。游戏开发小组就是使用这款工具制作了《无冬之夜2》的官方任务的。这份简要的帮助文件将告诉您如何使用开发工具中的基本功能。要想能得心应手的使用编辑器,你可能需要大量的实验和实践,你也可以访问www.atari.com/nwn2.来加入我们的模组开发社团。
希望您在编辑器的使用中同样体会到无尽的乐趣,我们十分感谢您为此付出的精力和时间。我们也期待着能玩上您亲手制作的故事模组。
您真诚的 NWN2开发小组
都是有哪些新功能?
如果您以前对Aurora引擎和
《无冬之夜1》的开发工具有所了解,那么您将会在此款工具中发现许多相似之处。我们现在使用的这款开发工具是经过重新设计的,为的是加入新的功能和技术。新加入的功能大体包括:世界构建
地形绘制.
您可以自行构建地形,并为之赋予贴图、水流,以及生动的草丛。有多种尺寸的画笔可供选择,以用来进行初步的描绘和进一步的细致刻画。
树木.
您可以十分方便的安置具有动画效果的树木.
天气控制. 您可以自行设定天空的颜色,云朵的密度和漂移速度。
可控的日夜交替.
您可以自行设定多种天气和日照效果,随着剧情时间的推移,游戏会在它们之间自动轮换。例如,您可以在破晓时分设定光雾,并让它们在日出时消散。
特效编辑.
游戏中有丰富的特效编辑选项,已用来表现NWN2 中的各种魔法效果。
自定义护甲.
有超过百种以上的胫甲、护腕、或是其它盔甲可供选择;您可以自定义出外观和属性独一无二的盔甲。所有的盔甲都可以进行自定义的着色。
物品放缩.
您可以轻松的放缩大部分物品或是生物模型,这允许您根据个人喜好制作巨大的怪物酋长,或是小巧的蜘蛛幼崽。
强化的镜头控制.新的镜头组件可以让您制作出更丰富的动画剪辑。
世界脚本.
NWN2 的工具组件有丰富的世界脚本工具,用来制作自己的故事模块。
实用工具
可自定义的工作界面.
各种工具条和窗口都可以进行位置和大小的自定义设计。
改进的对话编辑.
在脚本中您可以通过设定参数来指定多种可选的动作脚本设定。“问题节点(main question node)”可用来轻松指定常见的对话事件。
地图烘焙.
这是一个为您的地图创建走路网格的半自动化的进程。该功能使得您不需要亲自直接与走路网格打交道,就可以利用可放置物来限制玩家的行动。
多线任务结构.
您可以构建可以同时打开的多个地区、对话及脚本,以实现更快的内容创建。
战役(剧情)系统.
多个模组之间可以共享资源和任务(journal)数据。
灵活分类.
无冬之夜2没有item palettes它允许你根据自己的任何喜好组织自己的蓝本和实例。
插件.
您可以为这款工具开发自定义的插件,就像Photoshop或3DS Max那样。
简览
使用这款工具,只需要打开 NWN2ToolsetLauncher.exe执行文件,片刻之后,您将会看到下列界面:
界面中的所有子窗口都可以最小化、调整大小和位置,全凭个人喜好而定。主要的工具窗包括下列所述:
1.菜单栏.
2.工具栏.
3.地区列表/对话列表/脚本列表.通过点选下拉标签来选择要观看的列表种类。双击某个地区/对话/脚本名称来打开它们。
4.地区内容.列举所选地区中的所有构成内容,如果有的话。组成内容一般包括道具、触发器、物品、以及其它。
5.地区浏览窗.直观的现实地区的样貌。在该窗口中,您可以调整地形、材质,物品等等,不一而足。
6.属性面板. 显示所选对象的属性。属性面板包括很多标签(基本标签,技能标签等等)。如果您在地区浏览窗(5)、地区内容(4)、或者蓝本列表(8)中选择了某个对象,那么该对象的属性将在这里显示出来。
7.蓝本类别.任何可以放置在地区中的对象,都在蓝本类别区具有自己的模版。我们可以看到它与地区内容区(4)具有相同的选项分布。蓝本,包括所有可用的世界内容以及您自定义创建的对象。
附言: 如果您点选了一个蓝本对象,那么该对象的属性会自动显示在属性面板中。您也可以通过在蓝本对象上点击右键以打开新窗口查看属性,但这个调用过程可能会稍慢。而且通过这种方法,您最多只能同时打开三个属性窗口。
8.详细蓝本列表.该区域与地区内容区的动能相似,但它包含了所有可供使用的对象,而不仅限于已经放置在地区中的对象。比如说,你可以在该区域中选择任何一个可用的格布林,但是在地区内容区中,您只能选择已经放置在地图中的某个格布林。
9.通过点选9号区的三个标签可以在蓝本列表、地形(外在) 和 列表 (内在) 之间切换。
如果想得到更详细的说明,打开我们所提供的模块样本(Sample Module),通过对该模块的反工程研究,您可以对该工具的功能作更深入的了解。想体验故事样本的话,运行 NWN2, 选择新游戏“New Game,” 然后选择新故事“New Module,” 最后选择0100_UninvitedGuests。如果想在用编辑工具查看该样本的话,打开编辑器,File à Open,然后选择0100_UninvitedGuests.mod
一些简单提示:·如果您遇到了困难,可以到 www.atari.com/nwn2上的社区看一看。
·在地区浏览窗中,可以按住鼠标滚轮移动鼠标来旋转视角,或者错动滚轮来使视角前进或后退。
·为了快速建立对象 (生物, 物品, 可放置对象等等 – 蓝本区中具有的任何东西) ,只需要拷贝一个现有的蓝本对象,并且修改相关属性即可。
·在世界浏览窗中使用复制(Ctrl-C)和粘贴(Ctrl-V)来快速的进行物品的复制。
·查看View->Options和插件菜单(Plugins)来修改设置,并使用有用的辅助工具。
Module的制作
接下来要讲的是制作一个模组以及所包含的地区。一个模组通常包括的内容有: 地区、对话、和脚本。
在学习了本章节之后,您将会熟悉模组的基本构成,以及建立新模组、安插起始地点、和在游戏中测试它们的方法。
Module是什么?
Module (扩展名为.mod) 包括了一个完整的《无冬之夜2》故事剧情的所有要素。只包括一个地区的模组是最基本的可执行剧情;典型的故事剧情还可包括有多个地区和事件(event)。一个史诗级的大型冒险剧情(例如《无冬之夜2》的官方游戏剧情)则包含了多个模组。
想要创建一个模组,只需要打开编辑器,首次显示的界面应该如下图所示。一个新的空模组正在准备建立。
载入一个Module
如果您想继续加工一个已经存在的模组,只需要在下拉菜单中点选: File->Open
接下来会弹出一个浏览窗口,您可以在您的计算机中寻找要打开的模组文件。默认的模组文件夹在您的《无冬之夜2》的安装路径中。可用的模组文件的扩展名是.mod
地区、对白、和脚本
一个模组的三个基本组成部分就是他们:地区、对白、和脚本。
地区
是模组在游戏中运行的层面。一个可执行的模组需要至少一个地区,您也可以将多个地区整合到一个模组中。地区包括具有路径属性的地域,以及加载在上面的生物、可放置对象 (通常都是固定的对象), 以及其他游戏对象。一个地区的性质可以是酒馆、山洞、葛布林的森林、农场、或者您所想像的任何地域。
重要的一点是:一个地区中的所有数据是一次性加载的(Loading…),在移动到另一个地区的时候需要重新加载数据。如果某个区域的内容过于庞大,那么加载的时间可能十分漫长,游戏过程也可能不太流畅。另一方面,如果地区太小太多,又会导致频繁的切入加载界面(Loading…)。不过在您第一次尝试制作区域的时候,我们建议您制作较小的区域。
地区可以是外部型(exterior)的,也可以是内部型(interior)的,同时具有两个属性的地区是不存在的。但是您可以制造一个外部区域(例如一个城镇),里面包括很多扇门(door),这些门可以通向多个内部区域(室内)。
对白
是使用对话编辑器所制作的交互性对象。他们包含了发言、争论、注视、以及冒险过程中其他对话事件的文本和选项。您可以在任何时机插入对话事件,只要你想要玩家与其他角色发生会话。从实质上讲,对话是一种分支选择,一个对话并不一定非得表现两个人面对面讲话;如果你想要游戏角色使用一个带有三个按钮的控制器的话,对话就是十分有效的表现方式。
对话的功能十分强大,我们在以后同样要用到它。现在我们只需要明确,对话是被存储在对应模组里的,您在该模组中的任何地区都可以调用它们。
脚本
是由代码组成的文本(本游戏是基于C语言开发编写的) ,他们用来表现超出游戏常规支持范围的特效和事件。例如:山洞中的巨人知道如何攻击靠近的冒险者,您不需要任何具体的指挥和指示;如果您想要它们一见到矮人就逃跑,或者在它们被杀时出现援军,那么就要借助脚本工具了。
一个出色的设计师可以利用脚本工具实现任何事件、行为、和场景。然而,脚本语言毕竟是比较专业的高级技能,我们现在只需要了解:自定义的脚本是作为模组的一部分进行存储的,您在该模组的任何区域中都可以调用它们。
制作您的第一个地区
一个模组要想运转,必须至少具有一个地区(Area)。从下拉菜单中选择File->New->Area ,建立一个新地区。
当您在下拉菜单中点选建立新区域之后,一个区域制定向导界面就会弹出来。输入您喜欢的地区名作为该地区的标签名 (在上述例子中,我们所制定的区域在Pitney Lannon的房间外面,所以起名为“Lannon House Exterior”). 标签是编辑器和游戏用来区分并寻找多个对象的依据,可以是地区,也可以是生物或物品。不同对象间的标签可以重复,不需要独一无二。
然后是地区类型的选择 (在本例中,我们制作的是室外,所以选择外部型(exterior))。当您起好名字并选好类型后,点选下一步(Next)以继续。一旦地区被创建了,上述两个设定则不可更改。
现在向导界面开始询问您想要的地区尺寸。您可以选择典型的规格级别,从极小Tiny (大概是小房间或小花园的尺寸)到巨大Gaint (大型的城市或大面积的森林);或者您也可以通过调整左侧滑块来自定义想要的地区尺寸。当您订好地区尺寸之后,点击完成按钮 “Finish”
继续。在这个例子中,我们为了简便而选用小尺寸。
在您制定完地区大小之后,一个新的空白地区就建立完成了。
放置起始地点 startlocation
让地区可以运做的条件十分简单:您只需要放置一个起始地点(Start Location),该地区就可以运行了,只不过相对大型史诗级游戏剧情来说寒酸了点而已。游戏系统通过起始地点来指定模组开始运行时角色所载入的位置。一个模组可以包括有多个地区,起始地点可以放在它们其中的任何一个里面,不一定非得是您所建立的第一个。每一个模组只能有一个起始地点,如果您的模组中已经有了一个起始地点,而您又建立了另外一个,那么原来的将会被自动删除。
想要放置起始地点,只需要在顶部的工具栏中选择Set Start Location
该选项带有一个带圈的箭头,很容易与其他部分区分开来。点选该按钮之后,您就可以在地形中的任何位置点击放置起始地点了。放置成功后,起始地点显示为红色的罗盘标志。
预览您的模组
尽管看起来不太丰满,但是一个带有起始地点的地区却已经是您要运行冒险剧本所需要的所有充分条件了。如果您想预先浏览一下自己制作的模组,您只需要保存它,然后运行游戏,像选择其它剧情那样选择您刚做好的模组就行了。
模组的保存很简单,选择下拉菜单: File->Save As. 您也可以用Ctrl+S来保存。起个名字,然后点选保存“Save”
,就好了。
启动游戏,选择新游戏 “New Game” 然后选择新模组“NewModule.” 不出意外的话,您可以在列表中找到您的。选择它,然后点选运行模组 “StartModule.” 选择一个角色,也可以自己创建一个,然后就可以开始自己的游戏了。
嗯… 这空旷的室外环境看起来再熟悉不过了……
如果您要在游戏中测试自己制作的模组的话,有一点需要记住:游戏的存档包括了模组的所有内容。也就是说,如果您存储了游戏,然后修改了模组。那么您模组的改动不会给游戏存档带来任何影响。如果您想试验所改动的内容,您应当重新载入改动后的模组,而不是载入刚刚存储的游戏存档。
小结
以上所述包括了制作一个可运转模组的最基本内容。您应该已经准备好制作自己的史诗传奇了。
初步讲解已经完成,您需要知道:
1.如何建立一个新模组 (这几乎与打开编辑器一样简单).
2.地区、对话、和脚本的大概目的与功能.
3.如何建立新地区.
4.如何防止起始地点.
5.如何存储您的模组并在游戏中测试它们.
放置对象Object
这一章节将讲述关于如何在地区中放置生物、物品、和其它游戏对象的基本知识。对于基本的对象放置来说,我们使用现成的选项可以简便的放置角色和其它物品,而无须动用复杂的脚本工具。在本章结束之后,您就会了解如何用盟友、敌人、景物、和战利品来充实您的地区了。
“对象”指的是什么?对象 object 泛指您在模组中所能引入并放置的所有东西。您可能要用到的最常见的对象包括生物、物品、道具等,这些是游戏剧情的血肉部分。它们是使您的游戏剧情更加充实有趣的必不可少的部分。脚本和对话的介入会利用这些元素使游戏剧情更加壮观,也可以制造剧情的分支… 但这些都是我们后面要谈到的。我们现在要利用这些便于使用和便于调整的元素来制作简单的剧情。
生物
包括怪物、敌人、野兽、幽灵、竞争对手、以及很多非控制角色(NPC) (npc同样可以转化为您所能控制的角色,但是目前我们不妨先把它们认作是始终由计算机控制的角色). 生物可以介入战斗和对话,可以在世界内移动,使用门和其它物品,使用魔法、特殊技能,也可以在脚本工具的帮助下发出复杂的行为动作。
物品
在《无冬之夜2》中,物品泛指环境物品和建筑物品等非生物性物件。像生物一样,物品也可以关联脚本,拥有装备栏,还可以介入对话。它们只是不能做出生动丰富的动作而已。
道具
包括武器、护甲、药剂、钥匙、任务物品,和其它可转移的对象。道具的放置和引入与生物和物品时一样的,只是它们往往以附加在生物或物品身上的形式出现。
蓝本blueprint和实例instance
生物、物品、和道具是以蓝本的形式被创建的,蓝本可以看作是一种用来区分不同类别的模版或是模型。所有的游戏对象都有自己的蓝本类别。当一个物品(或是角色)被从蓝本中引入到关卡中时,该物品就成了一个实例instance。
进一步说明:实例
对某个实例的修改不会影响到他所属的蓝本类型或是该蓝本类型之下的其它实例。而且,一个已经放置完毕的实例也不会由于其所属蓝本类型受到更改而受到任何影响。
如果您放置了同属一个蓝本的5个葛布林,并将其中的一个指定为法师,那么其余的四个不会自动的也变成法师。如果您放置了同属一个蓝本的5个葛布林,然后在该蓝本中加入了护甲属性,那么其余的四个即时葛布林对象不会自动的立刻获取护甲属性;只有在修改蓝本后被放置的葛布林才会具有该护甲属性。
我们以上谈到的生物、物品、和道具都是编辑器中已有的、可以直接引用的。我们还会讨论关于创建自定义道具、以及与之相似的创建自定义生物和物品蓝本的步骤。
生物
一提起“生物”一词,人们往往会联想到怪物和害虫。实际上,生物作为一个专业词汇,将贯穿我们的整个教程,它甚至包括我们要从狼口中拯救的那些女人和孩子。在这里,生物一词所包含的概念十分丰富。
放置生物
本款编辑器支持在地图中直接放置生物。首先在编辑器界面中找到蓝本窗口,在默认的设置下,您可以在操作界面的右下角找到它。找到并点击“生物”按钮(是一个龙的标志),就可以看到所有的生物蓝本列表了。前面带有“+”的条目都代表一个类别,点击加号就可以打开其下的扩展列表。
寻找 Humanoid->Lizardfolk->Lizardfolk Warrior
点击一下 Lizardfolk Warrior 条目,就可以把它放置在地图上了。此时您的鼠标上已经绑定了Lizardfolk Warrior 的模型,在地区浏览窗中任何一个合法的位置点击鼠标,就可以放置一个Lizardfolk Warrior 的实例。
进阶说明:刷怪和遭遇战 生物也可以是“刷”出来的。在这个例子里,我们的生物不是画死在地图关卡里面的。脚本工具可以即时的制造出n个从属于各种蓝本的生物。按照这类方法,您可以设定特定剧情:只有当某个特定条件被触发的时候,某一部分敌人才会涌现出来;触发的条件可以是多种多样的,比如说警报的响起、玩家进入某个区域等。直到特定条件激活它们之前,这些怪是根本不存在于该关卡中的,这样,即使再狡猾的玩家也不能预先发现并去伤害它们。遭遇战是一种更为灵活的“刷怪”的应用。
生物的刷新出现是较为高级的技巧,在本文中暂不做介绍。但是有必要明白,直接在关卡里面放置生物并不是唯一丰满模组的方法。当您开始熟悉并适应这款编辑器的时候,您就有必要研究关于遭遇战的技术了。 当您把生物放置在地图中之后,你可以随意修改它的属性。点击编辑器顶部的“选择物体”按钮,使您的鼠标指针进入选择模式。在世界浏览窗中点选目标生物,然后就可以在右上角中的属性面板中浏览并修改其属性了。
修改生物
您可以通过多种途径修改生物的外观。属性面板中列举了所有的外观类型,头发,脸型,体型等,还有从视觉上隐藏护甲和头盔的选项。现在让我们来尝试着修改一下生物的比例放缩和色彩设定。
找到“比例”scale条目,并点击右侧标有“1, 1, 1”的文本区。此时您会看到一个闪动的光标提示您输入新的比例值。此时该生物的放缩比例是长、宽、高各100%。我们不妨输入“1.5, 1.5, 1.5”,并按下回车,此时您会看到这名Lizardfolk Warrior 在长宽高三个方向上分别扩大了50%.
色彩的修改条目在比例条目的下面,拖动属性面板的滑块,找到“色彩 (皮肤)”条目。点击相邻的赋值区(外观像是个白色的方块,并标有“255, 255, 255”),此时会弹出一个颜色编辑面板。选择您喜欢的颜色,然后点击“OK”完成设定。此时该生物的对应部位就被重新着色了。
阵营
阵营 对于生物来说,是一个十分重要的概念。它决定了该生物的敌对行为的判定。生物对本阵营和中立派别的单位是友好的,而对其它阵营的单位则是敌对的。阵营的设定条目在比例和色彩的下面,是行为(Behavior)属性列表中的一个选项。点击右侧的赋值区域,并从下拉列表中选择阵营。
那么,如何获知某个阵营与另一个阵营的敌对关系呢?在最顶端的选项栏中,寻找View->Factions 下拉菜单,您可以打开当前Module的阵营关系表。在该表格中,我们可以清晰的了解各个阵营之间的关系。0代表敌对,50代表中立,100代表友好
在这里您可以添加或删除阵营,而且还可以修改各个阵营相互之间的关系代码。Player所代表的阵营就是玩家角色的阵营。我们可以看到,刚才所用到的Lizardfolk Warrior 所在的阵营Hostile 与玩家阵营的关系代码是0,它们对于玩家来说是处于敌对立场的,它们憎恨并随时攻击玩家角色。通过修改阵营关系代码,我们可以轻松的调整生物的行为习惯,而不需要经过繁琐的脚本编辑。
如果您想离开阵营编辑界面,只需要点击该子窗口右上角的小叉。然后回到主编辑界面。
龙与地下城信息统计
龙与地下城信息统计 面板可以用来轻松调整生物的属性,但出自编辑器的使用需要,我们仍然建议您了解一下职业、技能、专长、和法术的概念与用途。我们再来详细浏览一下Lizardfolk Warrior 的属性信息。属性面板就在编辑器主界面的右上角,确保您现在已经点选了一个Lizardfolk Warrior,然后在属性面板中选择“基本”(Basics)标签。
在基本信息里,您可以修改名称,种族和职业。给这个生物设定一个战士的职业属性。点击添加按钮,然后就会出现一个下拉菜单,从中点选野蛮人的选项。如果你愿意,你还可以设定该职业的级别。
在属性窗口中,我们可以在状态统计、专长、技能等标签之间切换,设定生物的各种属性和技能。
对话
对话
可以被放置在任何对象上,它们都将会与玩家“谈话”。编辑对话事件是一种大有讲究的技巧,但在地图中放置一个对话却并不复杂。选择一个生物,在该生物的属性面板中寻找对话设定区域。点击旁边的下拉列表,其内包括了所有可用的对话事件,你只需要为他指定一个就行了(关于对话的制作我们将来会谈到)。现在,当你的角色想与这个生物对话的时候,你所指定的对话事件就会被触发。
脚本
脚本 可以被附加在生物对象上,以扩展它们的功能和行为。脚本列举在属性界面中,你可以为生物对象绑定多种特殊事件。被放置在 “On Death” 栏中的脚本事件会在该生物死亡的时候被触发;被写在“OnInventory Disturbed”栏中的脚本事件会在该生物遭受扒窃行为的时候触发,等等。基本蓝本库中的所有生物都在这些“栏位”中具有默认的脚本设定。所以,对于生物向目标的移动、攻击、并使用技能等基本脚本设定,我们不需付出额外的关心。等您对编辑器的功能有了深入了解之后,您可能会产生尝试新脚本语言的想法。但是现在我们可以暂时忽略它。
物品
在《无冬之夜2》中,物品泛指所有不可移动的对象。像生物一样,物品也具有很多设定选项,多个参数,并且能附带脚本和介入对话。物品可以是具有交互性的,玩家们可以使用或是摧毁它们;物品也可以是纯静态的,只作为游戏世界中的装饰物出现。
放置物品
像生物一样,物品可以被预先放置或是即时刷新到关卡中,只是物品的刷新出现不常用而已。要想放置一个环境物品,在右下方找到蓝本界面。点击物品Placebles按钮(是一个桌子的标志),就可以看到所有的物品蓝本列表了。很多条目前面都带有加号,点击加号打开其下的子列表。
我们来放置一个铁锅, 02 – MANMADEPROPS->POTS {03}
点击 Pots {03} 您就能放置这种铁锅了,移动鼠标指针到一个合法的位置,按下左键,就放置了一个该种铁锅的实例。
进阶说明:大括号中的文本
放在{大括号}中的文本只会在编辑器界面下显示出来,而不会显示在游戏中。当给对象命名的时候,您可以在名称中添加由大括号括起的注释信息来帮助自己进行区分,然而该注释信息是不会被玩家们看到的。比如说,您可以给两个葛布林分别命名为“葛布林{强壮}”和“葛布林{孱弱}”,但是在游戏中它们都只显示为“葛布林”。与此类似的,一个被命名为“{附带陷阱}箱子”的容器在游戏中只会被显示为“箱子”。
修改物品
像生物一样,脚本和对话也可以绑定到物品身上。与生物相比,物品的脚本触发有部分不同之处,但是脚本的设定途径却是相同的。而且我们现在暂时也不需要关心这个问题。也许看上去给桌子、油灯一类死物件添加对话是不太可能的事情。但是记住,对话只是用文本所表示的分支选项而已,一个具有三个按钮的箱子对于一个具有四项选择的对话来说是再合适不过的(每个按钮对应一个选项,第四个选项表示不作出选择)。您丝毫不需要担心物品与对话的搭配问题。
进阶说明:环境类对象
环境类对象是决不会与生物作任何互动的纯装饰物。它们不具有交互性,对于其他生物来说属于非实体,所以相比那些具有动力系统的对象来说,他们要消耗更少的CPU资源。如果您有计划在一片区域中布置大量的纯装饰物,那么最好将它们转换为环境类对象,这样可以节省一部分系统资源。
想要将某个物品转化为环境类对象,只需要在编辑窗口中右键点击该物品,并在弹出列表中选择Convert-〉Placeables to Environmental Objects
该条目下面的选项是把环境类对象还原成/转化成普通物品的选项。
容器 是带有道具栏的物品,它们可以用来放置道具。玩家可以与容器进行交互,获取其中的道具或是使用该容器的道具栏。要把一个物品设定为容器,选择它,然后查看它的属性面板。
在属性面板中,将下列条目的赋值做如下设定:
Has Inventory? = True
Inventory Size > 1, though 136 is average for a chest
Static = False
Usable? = True
意思是:
是否有道具栏? = 是
道具栏的大小 > 1, 对于箱子来说,136是平均值
静态 = 否
是否可用
= 是
修改赋值的方法很简单,点击条目旁边的赋值区就行。这些数值赋予了物品道具栏和可被使用性。现在玩家就可以在游戏中打开该物品的道具栏,获取或是其中的道具。如果该物品被摧毁,那么其中的所有道具都会掉落在地面上。
道具
道具 是可以被转移、携带和交易的特殊对象,包括武器、护甲、卷轴、魔法材料、以及钥匙等等形形色色的东西。武器、护甲、魔法道具、以及所有装备类的道具都具有丰富的属性和参数设定。道具的创建和修改我们将放到一个专门的章节讲解。当然,当我们放置生物或是物品在地图中的时候,常常需要给他们配备一些装备和携带品。
给生物和物品配备道具
生物和物品都可以具有用来存放道具的道具栏(inventory)。在两者中放置道具的方法大体是一样的。选择目标生物或是目标物品,然后在其属性面板中选择道具栏(inventory)标签。在该窗口中会有一个编辑(Edit)按钮,点击该按钮进入目标生物的道具栏。
让我们来给这个战士多装备些武器。在左下方寻找武器类别列表。点击武器条目左侧的加号打开武器列表。然后再打开刃类和短剑列表。当菜单扩展开之后,您就可以拖动滑块,浏览所有可选用的武器对象了。
寻找想要的武器条目,然后点住该条目,并把它拖动到右侧的装备槽中,该武器就会被装备到目标生物的左手或右手上。装备完成后,该武器的名称会出现在该装备槽中。
要把武器放到目标的道具栏里,用同样的方法拖动,放置到左上角的道具区里。之后该武器的名称会出现在目标生物的道具区。
进阶说明:道具实例
当您为一个生物配备了某样道具的时候,您也就创建了一个实例。跟生物的实例一样,道具的实例并不和它的所属蓝本即时绑定。如果您修改了一个道具的蓝本,那么之前已经放置了的道具不会产生任何改动。与此相似的,您可以修改某个道具的实例,并不会影响到它所属的蓝本或是从属该蓝本的其它实体。这样看来,以蓝本的形式创建道具比修改特定实例要更好。我们更容易追踪它们。
在道具栏(Inventory)和装备槽(Equipment)中的道具右侧,我们可看到两个标有droppable(可掉落)或 pickpocketable(可盗窃)的选项。在默认设定状态下,生物所携带的道具会随着携带者的死亡而一同消失。当道具被设定为可掉落时,该物品会在携带者死亡后留在地面上;当道具被设定为可盗窃时,该物品可以通过“扒窃”手段从携带者身上获取。一些稀有而精良的道具我们常常都将其设定为可掉落。
在容器中放置道具的方法与对生物是相同的,只不过容器一般只是起一个道具栏的作用。给容器中的物品实例设定为可掉落或可盗窃是没有实际意义的,也毫无实际影响。因为当容器被破坏之后,里面的道具反正都会自动地留在地面上;而且箱子也不像人那样有口袋以供窃贼扒窃,只不过你可以撬锁并掠夺其中的物品。
小结
生物、物品、和道具是游戏剧情中的重要角色。他们都具有丰富的属性和参数设定,但是放置它们以及对一些重要属性的设定却很简单。在经历了一个章节的探讨之后,我们学会了:
1.生物、物品、和道具的基本概念和使用目的。
2.如何放置生物和物品。
3.如何设定生物的基本外观、行为、和状态。
4.如何将物品转换为容器。
5.如何将道具放置到生物或容器的道具栏里。
编写对话Conversation
在这一章节中,您将学会如何编写基本的分支性对话树,以供玩家按照自己的意愿做出选择。您将会了解如何运用条件和动作脚本来使对话变得更加充实有趣。您也将学会如何将完整的对话附加到生物对象上。
基础知识
在《无冬之夜2》的游戏中,对话是一个十分重要的东西。我们通过对话来与队友交谈,与商人交易,并且从NPC那里获取有用的信息。从本质上来讲,对话实际上只是一个分支菜单。介入谈话的双方不一定非得是两个人物角色,如果你想要玩家操作一个具有三个按钮的面板,那么一个具有三个分支选项的对话就是相当合适表现手法。
剖析对话
刚刚接触对话时,您可能会感到它们很复杂,实际上您很快就会学会使用它们。
这个截图展示了与Pitney的对话中的一部分,选自模组样本0100_UninvitedGuests。对话(有时体现为交谈)是以分支树的形式存在的,与Windows的文件路径模式几乎一样。每一行都被称作一个节点,左侧的文本部分text是展示给玩家的内容。
红色的节点行是NPC所说的话,蓝色的节点行是玩家所做出的回复/或回应。蓝色的说明在当前对话回合中,玩家没有任何选择可做,只能点击继续。然后对话将会前进到下一个红色节点,NPC讲出新的对话内容,直到玩家再次做出回应。
1.当前所选中的节点。
2.玩家所能选择的一系列选项。
当其上的红色节点内容被陈述完毕之后,玩家们就可以通过点击或选按对应数字来做出自己的选择。
注意左面的加号,表示该条目还可以继续扩展。
3.节点的其他信息。通过右键点击可以决定哪些被显示出来。
在这个截图中,我们可以看到每个对话节点都具有动作、条件、和请求的选项。
4.节点属性。这里包括了该节点的更丰富的信息。
5.文本。当前所选中的节点的文本内容被显示在这里。点击这个文本区,就可以对文本内容进行修改。
可以是NPC所讲的话,也可以是玩家所做出的回复内容。
灰色的节点是指向对话中其他节点的链接。使用链接可以避免为相同的条件重复的输入相同的内容。
想要加入节点,只需要在目标节点上点右键(即以该目标节点作为所添加节点的前驱),然后选择Add。一个新建“New Line”窗口就会出现。只需要输入您想要玩家们阅读的内容即可。 (语言选择菜单和 “Edit String Ref”按钮即被应用到您的模组中了,但只有官方战役中才能使用它们。)
对话脚本的基本知识
在本款游戏中,脚本是功能十分强大的开发手段,也很复杂。在本款游戏的官方剧情开发过程中,我们有很多专业的脚本程序员(你也可以叫他们为游戏设计师或者程序员,这取决于不同的角度)花费了大量的时间来调整脚本工具的功能,并开发了一系列的用来构建地区的新脚本。脚本编写的技术细节远远超出了这份帮助文件所能涵盖的范围,但我们还是会讲解一些要在对话中用到的基本脚本设计的内容。要想了解更多的关于脚本设计的知识,您最好反复体会并试验我们所提供的模组范例,看看我们是如何使用它们的。然后在您自己的模组中不断尝试脚本与对话的结合。
条件
条件 是绑定于某个对话节点的判定脚本,它的判定依据是“是”或“否”(TRUE or FALSE)。当判定条件成立时,它所指向的对话节点就会被执行。比如说,存在这样一个NPC,他会发出两种不同的问候方式,一种是热情而友好的,另一种是冷淡的。我们给第一个问候节点加上一个条件“是否是精灵族”,如果玩家使用的是精灵族的角色,那么该条件成立,玩家会得到NPC的热情问候;其他种族的角色则会得到冷淡的问候。从这个角度看,条件脚本可以用来塑造NPC的人物个性。
在我们所提供的模组范例中,条件被用来判断玩家的任务执行状况,从而决定在对话中哪些节点将被显示。如果玩家拒绝帮助Pitney,那么对方会再次做出恳求。如果玩家杀死了敌人,那么Pitney 将会表示感激。
如果条件判定没有通过,那么玩家将看不到对应的对话节点。在具有4个回应选项的对话回合中,这意味着玩家可能只能看到其中的三个。对于NPC的陈述来说,第一个条件判定通过的节点会被显示出来。如果您深入调查一下模组范例,您会发现,在与Pitney的对话中实际上存在5个节点。玩家能看到其中的哪些取决于到当前为止所发生过的事情对各个判定条件产生的影响。
1.节点属性标签. 这些标签关联着对话节点的各项属性。在这个截图中所显示的,是节点的条件属性。
2.条件运算.
如果某个节点具有多重条件判定,我们可以指定“与”或“或”的运算关系来决定究竟是需要所有条件都成立还是部分成立才能触发节点。
3.脚本名称.
存放条件脚本的名称。
在这个例子中所显示的一个通用脚本,其名称是“gc_journal_entry”。该脚本是用来进行任务完成检定的。
4.脚本参数.
注解了该行中,各个条件都是向条件脚本传递哪些参数。
在这个例子中,参数sQuestTag的赋值是“01_lizardfolk”,而参数sCheck的赋值则是“10”。脚本参数是十分有用的,它允许同一个脚本应用于多个对话中。比如说,gc_journal_entry这个脚本就能被用作检查游戏中所有任务的完成状况。在脚本中引入并使用参数是《无冬之夜2》所新加入的功能。
[注意: 如果您在条件或行为中加入了一个通用脚本,或者更换了某个脚本,要点击“刷新”按钮来设定新脚本的适用参数。]
5.脚本代码.
显示的是当前脚本的代码部分,是实现脚本功能的程序段。
动作
action在这里可以被译为动作、行为、操作、或者事件,它们是用来完成多种操作的一种脚本。当对应的对话节点发生时,其绑定的动作就会被执行。举例来说,可以是让一个NPC获得对玩家的敌对性、将玩家传送到另一个地图中、或者在箱子里放置一些金币等等。在我们所提供的范例中,有一个动作脚本是用来在玩家完成Pitney的任务之后赋予经验值奖励的。
给节点附加动作脚本与给它们附加条件脚本的方法是一样的。
编写对话
现在让我们来为那名被怪物关押在Pitney房子里的受害人编写一段对话。当玩家解决掉房间里的敌人之后,就可以与受害人触发这段对话。创建一段新对话,从下拉菜单中寻找File->New->Conversion.
新建的对话内容是空的,只由一个空的根节点组成。就像前面所提到的那样,我们可以右键点击根节点,然后选择“Add”来添加第一行对话。之后会弹出新建行窗口(New Line window),在这里您可以输入对话中的第一句对白。注意,根节点之下的第一句对白永远是由NPC所发出的。
点击“OK”来完成当前对白的设定。此时,受害人的第一句表达就完成了。
如果此时您以NPC的这句表白为前驱进行新节点的添加的话,您所添加的内容将被看做为玩家的回复(显示为蓝色)。如果您想让NPC连续做两句表白的话,则需要在两句NPC节点之间加入一个空的玩家节点。现在请您尝试着在对话中加入一个空节点。
怎么显示为“(结束交谈)”?是这样的,如果一个玩家节点没有关联任何回应内容的话,将被编辑器看作是对话结束的节点。我们不妨在该节点之下再添加另一句NPC节点,看看会发生什么事情。
现在,那句蓝色的玩家节点变成了 (继续),并且NPC的第二句表白紧随其后。现在NPC已经讲了两句话,我们的玩家也该说点什么。现在让我们添加一些玩家节点来作为对NPC的回应。如果想让玩家在同一时间(同一会话界面)内具有三个回应选项,我们就需要以前文节点为前驱,在其下添加三个回应节点。如果想让玩家对于NPC所说的“我的腿失去知觉了…”这句话具有三个回应选项的话,只需要在这句话的节点上点右键,创建三个空节点,并分别添加内容。
我们为那句前文创建了三个空节点作为玩家的回应。现在分别点选它们,并在文本框中输入想要的内容。文本框在右下角,带有“Insert”按钮。
目前还没有对应的回复内容与玩家的表白关联,所以这三个玩家节点将被看作是对话的结束。它们的前缀还没有消失。如果您愿意,可以继续添加NPC的下一句表白,并且继续添加后继…直到把对话的核心内容表达尽致。添加对话节点的步骤就这么简单。
进阶说明:商店
在对话中,商店的触发只能通过脚本来实现,它们对于玩家来说是不可探测的。商店与其它游戏对象一样,也具有自己的蓝本。在建立了它们的蓝本之后,我们把它放置到地图中的方式是一样的。它们通常都被放在NPC的身边,您可以在范例中查看我们所放置的商店。
1.商店对话节点.
这句节点被附加了打开商店的动作脚本。
2.脚本名称 ga_open_store.
该动作脚本的功能是打开商店,它被赋予了商店脚本作为执行参数。
3.商店属性面板. 要编辑商店的货存,只需打开它的属性面板。点选“Store”标签,然后点击编辑“Edit”按钮,然后就可以更改商店的货存了。您可以在商店里放置任何道具蓝本的实例。
4.地区内容.
一个地区中的所有商店都可以在这里看到,就在“Store”标签下。
一些基本的对话编写技巧
链接 在编写规模庞大的对话时,链接的引入可以节约大量的时间。如果您想要让对话跳转到另一对话节点,使用链接可以避免重复输入相同内容。
就拿刚才的对话范例来说吧,我们假设幸存者处在死亡边缘,如果玩家继续提问问题,那么该幸存者将会失去知觉。
对话的实现效果是这样的:
注意到“Why should I help you?(我为什么要帮你?)” 和“Who are you?(你是谁?)” 这两个节点指向相同的回复内容。重复输入这些回复内容需要大量不必要的时间和精力,而且会使对话变得混乱而庞大。我们有更简单的办法使对话结构变得简明流畅。
第一步是把 “Who are you?”这一行后面的子成分都删除—我们不再需要它们了。右键点击“Who are you?”后面的 “Please… help me…” 这一行,然后选择“Remove”删除,那么这一行和他后面的子成分就都被删除了。
第二步是建立链接,我们要把 “Who are you?”链接到“Why should I help you?”后面,让它指向相同的回应内容。右键点击“Why should I help you?”后面的“Please… help me…”这一行,选择“SetLink Destination.”(设定链接目标)
<译者按:设定链接目标的功能是生成指向当前节点的链接 >
刚才的“设定链接目标”可以将任何选定的NPC节点设定为某个玩家节点的后续。只需要在目标节点(玩家节点)上点右键,然后选择 “Insert Link.”(植入链接)即可。
完成之后,我们就可以看到,“Who are you? ”变成了一个灰色的节点,这意味着当玩家选择了这句话时,会像他们选择“Why should I help you?”一样跳转到相同的NPC回应节点。如果您忘记了某个灰色节点所指向的目标,只需要双击它,编辑器会立刻把你引向目标节点。
链接使得你只需几分钟就可以完成原本需要花费数小时才能搞定的重复输入工作。
竖线和大括号
它们是用来区分注释和正文的工具。被夹在竖线中间或是被大括号括起的文本内容只会显示在编辑器中,而不会显示在游戏界面里。因此,如果您要编写一个庞大而复杂的对话,而又想留一些便于自己快捷区分而又不想让玩家们在游戏中看到的注释的话,只需要把注释文本放在竖线中间或是用大括号括起来就可以了。
|像这样|或者{像这样}.
上一行可能看起来很乱,但是在游戏中,玩家们只会看到“Thank you stranger, I won’t forget yourkindness!”对话作者们可以用注释来区分话语的感情色彩,也可以用来标注当前话语所将触发的其它事件。比如说,在本例中,前缀注解说明该语句是一句友好的回复,而后缀注解则说明接下来玩家将会获得声望的提升。这些信息都注释的形式存在,以便作者进行区分。而在游戏过程中,玩家们所能看到的只有正文,他们是看不到注释内容的。
独白
是只包含NPC节点,而不包括玩家回复的对话类型。当与一个只附加了独白的对象进行交谈时,游戏不会切换到专门的对话界面或列出任何回复选项,而只是在讲话人的头上弹出对话框,显示独白内容而已。独白的触发不会造成游戏暂停。
在我们提供的模组范例中,01_ginni 就是一个独白的对话例子。在该例子中,Pitney的妻子只是说一些简单的语句,而且也不需要玩家们作任何回复。
进阶说明:跳过-继续Fall-through
跳过-继续 是用来处理多个附带条件判定的对话节点的机制。如果第一个节点不被显示的话,对话将跳过当前节点,继续到下一个节点。就像我们刚才所谈到的条件判定问题,如果一个节点所附带的条件判定没有通过,那么该节点将不被显示。我们来观察一下Pitney的对话:
我们可以看到,在根节点之下总共有5个NPC节点(沿着根节点下面的竖线观察)。第一句NPC节点不带条件判定,是确定会执行的;与跳转-继续无关的字节点我们把它们收起来了。接下来是条件判定部分,作者加了注释来标示该节点在满足何条件前提下被触发。当第二次玩家与Pitney交谈时,首先游戏要检测玩家是否拒绝Pitney的求助,如果拒绝,那么将显示第二行;否则将检查玩家是否同意帮助。
在您反复试验条件判定机制之后,您就能利用跳过-继续机制编写出色的具有反应性的对话了。从玩家的角度看,是5段不同的完整对话,它们取决于即时事态;但实际上只是巧妙运用了跳过-继续机制的同一段对话而已。
<译者按:在这个范例中,玩家与Pitney的第一段对话只有两种结束可能,一种是玩家同意帮助Pitney,另一种是玩家拒绝帮助Pitney。如果我们把第一段对话展开,就会发现,当玩家同意帮助Pitney时,该节点所附带的任务脚本(Quest)将会被触发,从而使玩家获得该项任务;在第二段的对话中,条件判定的依据就是这个Quest参数,从而令NPC获知玩家在第一段对话结束时是否拒绝了帮助请求。在第一段对话中我们也不难发现,根据玩家所做出的不同回应,对话节点中所附加的其它动作脚本也会被触发,包括使玩家获得武器、钥匙等等。>
<译者按:在本范例中,玩家第一次是否拒绝了NPC的帮助请求与第二次NPC的反应之间的剧情逻辑,是通过给第一段对话中加入动作/任务脚本来生成判定依据而实现的。>
进阶说明:一次性节点
有时您可能需要NPC讲一些话,并且以后不想让他再次重复。比如说,在我们提供的范例中,Pitney与玩家首次见面时,向玩家讲述遭遇并寻求帮助的对话,我们就只需要他讲述一次。在这之后,Pitney将只会根据玩家第一次所做出的答复而做出反应,以此营造NPC认识玩家、并对刚发生过的事情留有记忆的假象。
要把某个对话节点设为一次性显示,只需要在对话编辑窗中点选它,然后选择节点属性面板中的“Node”节点标签(应该在屏幕的最下方)。点击Show Once(显示一次)条目,然后在右侧的下拉菜单中选择赋值:默认的设定都是“Always”(永远显示),也就意味着每次与NPC对话,该节点都会显示,除非被特定的条件判定干涉。
把 “Show Once”条目更改为“Once per game”(每个游戏仅显示一次),则会使该节点在游戏中只做一次显示,并永不再出现。如果该节点后面没有以供跳过-继续的后继节点的话,对话就会直接关闭。
为了营造合理而稳定的游戏世界,我们通常都把“ShowOnce”条目的值设定为“Once per creature that uses thisconversation.”(对每一个使用该对话的生物只显示一次)。否则,该节点将只对第一个访问它的玩家显示一次,之后就在游戏世界中彻底隐匿了,在多人游戏模式中,这有时并不是我们想要的效果。
把对话附加到生物对象上
对话可以附加到任何将要与玩家对话的生物或是物品身上。选择生物或者物品,然后在它的属性面板中寻找“Conversation”(对话)条目,点击弹出下拉菜单,当前模组中所有的可用对话都列于其中。选择我们需要的那个,该对话就附加在目标对象上了。当玩家与该目标对象试图交谈时,对话就会被触发。
小结
《无冬之夜2》提供了功能强大的对话系统,尽管它们一开始看起来令人望而生畏,但是掌握基本技巧并不困难。在对话的编写中尽量施展你的写作才华吧,看看你都能向玩家们展示什么。在我们结束这一章节的时候,您应该知道:
1.在《无冬之夜2》中,对话系统的基本结构和功能。
2.大概了解条件、动作、和脚本是如何在对话中使用的。
3.如何编写自己的对话。
4.如何在对话的文本中添加注释。
5.如何将对话关联到生物对象/物品对象上。
触发器
在本章节的讲解中,我们将向您介绍有关触发器的知识,并且告诉您如何把他们放到游戏世界中去。您也会获得关于两种重要触发器的相关细节:对话触发器,和地区传送。
触发器是什么?
跟其他可以放入游戏世界的对象不同,触发器对玩家来说一般都是不可见的。他们的功能正像他们的名字一样:当一个角色步入触发器的工作区时,会发生一些事件。触发器可以激活一段对话,诱发一个陷阱,或者刷出一群野怪。
如果您玩过了我们提供的模组范例“不速之客”(Uninvited),那您应该已经领教过了一个简单的触发器了。当你第一次靠近Pitney的时候,您的角色就进入了一个隐形的触发器。该触发器使Pitney向你跑过来,并且打开他的对话窗口。
编辑器提供了一系列事先制作好的触发器类型供我们便捷调用。利用比较专业的知识,我们也可以制作出作用更广泛的触发器,它们能激活自定义的脚本,灵活性更强。为了教学目的,我们只讨论编辑器提供的常用触发器。
放置一个对话触发器对话触发器的作用是打开对话窗口,并且运行一个对话文件。要在游戏世界中放入对话触发器,先在您的module中打开一个地区,然后找到蓝本面板(Blueprint),选择触发器标签(Triggers)。点击“对话触发器”(SpeakTrigger),然后将鼠标指针移到地区浏览窗中,现在鼠标指针已经变成了十字准星的模样。在地图中找一个合适的位置,左键单击确定一个点,然后在附近再次单击确定另一个点,此时两点会连成一条线。在其他位置确定另外两个点,制造一个矩形区域,然后右键单击(或者按下F2),一个触发区域就确定了。触发区域的形状可以是任意的,你想要设定几个顶点都可以,编辑器会自动调整触发区域的形状。
触发器被放置好之后,您可以像移动其他物品一样移动它们,只需要点击它一下(选择它),然后按下左键并拖动鼠标,就可以移动了。 进阶说明:重定型如果您对现在的触发区域的形状不太满意,只需要在上面点击右键,然后在下拉菜单中选择重定型(Repaint Trigger)。此时鼠标指针将再次变成十字准星,只要在地区浏览窗中点击一下,旧的触发区域就会消失,您就可以重新布置新的触发区域了。当您清除旧区域并绘制新区域时,先前已经关联到该触发器上的事件都会保留不变。 话触发器已经被放置在了地图中,但是直到您给它附加特定属性之前,它在游戏中不会起任何作用。选择你的触发器(左键点击它),然后观察属性面板。首先,确保您选择的是属性标签(Properties),向下拖动滑块,寻找脚本区(Script)。注意,On Enter Script一项已经被自动设定为了gtr_speak_node,不要更改或删除这一项,它们承载的是对话触发器的基本功能。 在脚本区的底部,会有一行被标为“变量”(Variables)的条目。点击该条目的右侧区域(该区域中的字符均为粗体),一个浏览按钮就会出现,点击它以打开变量列表。
您会看到在弹出窗口中,总共有九个变量,他们被从0到8编了号。点击每一个,相应的详细设定就会出现在右部窗口中。现在我们按顺序来对每一个变量作说明: 1.NPC_Tag. NPC标签。它用来决定是哪个NPC将与你谈话,也就是触发器所激活的对象。把目标NPC的标签输入到ValueString(字符串取值)条目中。在本例中,字符串取值被设定为了01_pitney,这是Pitney的标签名称。2.Conversation.
对话。这是最重要的区域。对于一个对话触发器来说,如果不指定好将要触发哪一段对话,那么这个触发器就一点儿用都没有。在ValueString区域输入您想要触发的对话标签。本例中,ValueString赋值为01_pitney,也就是我们与Pitney之间的那段经典的对话。3.Run.
奔跑。决定NPC要跟你对话时是否会奔向你。函数是ValueInt(整型取值),所能取的自变量只有1,0,或者-1。如果将ValueInt设为1,那么NPC会跑向你;如果设为0,则会走向你;如果设为-1,那么NPC将会原地不动。在本例中,我们的赋值是1,所以,当Pitney要向你讲话时,他会跑向你。4.TalkNow.
立即说话。决定当触发器被激活时,NPC是立即开始讲话,还是靠近你之后再开始说话。ValueInt设为1,则NPC会先开始讲话;如果设为0,那么NPC会先靠近你,然后再开始说话。在本例中,ValueInt设为了0,所以Pitney会先跑向你,然后再开始讲话。5.MultiUse.
重复使用。决定该触发器是否可以被反复激活。如果将ValueInt设定为1,则每次玩家进入触发区域时,触发器都会工作;如果保持默认的取值0,那么该触发器只会在玩家第一次进入触发区域时被启动。我们的例子中ValueInt取值为0,所以,Pitney与玩家的首次会晤只会发生一次。 进阶说明:对话触发器和战斗事件CombatCutsceneSetup(战斗避免)当对话触发器被放置在危机多发的地带时,该项参数十分有用。如果当玩家进入触发区域时,可能会有敌人靠近,那么就把该项参数设定为0. 这样,在对话进行期间,所有的敌对生物都会暂时消失,以防玩家被“卡”在对话中时遭受“无法抵抗”的打击。在本例中,谈话的区域是绝对安全的,所以该参数是否设为0无关紧要。在对话结束之后,所有的敌对生物都会回到游戏世界中,一切照旧。把可用的对话标签输入到对话变量中去,把可用的NPC标签输入到NPC标签变量中去,再确保这名NPC已经被放置在了地图里,然后你就能在游戏中测试这个触发器了。
现在您已经了解了放置触发器的基本知识了,我们来讨论另一种触发器:地区传送触发器。
地区传送触发器
地区传送 的任务是把走进触发地区的角色传送到另一个地方。在不适合使用门的情况下(比如说玩家要沿着路前往另一个地区),地区传送显得十分必要。这一小节要说明地区传送的基本功能,以及各项参数的设定细节,请大家体会它们与对话触发器有何不同。
首先,地区传送器的放置方法与对话触发器是一样的。然而要想让步入其中的玩家被如期的传送到指定地区,还需要进一步的设定,首先选择地区传送触发器,然后找到他的属性面板。找到“Behavior”部分,然后对下列参数进行设定:
6. Linkobject type.
链接对象模式。
决定是将玩家传送到一个门还是将它们传送到一个路径点。“Transitionto a door”的含义是传送到门;“Transition to a waypoint”的含义是传送到路径点;如果你选择了“No Transition,”那么这个触发器将不会做任何事情。
7. Linkedto.
链接目标。
设定传送目标(门或者是路径点)的标签。必须要确保这里所设定的标签名称指向我们计划中的传送目标,而且要确保该传送目标已经被放置在了你的模组中。
8. PartyTransition.
小队传送。
决定被传送走的是整个小队还是只有走入触发区域的人。设定为true,那么将传送整个小队;设定为false,则将只会传送走入触发区域的角色。一般来说,都设定为true.
9.Localized Name.
局部命名。
这个部分是用来加入注释的,你可以在这里记录触发器的设定目的和传送目标。这里的内容在游戏中是不会显示出来的。
如果您将上面的参数设定好了,而且传送目标也已经放在了模组中,那么就可以在游戏中测试这个触发器了。
进阶说明:世界地图
您也可以放置将玩家带入世界地图的触发器。世界地图的剧情含义是包括扩了所有的地区的总地图。你可以在地图中放置地图点,并用一个图标来区分彼此。当玩家进入世界地图后,他们只需要选择目标地点就能完成传送。你也可以给他们关联特定的脚本,使得玩家在试图从某个地点传送到特定目标的时候遭遇一些事件。
想要尝试使用世界地图的话,选择Plugins->WorldMap Editor.
通用脚本gtr_world_map_en 负责了所有的世界地图传送,就像OnEnter
脚本为所有地区传送触发器服务一样。
小结
触发器在地区设计中是十分有用的工具,它们帮助我们设定那些根据玩家所处的位置而触发的事件。在完成本章节的讲解之后,您应该知道:
1.如何在地区中放置触发器;如果必要的话,如何修改它们的形状。
2.如何由一个对话触发器引发一段对话。
3.如何使用触发器来实现地区传送。
创建道具
本章的主要讨论内容是道具的基础知识以及他们的创建方法。在本章结束之后,您将会了解道具所具有的大部分属性,以及创建自定义道具的方法。我们也将谈到如何更改具有各种外观的道具,例如武器和护甲。
什么是道具
游戏中(或是你的模组中)所有可以被捡起来并且加以利用的东西,都统称为道具。护甲、武器、药剂、任务物品等所有能够用来充实游戏世界的东西,从巨人山洞中的魔法长剑,到你卖掉它们换来的金币。
道具大体分两类:可装备型的,和不可装备型的。可装备型的道具包括首饰、武器、护甲等可以被角色装备在身上、或是挥舞在手里的东西;不可装备的道具就是那些不能装备在身体上的东西(也就是说,它们永远也不能占用护甲槽或是武器槽)。不可装备的道具放在道具栏里有时会造成负面效果。有些道具可以被使用(比如说卷轴和药剂),有些可以是锻造的原材料,有些干脆只是占用空间(例如任务物品)。由于两者之间有很大的区别,本章的教学将会两者兼顾,在Lannon农场的那个模组中创建两个范例。
创建道具蓝本
为了创建一个新的道具,在蓝本菜单中点击“Items”(道具)标签,就会列出游戏中所有可用的道具条目。点右键弹出下拉菜单,寻找“Create Blueprint”(创建蓝本),然后选择“Module” (这意味着您将创建一个只在该模组中使用的蓝本,如果想创建在任何模组中都要使用的蓝本,就选择“Global”(通用))。这种操作等于是创建了一个模版。另一种创建道具的方法是通过复制并修改现存的蓝本来实现的。在目标道具上点击右键,在弹出菜单中选择复制蓝本,然后就会得到一个与目标道具蓝本相同的复制品,我们通过修改必要的参数就能完成新道具的创建,可以节约不少时间。
在道具模版中,有多项参数可供设定,它们最终决定道具的属性。在下图中,有很多区域被收起来了,因为它们暂时与我们的道具创建教学没有关系。Armor区域被收起了,因为护甲的创建和属性修改要作为专门的一章放在后面谈。Misc和Scripts 区域也被收起来了,因为我们目前所作的常规道具创建跟它们也没有关系。在作进一步说明之前,我们暂时不会谈到它们。
1.Appearance
外观
该区域大体上是决定道具看上去像什么样子的,尤其是武器。
Appearance(special effect) – 外观(特效)。
列举了一系列可以关联到道具的视觉特效。任何元素强化效果达
到平均值3点以上的(例如1d6以上;1d4就不算)武器都会自动附带特效。视觉效果也可以在“Behavior”区域进行设定。
ContainerUI Screen – 容器界面。
当容器被打开时,将使用什么背景。最好还是保留默认设定。
Icon – 图标。
该道具将使用哪个图标。(它们都是从nwn2_icons.2da文件中提取的).
Model Part – 模型部分。
这里设定该道具将会使用哪个模型。(一般来说只有特定可装备的道具才有用,比如说武器和吟游诗人的乐器。可穿戴的道具一般用护甲设定工具来进行编辑。)
Tint – 色彩。
该道具模型将会被进行何种着色。 (以RGB 通道赋值)
2.Behavior
行为
该道具在游戏世界中是如何工作的。
AdditionalCost – 额外花费。
道具比预设的价值(参看“Base Cost”下面的区域,该区域是不可更改的)要多花费多少钱。每一样道具都在baseitems.2da文件中标有自己的基本预设价格: 任何附魔效果都会同过特定的代码给道具增加价格。如果您想对这个基于代码的价格作出调整(不管是抬高价还是降低价),都可以在这个条目中进行修改。
Armor Type – 护甲类型。
设定护甲的类型。(基于2da文件中的基本法则设定).
ArmorRules Info – 护甲规则信息。
这里列出了所选择的护甲类型的防护规则,是不能进行修改的。
Base Cost – 基础花费。
列出了所选道具的基本花费,是不能修改的。
Base Item – 基础类型。
决定该道具的实际类型。这可能是蓝本文件中最为重要的部分了,因为它决定了道具的基本元素,包括使用模型、道具重量、武器状态、和基础花费等(对于每一个基础类型来说,这些基本元素都是baseitems.2da 文件中所设定好了的,通过这款编辑器所涵盖的层次无法进行修改。)
Charges – 使用次数。
一款魔法道具所能使用的次数。有些道具可以用来施法,施法次数可能是有限制的,当然,有些道具的魔法可以自动充满。
ContainerPreference – 容器选择。
决定当你获得该道具时,它将被自动放在哪种容器里,默认设定是放在玩家的背包中。当然,在条件允许的前提下,也可以设定为放在别处,比如说:如果你有一个药剂包,那么有些道具就可以被设定为自动放进药剂包里。
Cursed – 附带诅咒。
将该道具设定为附带诅咒,比如说:不可丢弃、不可解除武装等,直到角色被施加解除诅咒或是其它类似的魔法为止。
Droppable – 可丢弃。
决定持有该道具的NPC是否可能丢弃该道具。默认设定是不能。举个例子,也许兽人在战斗时,手中的木棍会脱落;但是洞穴巨人所带的拳套却不太可能。此项设定应该符合实际。
Force IntoPreferred Container – 强制选择容器。
决定除了指定的容器外,是否能放入其他容器中。比如说,箭矢之能放到箭袋里,宝石之能放到宝石袋里等。
Identified – 是否已鉴定。
决定该道具在可以被装备之前是否首先需要学识鉴定或是施加鉴定魔法。在《无冬之夜2》中,带附魔属性的道具一般都设定为“否”。
ItemProperties – 道具属性。
记录道具所具有的所有特殊属性。比如使用魔法(发射火球,召唤生物等)、伤害奖励([+2]、[+3]等)、伤害类型(酸,火焰,冰等)。这些信息在弹出菜单中进行设定。
ItemProperty Activation Preference – 属性生效设定。
决定道具的特殊属性在何种条件下生效。像武器类的道具一般要在装备时才会有效,符文和首饰要在佩戴时才有效。也可以把道具设定为在任何条件下都有效:不管处于装备状态或是非装备状态。
Pickpocketable – 可被窃。
决定该道具是否可以通过扒窃获得。一般只有对于NPC所携带的道具才有意义。
Plot – 关键性。
决定该道具对游戏剧情的发展是否具有关键性,比如说任务物品。此项设定可以避免玩家手误将其销毁或是丢弃。
Stack Size – 堆数量。
当该道具出现在游戏中时,它所具有数量。比如说,一般的,护甲和普通武器都设定为1;而箭矢则可以设定为50。
Stolen – 赃物。
该道具是否是盗窃所得。在游戏中,只有黑市买主才会收购赃物。默认设定是“否”。
3.Blueprint
蓝本
编辑器如何定位这些道具。
Comment – 注释。
关于道具的简要信息。这些信息是不会在游戏中向玩家显示出来的。
TemplateResref – 模版引用。
该实例引用自何种蓝本,这是在模组中放置实例的关键。每一个道具都必须有自己的模版引用。
4.General
概要
如何分类及描述该道具。
Classification – 分类。
在编辑器中是如何引用该道具的。
LocalizedDescription – 局部描述。
道具的基本信息,通常用于普通道具以及尚未被鉴定的道具。
LocalizedDescription(when identified) – 局部描述(鉴定后)。
道具被鉴定之后的信息。
LocalizedName – 局部名称。
道具的名称。
ResourceName – 资源名。
写入硬盘上时的文件名称,也就是该道具文件的文件名。
Tag – 标签。
在蓝本中引用道具时所依据的名称。[提示: 标签名、资源名、以及模版引用的名称一般都为了简便而成为相同。]一般来说,将标签名最好是独一无二的,这不像引用名,两个道具可以有相同的引用名。
5.Misc
这是关于UV卷动的设定,用来决定该道具的材质在U和V两个方向上各自的滚动速度。
比如说,给水元素或是熔岩加上流动效果。
6.Scripts
脚本
除了常规脚本之外,该道具的附带脚本。
比如说,当你拿起一个宝石袋的时候,可以触发一个脚本来让宝石的主人对你展开攻击。
7.Statistics
统计信息
设定道具的材料属性。
DamageReductions – 伤害减免。
设定该道具的伤害减免。注意,不是道具所有者的伤害承受减免,而是道具本身的损耗承受减免。
Material – 材料。
道具本身的材料,一般都用来关联护甲和武器,以决定它们对何种野怪能产生最大效果,反之亦然。比如说,除了炼金制的银质武器之外,变狼狂对其他武器都具有抗性。
现在所有的名词都大体做了解释,你已经具备了创建道具的基础了。
创建一个不可装备型道具
我们要创建的第一个道具是一件不可装备型道具—Pitney Lannon的1363年的丰收蜂蜜酒。按照上述的步骤创建新的道具,然后就可以开始丰富具体设定了。
在建立新物品的时候,同时设定好他们的局部名称,以及资源名/标签名/引用名。当设定好上述条目之后,我们就能在道具列表里看到它了。
当名称和类型引用设定完毕之后,我们需要设定该道具的“基本类型”(在Behavior区域中)。在本例中,由于蜂蜜酒是一件体积小、而又不含特定属性的不可装备物品,所以我们需要把它设定为“混杂的小类别” “Miscellaneous Small Object” 。(这是由baseitems.2da文件所提供的现有基本类型) – 在基本类别区的下拉菜单中选择该条目,并按下回车来确认。
进阶说明:2da
文件
2da是二维阵列的意思“2dimensional array”。2da文件在《无冬之夜2》中用来存放游戏中的各种要素,包括魔法、角色类型和专长。2da文件被放置在Data文件夹中。baseitems.2da文件中指定了很多不同种类道具的各项基本参数。每一行是一个条目,每一列是一个区域。比如说,所有的巨剑(greatswords)都共享baseitems.2da文件中的同一行。他们具有相同规模的基本伤害值,都是双手武器,从同一个选项设定中采用武器模型,诸如此类。药剂、戒指、弯刀等等,均与此类似。他们在baseitems.2da文件中都有自己的专用条目。
当道具的这些主要部分设定完毕后,唯一剩下的就是给道具选用图标了 (选择图标选区会弹出一个下拉菜单,就像基本类型的设定选区一样)。按照需求给Plot选区赋值(将蜂蜜酒设定为不可掉落或不可毁坏是不必要的,因此保留默认的“否”值,也就是“False”)。之后别忘了在该道具的局部描述区编写一段描述文本。
不妨给该道具设定些更多的参数 (比如说实践一下如何给一个道具添加一些附带属性,这些属性可以使它们呆在背包中时为你附加效果),打开道具属性(Item Properties)标签,给它添加些特殊属性。
在可选属性(Available Properties)中浏览技能奖励(Skill Bonus)选区,将其打开,找到专注技能(Concentration)。点选添加属性按钮(Add Property)将该属性添加给道具,然后设定数值(Cost Value)(在本例中,即是专注技能的增益点数)为+2,然后点击OK确认选区的更改。
最后,为了使该增益效果可以显示给玩家 (介于该道具不能被装备),将“道具属性激活偏好”(Item Property Activation Preference)设定为ITEMPROP_ACTIVE_REPOSITORY_ONLY,这会使得该道具的增益属性当且仅当道具被放置在背包中的时候才会被激活。
到了这一步,该道具已经完全被放置在模组中了。
创建可装备型道具–
武器
我们已经给该模组创建了一个不可装备型道具,现在是时候创建一套可装备型道具了:一件武器,和一件护甲。说到武器,Pitney Lannon正好就有一支相当不错的铁棒,足以应对那些恼人的怪物了。也许他自己没有亲自上阵的胆识,但不妨碍他将武器交给身强力壮、血气方刚的玩家……
创建一个武器的过程 (在本例中是Lannon的 Reptile Bane Cudge)十分简单,按照普通的步骤创建新的模组-特定道具(右键单击“Items”, Create Blueprint -> Module)。就像创建不可装备型道具一样,首先需要设定道具名称和引用名。
当名称和引用名设定好后,找到基本道具区,从列表中选择一个可装备型道具类型(在本例中选择棍Club)。由于棍这个基础类型是一种武器,因此将存在一个可视模型可供你选择。[注:对大部分可装备型道具来说皆是如此,但并非所有的都这样 – 杖、珠宝和戒指等道具就没有可视模型可供选择]。找到外观区域Appearance area
在模型组件选区Model Part fields
设定您想要的模型编号。[不同的基础道具具有不同数量的可选模型和模型种类,其中有一些还具有可互换的模型种类—更换刀柄、刀刃、以及剑柄等组件]。要想知道哪个模型(或模型组件)看起来最完美,您最好每次更换一下模型组件的值,并且在属性“Properties” 和预览“Preview”之间不断的切换,以观察更换效果。[注:如果在预览界面中出现了黑色的感叹号,说明不存在与您所设定的模型编号相对应的模型。]
以爬虫杀手短棍Reptile Bane Cudgel为例,在第一个模型组件区域键入“2”,将会选定第二个可用的短棍模型(铁质)。您可以通过点击窗口上方的预览按钮来查看该模型,而且可以使用鼠标滚轮来进行放缩,Ctrl+右键点击来转动模型, Ctrl+中键点击来移动视角。[注:在顶部的工具栏中必须打开预览选项,否则预览窗中不会显示任何模型。]
当短棍正确显示之后,打开外观区着色迷你菜单。三个着色设定将会出现,点击其中的一个打开颜色编辑面板。
颜色编辑面板是用来给模型上色的,您可以手动在左侧的调色板上点选色样,也可以从右侧选择现有的样色名称(样色名称会在您把鼠标停留在色块上时显示出来)。首次上色时选用比较鲜艳的颜色是比较有用的,(比如说大红、纯绿、或纯蓝),这样当您在属性和预览界面之间来回切换的时候,各个颜色从属于模型的哪个部分就会显而易见。在短棍模型2的例子中,模型着色1是用来控制棍体的颜色的,第二项着色是控制握柄的颜色的,第三项着色则决定缠布的颜色。在本例中,我们使用样色来为爬虫杀手短棍上色:着色1采用深冷棕色;着色2采用中冷棕色;着色3采用深豆绿色。当着色设定完毕后,在预览窗中观察着色效果。
当棍棒的外观设定好之后,参照不可装备型道具的设定步骤对其剩余部分进行设定—设定图标 (it_wu_clubpoison),编写一段描述,并设定好必要的道具属性。
对爬虫杀手短棍来说,为它设定对爬虫类敌人的伤害加成是很重要的,这样才名副其实。点击道具属性选区,选择“种群伤害加成”Attack Bonus vs. Racial Group技能,向下拉动滚动条,在列表中选择爬虫种族Reptilian,并将加成点数设定为+3。为了将武器进一步强化,下拉至伤害加成“Enhancement Bonus”选项,并将值设定为+1。[注:您可以按照同样的办法为武器赋予多种强化效果。]
当道具的属性设定好之后,下拉至统计表Statistics,将材质选区设定为金属(铁质):对这把特定的武器来说不是很重要,但一般来说最好对每一样武器的材质都进行设定,以备您需要对某样道具加以区分。某些特定的材质还附带特殊效果,比如说冰铁Cold Iron(对魔鬼有伤害加成)或者黑铁Darksteel(附带+1的闪电伤害),这对许多道具类型来说都可能是有价值的。
当这些参数设定好之后,这件武器就可以使用了。
创建可装备型道具 - 护甲
在我们完成创建一份可装备的武器之后,就只需要学习很少的一些必要步骤来制作一件护甲了。Pitney的护甲就是个不错的范例,借助它我们可以了解如何用强化效果来使护甲属性更加完备,并进一步为其附带一定的魔法效果。
创建一件护甲的步骤与创建一件标准的可装备型道具是相同的:创建蓝本,设定道具名称和引用名,将基础道具类型设定为“护甲”armor。当基础道具类型设定完之后,再将护甲类型条目设定为您想要的类型。(在本例中,Pitney只是一位乡村民兵,因此棉甲就比较合适)。当护甲类型设定完毕之后,下方灰色护甲核算 ArmorRulesInfo区域便会更新,并显示该类型的护甲核算规则。
当护甲类型设定完毕之后,在蓝本菜单最右侧选取护甲设定标签“Armor Set”,这将会帮助您设定护甲的外观。[注:用于进行护甲设定的人物模型是一名男性。大部分护甲在不同种族和性别之间的外观是一致的,有些护甲在用于不同种族和性别之间时则会看起来不一样。]
与预览窗中一样,在护甲设定窗中进行打量和预览靠的也是鼠标中键和Ctrl的组合:滚轮控制放缩,Ctrl+中键控制模型转动;中键拖曳移动模型。值得一提的是,当使用护甲设定工具时,关闭窗口顶端工具栏中的预览选项十分重要:护甲设定工具不管怎样都能工作,但关掉预览选项可以避免当护甲设定产生变更时,预览窗口由于更新现实而造成护甲的闪烁。
进阶说明: 非典型护甲
护甲的外观和护甲的实际性质是可以不同的。我们可以让一件看起来象布甲的护甲具有板甲的性质。这在护甲创建中是个可选的方案,作为护甲创建工作者有必要知道这一点。
根据本例的初衷,我们从护甲设定标签中主类型列表里选择棉甲,并选择子类型0。
创建一件护甲的第二个步骤是考虑给他安装附件。在护甲设定标签的右下角是一个卷动菜单,里面列举了护甲的每一个附件槽,以供用户们选择自己喜欢的附件,放到自己喜欢的位置上去。[注:就像刚才提到的,护甲的外观和护甲的属性并非必须严格对应,因此我们可以将任何组件安装到任何基础护甲上去,而并不会影响其属性。]想要安装一个附件,只需要卷动列表,选定所需的附件位置(比如说:左腿),打开下拉菜单(这将会列出该位置可用的模型),并选择想要的组件。
对于Pitney的护甲来说,由于与军用护甲相比略显业余,因此为它增添了较厚的皮制护肩(左肩:7,右肩:3),由于磨损而造成的左右侧不对称(右腕:21,左臂:18,左膝:3,右膝:4),以及对称的腿甲用于保护他的大腿(左右腿均设定为:18)。
在护甲基本设定完成后,你还可以给它附带装备附件gear attachments。装备附件是不直接附着在护甲本体上的附件:比如说头盔、箭袋、手套、披风、靴子等。装备附件就在主类型设定的下方,点击打开装备附件列表,选择“革制”(Leather),并且选择我们想要的子类型(model#3)。剩余的工作照此办理,我们不难将护甲的外观设计的独一无二、与众不同。
当所有的附件都安置完毕之后,我们就可以开始给护甲着色了。在每一部分(主体、附件、基色)的旁边,都有三个色块用来控制个部分的上色,按照由主到次的顺序排列(第一个颜色控制大部分面积的着色,剩下的两个作为次要部分控制控制细节)。上色的时候,点击某个色块,并在色彩编辑窗中选择想要的颜色(这是与武器上色步骤完全相同的)。
尽管基本护甲只能选用列出的后两个颜色,但将其临时设定给三个色块也是可能的:这是利用了“应用到所有”(Apply To All)这一按钮的功能,该按钮就位于主护甲着色按钮之下。”Apply To All”可以自动的将当前护甲主配色指派给护甲的所有附件,因此没有必要为各个配件逐一设定颜色,除非你另有设计打算。
就拿Pitney的护甲举例来说,如果主配色备设定为(按照显示顺序)淡棕色、暗橙黄、深橙黄,那么该配色只会显示到主护甲上;但如果按下了按钮,那么该配色方案将会应用到所有的护甲附件上。[注:装备附件不在应用范围内,它们是单独上色的]。下面的两幅图演示了在按下“Apply to All”按钮之前(左图)和之后(右图)顶端的基本配色方案应用到所有护甲附件上的过程。]
当所有的附件和装备都已设定完毕并基本着色之后,返回属性“Properties”标签,完成收尾工作:
设定图标(例如it_al_padded04)
材质类型(由于是棉甲,故保留“非特定”Non-Specific)
以及其他必要的属性设定。
根据本例的要求:Pitney曾经在打赌中胜了Tarmas,于是这位本地巫师十分不情愿的为该道具附了两个小魔法-道具属性应该将这一点反映出来。打开道具属性菜单,在可选的属性菜单中打开“奖励专长Bonus Feat”选区,并选择坚韧Toughness专长,-这是可以附加在道具中的、可被玩家利用的多种专长之一。除此之外,下拉到“施放魔法”选区,选择“光明Light”魔法,并将使用上限设定为每天一次。如果玩家想要施放该魔法,他们可以将该道具装备到身上,并通过打开道具栏中该道具的属性菜单来使用它。或者您也可以利用道具属性激活偏好Item Property Activation Preference将其设定为不需要装配就能使用。
当护甲的属性设定完毕之后,保存一下设定-该护甲就可以被放置到模组中并加以使用了。
小结
尽管第一次见到道具蓝本繁杂的设定选区时会令人望而生畏,但立即学会创建所有种类的道具-不管是稀松平常的,还是非同寻常的-却并非难事,这无疑将大大丰富我们的游戏模组。现在您已经完成了这部分的学习,您应该知道:
1. 道具中可以设定的几种属性。
2. 如何创建新的可装备型和不可装备型模型。
3. 如何自定义特定的武器和护甲的外观。 做个标记慢慢看
这么细致的文章
楼主辛苦了
页:
[1]