MC Studio下载

1. 基本介绍

逻辑编辑器用于编写Mod的关卡流程、物品使用效果、玩家和生物技能、生物AI等内容。当通过修改JSON和编辑器配置项无法达到目的时,就可以考虑用逻辑编辑器来实现自己想要的游戏功能了。需要说明的是,逻辑编辑器不要求有编程能力,适合于入门开发者,适用于逻辑不是特别复杂的组件。

进入逻辑编辑器的方式:

a.进入编辑器后,如果当前显示的为地图编辑器,那么点击左上角图标,会显示其他编辑器列表,选择其中的“关卡编辑器”,如下图:

img

b.选择“逻辑编辑”分页,进入逻辑编辑器,如下图:

img

逻辑编辑器的界面构成如下:

img

下面简单介绍各个界面的作用:

a.菜单栏:我们编辑的逻辑保存成后缀为.ets的文件(注意:文件名只能由英文字母和数字构成)。“文件”菜单可以进行通用的文件操作;“窗口”可以设置编辑器不同窗口的可见性;“帮助”中可以查看示例。

b.快捷操作栏:一些常见的文件操作、节点操作选项放置在这里。

c.节点编辑区域:在这里放置和连接逻辑节点,是我们主要的操作区域。

d.节点属性:在节点编辑区域单击选择某个节点时,会在这里显示该节点的属性(可编辑),部分节点没有编辑项。

e.查找节点:当节点图非常庞大时,如果想快速定位到某个节点,可以输入节点名字进行搜索,单击搜索结果即可快速定位到目标节点。在初期我们暂时用不到这个功能。

f.宏:宏可以用于封装一些可以重复使用的节点图,初期暂时用不到这个功能,在后面进阶知识里会对宏进行详细介绍。

逻辑编辑器中最基本的单位是“节点”,每个节点会实现一个功能,通过组合这些节点,就能够实现复杂的功能。

在节点编辑区域右键单击,就可以在弹出的菜单中选择不同的节点。如下图所示:

img

当把节点放入编辑区域后,有两种方式连接节点:

a.直接把节点拖到另外一个节点上,它们会自动咬合在一起(不适用于上一个节点有两个输出端口的情况)。如下图所示:

img

b.鼠标放在上一个节点的输出端口上,然后按住,拖到下一个节点的输入端口上,当连线变绿时,松开鼠标。如下面两张图所示:

鼠标在上一个节点的输出端口按住:

img

拖到下一个节点的输入端口,连线变绿后松开鼠标:

img

游戏逻辑会按照节点的连接顺序依次执行,下面我们制作一个最简单的逻辑节点图。

2. 快速开始

在这里我们制作一个玩家一击必杀的功能,这个功能让玩家只需攻击生物一次就能杀死生物。

我们把这个功能拆解为这样的流程:当玩家攻击生物时->杀死这个生物。下面按这个流程逐步介绍。

在编辑区域,在右键菜单中依次选择 事件节点->生物事件->生物受伤。

img

这个节点的意思是,当实体受到其他实体的伤害时(玩家也是一种实体),就会触发这个节点,并执行后续的逻辑。

其中绿色背景的方框表示这个地方会输出变量,这些变量可以在接下来的节点中用到。在方框内填入变量名,变量名可以随意填写,但在同一个ets文件内不可以重复,选择有意义的名称是一个好习惯。填入变量名后,节点变成下面这样:

img

接下来在右键菜单中依次选择 行为节点->生物->杀死指定生物,并且把这个节点和前一个节点连接起来。

img

这个灰色带一个下拉箭头的方框表示这里需要指定一个变量:

img

点击下拉按钮:

img

下拉列表中会显示当前已经有的实体变量名,选择“entity1”,节点图就变成了下面这样:

img

这样就完成了我们第一个简单的逻辑。

由于“entity2”、“damage”这两个变量名没有用到,所以在第一个事件节点里也可以不定义这两个变量名。

接下来把这个逻辑挂接到游戏里。

首先保存这个逻辑文件,命名为“test1.ets”,保存的路径采用默认路径即可。由于这个逻辑和玩家关联比较大,那么我们把这个逻辑挂接在玩家下面。在关卡编辑器中,选择玩家模板:

img

在玩家属性“逻辑”配置项中,点击替换逻辑文件按钮(下图中红色箭头指向的按钮),在弹出的窗口中点击按钮 “选择文件”,选择我们刚才保存的“test1.ets”。

img

img

这样我们制作的逻辑在游戏运行时就能够生效了。点击关卡编辑器右上角的“运行”按钮,在游戏里实际测试一下。

下面我们让这个逻辑变得稍微复杂一点,攻击伤害大于0时才会杀死生物,当杀死生物后,给玩家一块面包。

将另外三个节点加入节点图:

逻辑节点->关系运算->是否大于;

逻辑节点->控制节点->条件节点;

行为节点->指令->输入指令;

然后按下面的方式连接:

img

这个连接中比较特别的是靛蓝色背景的0。在输入框中直接键盘输入0,就得到了截图所示的结果。靛蓝色背景表示这是一个常量,常量的值就是输入的值(截图中就是0)。不过需要注意的是,数字和文本类型的输入框这样输入才会有效。

img

另外一个特别的输入框是下图这个:

img

灰色背景的输入框且没有下拉按钮,表示这里需要一个常量,可以在右侧的属性面板中输入常量。

img

上面这个逻辑存在的问题是,如果玩家受伤了,那么也会被杀死,因为玩家也是一种实体,玩家受伤时也会触发这个事件。使用玩家攻击事件节点可以避免这个问题,这个节点中只有玩家对实体造成伤害时才会触发。

img

到目前为止,已经介绍了逻辑编辑器的基本概念和操作,后面的章节会更深入的介绍逻辑编辑器中的概念和细节。

3. 详细说明

3.1 节点和连线模式

节点分为5大类:

a.事件节点:当某个事件发生时,会激活对应的事件节点,并顺序执行与事件节点相连的节点。

b.行为节点:这类型的节点最多,每个行为节点会对实体、方块、物品、界面等进行一定操作。

c.逻辑节点:关系判断、逻辑运算、流程控制相关的节点均放在这个大类下。

d.运算节点:目前支持简单的运算和三角函数。

e.参数节点:和常量、变量相关的节点均放在这个大类下。

熟悉节点后,可以通过右键菜单中的搜索快速获取节点。

img

节点的连线模式为:起始节点必须为事件节点,事件节点后连接一系列的其他节点。事件节点没有输入端口,且节点两侧为棕红色块,其他类型节点两侧为白色色块。

img

一个ets中可以有多个事件节点,他们之间互相独立。

事件节点中比较特别的一个节点是“世界定时刷新”,这个事件节点每秒均匀触发数次,需要定时执行的逻辑可以挂在这个事件节点下。需注意的是,如非必要,尽量少使用该节点,避免带来游戏卡顿。

除了已经定制好的事件节点,还可以使用自定义事件来更好的组织节点图。这两个节点的位置为:事件节点->自定义事件->触发自定义事件;事件节点->自定义事件->监听自定义事件。

3.2 数据类型

在前面的例子中,已经提到节点的输入框有三种类型:输出变量,输入变量,常量。这些输入框中的变量或者常量有着多种数据类型,除了常见的数字、字符串、布尔值等类型,还包含了《我的世界》中特有的类型,下面对这些数据类型进行介绍:

a.布尔值

布尔值只有“真”“假”两种取值情况,关系判断、逻辑运算后产生的值都是布尔值。

b.整数

如-2、0、100等都是整数。

c.浮点数

非整数均用浮点数来表示(这是通俗的理解方式),大部分时候开发者无需关心游戏中的数字是整数还是浮点数。

d.字符串

游戏中玩家在聊天频道的发言、文字提示等都是字符串。

e.二维坐标

二维坐标的形式为(x, y),其中x/y均为数字。编辑器中的“拆分二维坐标”、“合并二维坐标”两个节点可以操作二维坐标。

f.三维坐标

三维坐标的形式为(x, y, z),其中x/y/z均为数字。编辑器中的“拆分三维坐标”、“合并三维坐标”两个节点可以操作三维坐标。在游戏中,玩家的位置就是三维坐标,因此节点中涉及到位置的变量均为三围坐标。

g.实体ID

实体(Entity)是《我的世界》中特有的概念,包括《我的世界》中所有动态的、移动中的对象。玩家、生物、船、经验球等都是实体。每个实体都有一个独一无二的ID。在节点中,涉及到玩家、生物、实体的变量,均是实体ID类型。

h.方块类型

方块类型包含了方块ID、数据值两部分。如白色羊毛方块,方块ID是35,数据值是0;红色羊毛方块,方块ID是35,数据值是14。编辑器中的“拆分方块类型数据”“合并方块类型数据”两个节点可以操作方块类型数据。大部分情况下,开发者可以直接通过弹窗选择方块类型,不用去关心具体的ID和数据值是多少。

i.物品类型

物品类型比较复杂,包含物品ID、数据值、数据版本3个值。《我的世界》原生物品的数据版本为0;对于Mod SDK第一版自定义物品,其数据值为自定义扩展值,数据版本为1;对于第二版自定义物品,其数据值为组件名字(ModID),数据版本为2。编辑器中的“拆分物品类型数据”“合并物品类型数据”两个节点可以操作物品类型数据。大部分情况下,开发者可以直接通过弹窗选择物品类型,不用去关心具体的ID和数据值、数据版本。

j.任意数据

部分输入框不限制数据类型,以上任何数据类型均可。

对于输入变量框,只有符合数据类型要求的变量才会显示;对于常量框,如果输入的变量不符合要求的数据类型,会自动转为满足要求的数据类型。大部分情况下,开发者根据节点提示就可知晓数据类型。

3.3 逻辑文件挂接

ets文件编辑好之后,需要通过一定的途径挂接到游戏中。挂接途径主要影响运行时机,例如世界相关的逻辑要求在世界创建完成后就开始运行,就不应该挂在生物上。此外,即使不同的挂接途径运行时机相同,也建议按内容分别挂接,便于管理和后续维护。

a.世界挂接ets文件

挂接在世界中的逻辑会在世界加载完成后开始运行,和世界相关的逻辑适合挂接在这下面。挂接入口:关卡编辑器->世界->配置面板->逻辑。

img

b.玩家挂接ets文件

挂接在玩家中的逻辑会在世界加载完成后开始运行,和玩家相关的逻辑适合挂接在这下面。挂接入口:关卡编辑器->玩家->配置面板->逻辑。

c.队伍挂接ets文件

挂接在队伍中的逻辑会在世界加载完成后开始运行,和队伍相关的逻辑适合挂接在这下面。挂接入口:关卡编辑器->队伍->配置面板->逻辑。

d.生物挂接ets文件

挂接在生物中的逻辑会在生物创建后开始运行,和该生物相关的逻辑适合挂接在这下面。挂接入口:关卡编辑器->生物->配置面板->逻辑。

需要注意的是每一个该类型的生物,都会执行挂接的逻辑。对于挂接在生物上的ets,可使用“获取当前实体ID”节点获取当前挂接的生物实体ID。

img

e.物品挂接ets文件

挂接在物品中的逻辑会在世界加载完成后开始运行,和物品相关的逻辑适合挂接在这下面。挂接入口在关卡编辑器->物品->配置面板->逻辑。

3.4 调试

挂接好节点图后,发现运行没反应或者效果和预期效果不同时,可以使用调试功能来定位问题。调试功能有两个界面入口:

如果要调试整个Mod,那么可以点击关卡编辑器的右上角的“运行”按钮。

如果要单独调试某个生物的逻辑,那么可以在关卡编辑器的“舞台”->“原有内容”或“新增内容”下的生物上右键点击,选择“调试”,就可以单独调试这个生物的逻辑。

img

通过上面两种方式开始调试后,切到逻辑编辑器页面,可以看到节点图上有运行动效,通过查看动效可以知道节点的运行顺序,如果运行到某个节点后动效卡住,说明逻辑跑到这个节点后卡住了,卡住的原因可能是因为不满足运行条件,也可能是因为配置错误,需要具体问题具体分析。

当我们的节点图比较复杂时,查看整个节点图的运行动效是一件效率比较低的事情。编辑器提供了调试特定逻辑片段的功能。在节点上点击右键,右键菜单中有“设为调试起始节点”“设为调试结束节点”两个选项。

img

分别将两个节点设为调试起始节点和调试结束节点后,调试时,就只会在这两个节点之间显示运行动效,这样就可以很快捷的定位问题了。调试起始节点和结束节点的左侧会有红色箭头标志。

img

有时候,我们想知道某个变量在运行时的值具体是多少,可以用“打印信息”节点来达到这一目的,信息会显示在关卡编辑器的“输出窗口”的“MC”分页下。

img

img

4. 进阶知识

4.1 临时变量和永久变量

(该部分内容为后续更新内容,当前版本暂无此功能,敬请期待)

如果要保存和传递数据,那么就需要用到临时变量和永久变量。临时变量和永久变量的区别在于,重启游戏后,临时变量会被清空,且临时变量不能跨ets传递数据,而永久变量重启游戏不会被清空,且可以跨ets使用。所以临时变量适用于单ets内传递数据,而永久变量适用于保存玩家的胜场数这样的数据。除了这两个区别外,临时变量和永久变量的使用方式非常相似,下面以临时变量为例来说明。

临时变量以键值对(key-value)的形式存在,键(key)一般为字符串,通过键(key)可以读取和设置对应的值(value)。临时变量有三个相关节点:“添加临时变量”,“读取临时变量”,“设置临时变量”。在使用“读取临时变量”、“设置临时变量”之前,需要先使用“添加临时变量”,添加键值对,可以在ets刚开始运行的位置做这件事情。

4.2宏

当节点图中有较多重复使用的功能时,可以把这部分功能做成宏,方便复用和修改。此外,如果是比较复杂的节点图,也可把每个功能块做成一个宏,这样主节点图的逻辑结构能够一目了然。下面截图中的“创建怪物”、“关卡进度判断”、“给予玩家奖励”都是宏。

img

下面介绍如何创建一个宏,实现把两个坐标相减得到一个新坐标的功能。

点击宏界面的“+”就可新建一个宏,宏初始有两个节点“输入”“输出”。

img

img

“输入”节点是宏的节点图的执行起点,连线必须从“输入”节点开始。在输入节点的属性面板中,点击蓝色加号可以配置宏需要的输入参数,这里我们设置两个需要相减的坐标点作为输入参数。

img

“输出”节点是宏的执行终点,连线必须终止于“输出”节点。点击蓝色加号设置宏的输出参数,这里我们设置相减后的坐标点作为输出参数。

img

连接好的节点图如下:

img

在其他的ets中,我们可以直接按住宏列表中的“坐标相减”拖到编辑区域,就可以生成一个宏节点。

img

4.3 节点执行顺序

当节点是依次顺序连接时,执行顺序就是连接顺序。但是当节点的连接出现分叉和汇聚的情况时,执行顺序就和直观判断不一样了。

以下面这个连接方式为例:

img

这个连接方式的实际执行顺序为:

A->B->D->E->A->C->D->E或者A->C->D->E->A->B->D->E。

和直观上的A->B\C并行执行->D->E的顺序有很大差异。这是因为节点图是按深度遍历的方式来确定执行顺序的。为了避免出现和预期执行顺序不符合的情况,建议都用顺序连接的方式来连接节点图,或者只出现连线分叉、不要出现连线汇聚。上面的例子可以修改为下面这样:

img

5. 参考资料

有如下方式能够帮助更好的使用逻辑编辑器:

a.逻辑编辑器“帮助”菜单下的“查看逻辑示例”,可查看一些小功能的示例。

img

b.单击选中节点时(节点的底色会变为蓝色),底部会显示该节点的说明。

img

如果想了解具体的输入框、输出框的信息,可以点击输入框或输出框,底部会显示相应的提示信息。

img

c.《我的世界》官方wiki:https://minecraft-zh.gamepedia.com/Minecraft_Wiki 在这里可以查询到我的世界中各种游戏元素的数据,如物品ID、实体类型等。