设计教程

DesignTutorial
已经玩腻了别人的地图?又或者是觉得别人的地图不够好玩?超级马里奥之未知世界(以下简称SMX)已经为你提供了一个简洁易用的编辑器,快来把自己的创意变成地图吧。
世界编辑器(以下简称WE)是SMX附带的,用于制作、编辑SMX地图的工具。与其他同类游戏的编辑器不同的是,WE容易上手,使用方便,即便对游戏原理不是很了解的玩家也能使用它来设计出SMX地图。
WE主界面主要分为标题栏,菜单栏,工具栏,单位栏,编辑区域,属性栏,状态栏几个部分。
菜单栏提供了基本的操作命令。

文件菜单

  • 新建:建立一个新场景
  • 打开:打开一个现有文件
  • 保存:保存当前打开的文件
  • 另存为:将当前打开的文件保存为一个新文件
  • 整理场景:整理当前正在编辑的场景
  • 测试场景:使用SMX打开当前场景进行测试
  • 生成xmap文件:把当前正在编辑的文件导出为SMX可识别的地图文件(xmap)
  • 退出:退出WE

编辑菜单

  • 剪切:将当前选中对象移动到剪切板中
  • 复制:将当前选中对象复制到剪切板中
  • 粘贴:将剪切板中的对象移动到当前场景中
  • 粘贴属性:将剪切板中存在对象的属性复制到当前选中的相同类型的对象中
  • 自动寻找起始点:将当前场景的起始点设置为让SMX自动寻找
  • 置于最上层:将当前选中对象置于最前方(注:该操作所做改变无法被保存)
  • 置于最下层:将当前选中对象置于最后方(注:该操作所做改变无法被保存)
  • 显示网格:决定编辑区域是否显示网格
  • 按网格移动:决定移动对象时是否对齐到网格
  • 锁定单位位置:决定对象能否移动

视图菜单

  • 切换到{地面,平台,背景,流体,设施,敌人,控件,通关}面板:将单位面板切换为{地面,平台,背景,流体,设施,敌人,控件,通关}面板
  • 总在最上层:将WE主窗口设置为总是显示在屏幕最前方

事件菜单

  • {事件}:编辑/修改该事件触发时要执行的脚本

工具菜单

  • 单位数目统计:统计当前场景中所有类型单位的数目
  • 世界地图封装程序:将多个xscn文件合并为一个xmap文件
  • 设置:对WE进行设置

帮助菜单

  • 关于:显示WE的版本,版权信息
工具栏提供对于常用命令的快速访问。
  • 新建:建立一个新场景
  • 打开:打开一个现有文件
  • 保存:保存当前打开的文件
  • 剪切:将当前选中对象移动到剪切板中
  • 复制:将当前选中对象复制到剪切板中
  • 粘贴:将剪切板中的对象移动到当前场景中
  • 粘贴属性:将剪切板中存在对象的属性复制到当前选中的相同类型的对象中
  • 置于最上层:将当前选中对象置于最前方(注:该操作所做改变无法被保存)
  • 置于最下层:将当前选中对象置于最后方(注:该操作所做改变无法被保存)
  • 按网格移动:决定移动对象时是否对齐到网格
  • 锁定单位位置:决定对象能否移动
  • 单位数目统计:统计当前场景中所有类型单位的数目
编辑区域用于编辑当前的场景。
周围的按钮用于改变场景的尺寸。
单位栏提供了所有的游戏单位。
  • 指针:使用指针
  • 当前类型:切换到类别选择页
  • {单位类别}:选择要使用的单位类型
  • {单位}:将单位作为当前使用单位
  • {↑,↓}:滚动列表
属性栏列出了选定对象的属性。

列表左侧显示的是属性名,右侧显示的是属性值。
  • {↑,↓}:滚动列表
状态栏显示编辑状态、当前单位的尺寸等状态信息
该部分主要介绍单位的添加、调整、删除,属性的编辑以及地图封装等制作地图不可缺少的操作。

添加对象

点击[当前类型]按钮,然后选择要添加的单位的类型,然后选择要添加的单位。选好范围起点,然后在起点处按下鼠标左键并拖动直到尺寸合适时松开按键。

调整对象

单击选中要进行调整的对象,如果右下角出现了尺寸调节按钮组则表示对象为可变尺寸单位,这个时候可以通过这些按钮来改变对象的尺寸,右下角的按钮为“+”表示增加对象的尺寸,为“-”表示减小对象的尺寸。移动对象则是直接将对象进行拖动。

删除对象

单击选中要删除的对象,点击菜单命令[编辑]->[删除]即可。

通过修改属性,我们可以创建出具有不同性质的对象。

点击属性行,如果属性值列变为可编辑控件则表示该属性可修改,这时就可以对属性进行修改了。

通过封装地图操作,我们可以把自己制作的一个或多个场景合并为一个地图。

封装单独的场景文件

点击菜单命令[文件]->[生成xmap文件],并且输入地图文件名即可。

使用地图封装程序封装多个场景

点击菜单命令[工具]->[世界地图封装程序]可以打开地图封装程序。
地图封装程序允许你将多个场景文件封装为一个地图文件。

工具栏介绍

  • 打开场景列表:打开一个现有的列表文件
  • 保存场景列表:将当前打开的列表文件保存为一个新文件
  • 添加场景:添加一个或多个新的场景到当前的地图列表中
  • 删除场景:从当前的地图列表中删除一个场景
  • 清空场景列表:删除当前地图列表中的所有场景
  • 上移场景:将当前选中场景向前移动
  • 下移场景:将当前选中场景向后移动

改变场景类型

从场景列表中选择要改变类型的场景,单击场景列表右上方的[主线关卡]复选框切换场景的类型。
非主线关卡指只能通过水管连接或者脚本进入的场景。

封装地图

填写完地图信息之后,点击封装地图按钮并且输入地图文件名即可。

此部分将介绍SMX的8种基本单位类型。
地面单位为4面不可穿越单位。用于实现游戏场景中的地面。
平台单位为左下右可穿越单位。用于实现游戏场景中的平台。
背景单位(桥除外)基本为4面可穿越单位。用于装饰游戏场景,部分单位也具有交互功能。

蔓藤(样式2)单位可用于创建一个可攀爬的蔓藤。 具体的属性设置如下:

对象类型 属性
蔓藤 Climbable True

流体单位为4面可穿越单位。用于实现游戏中的水,岩浆等。

深水区(扩展)单位用于创建一个自动扩展的深水区,游戏创建场景时该区域会自动向左下右三个方向扩展直到达到场景边界。
瀑布单位用于创建一个具有动态效果的瀑布,创建出的瀑布区域处于背景层,因此不会对Mario的运动造成影响。

设施单位(金币除外)基本为4面不可穿越单位。用于实现游戏场景中的设施,部分单位具有交互功能,是游戏场景的核心组成部分。

砖块/问号方块可以同时包含金币以及道具。具体的属性设置如下:

对象类型 属性
砖块/问号方块 Goods <物品值>
砖块/问号方块 CoinsCount <数值>

砖块/问号方块可以包含不确定数量的金币。游戏会产生出一个包含1到最多金币数个金币的砖块/问号方块,具体的属性设置如下:

对象类型 属性
砖块/问号方块 CoinsCount -最多金币数

将砖块/问号方块与蔓藤(样式2)配合使用,可以设计出一个通过撞击方块而生长出来的蔓藤。首先添加好方块和蔓藤(蔓藤必须在方块的正上方),然后设置对象的属性。具体的属性设置如下:

对象类型 属性
砖块/问号方块 Goods 蔓藤
蔓藤 Climbable True&Hidden

讯息方块常用来给玩家提供提示信息。 具体的属性设置如下:

对象类型 属性
讯息方块 Information <字符串>
讯息方块 HitTimes {1,∞}
讯息方块 HideTime <数值>

水管的加入使得Mario可以快速地移动到另外一个地点。

点击属性行Destination,然后点击按钮"…"即可打开水管连接界面。
第一行显示的是源水管所在的场景以及水管的ID、具体的名称。
下面部分则是连接目标的属性。
目标场景:可以选择连接到当前场景或者是外部场景,如果选择外部场景则必须在连接前将目标场景保存为.xescn文件。
连接位置:分为水管和坐标两种类型,如果选择了水管则必须在下面的水管列表框中选择目标水管,坐标又分为两种类型,如果选择了特定坐标则必须在下面的坐标文本框中输入连接目的地的具体坐标,如果选择了初始位置那么游戏会将连接目的地设置为目的场景的起始点。

特别的,将连接目标水管设定为源水管可以启用水管的喷射功能。

用于实现游戏场景中的敌人,同样也是游戏场景的核心组成部分。
SMX中水管里钻出的食人花还有炮台的设定与原作有较大的不同,主要体现在Mario站在上面这些敌人依然处于活动状态,要使用接近原作的设定可以对它们的属性进行设置。

对于水管,具体的属性设置如下:

对象类型 属性
水管 Trap {敌人}(普通)

对于炮弹发射台,具体的属性设置如下:

对象类型 属性
炮弹发射台 ShootCondition 普通

控件单位主要包括了标签,图片框以及脚本区域。

标签用于向场景加入自定义的文本。
添加一个标签之后,点击右键进入编辑状态,此时可以对标签内容进行编辑,编辑完成后按回车键退出编辑状态。

图片框用于向场景加入自定义的图片。
添加一个图片框之后,点击右键插入选择要插入的图片,点击中键可以让图片框自动调整大小以适合图片。

脚本区域则用于实现一些高级的交互功能,脚本的使用方法请参见下面章节“使用脚本”部分。

用于对游戏进程进行控制。

起始点指定了场景载入时Mario所在的位置。

如果场景长度较长或者难度较大则可以加入复活点来降低通关难度。
当Mario经过复活点指定的区域时,该复活点会自动激活并且将指定区域的左下角作为复活点。如果Mario在接下来的游戏进程中死亡的话可以从复活点继续游戏(前提是剩余生命数>0)。

旗杆和城堡则需要配合脚本的使用来实现对游戏的控制,脚本的使用方法请参见下面章节“使用脚本”部分。

该部分将对SMX的常用脚本进行介绍。

使用脚本功能,我们可以让SMX在某些时候执行一系列我们预先定义好的动作。
添加一个ScriptArea控件,在其上方单击右键,进入脚本编辑窗口。

新版的SMX提供了两种脚本编辑模式。
选择模式主要提供给对SMX的脚本不是很熟悉的地图设计者使用。
编写模式主要提供给对SMX的脚本有一定了解的地图设计者使用,该模式更加灵活,但是对设计者的能力要求也更高。

在选择模式下

添加语句

打开脚本编辑界面后,点击"//click this item to add a new line."后,在下面的两个选择框中依次选择脚本类型以及具体的功能函数,如果需要输入参数则在下面的参数文本框中输入,对于某些参数可以点击文本框右边的按钮来选择,完成后即可添加一个语句。

修改语句

单击选择要修改的语句,然后在修改选择框或者参数文本框中的内容。

删除语句

单击选择要删除的语句,然后点击"删除"按钮。

在编写模式下 对代码的操作只需在编辑框中修改。

点击"确定"按钮完成对脚本的编辑。

编写中...
该部分将对SMX的各种事件进行介绍。

当部分事件被触发时,SMX可以执行预先编写好的事件处理脚本。

点击"事件"菜单中的具体事件,打开脚本编辑界面。此时脚本编辑窗口里编辑的脚本就是针对该事件的处理脚本。

FirstCreated事件

应用于 触发条件
Scene 对象第一次被创建

Created事件

应用于 触发条件
Scene 对象被创建

Appear事件

应用于 触发条件
MessageBox 对象显示

Jump事件

应用于 触发条件
Mario Mario跳跃

SpeedUp事件

应用于 触发条件
Mario Mario加速

SlowDown事件

应用于 触发条件
Mario Mario减速

GotHurt事件

应用于 触发条件
Mario Mario受伤

Died事件

应用于 触发条件
Mario,Enemy,Boss,AllBosses 对象死亡
在制作完场景之后,我们还必须对其进行测试来发现与排除场景中的错误。

点击菜单命令[文件]->[测试场景],程序会自动使用SMX打开场景。

该部分主要测试场景是否能正常打开,以及设计是否正确,能否正常通关。

设计的正确性包括对象的属性设置是否正确,脚本能否正确执行等。因此测试时最好能保证对每一条分支线路,每一处小的设计都进行测试。

通过修改起始点,我们可以将一个大场景分成多部分进行测试。在测试前往场景中添加一些辅助设施或者辅助脚本可以提高测试效率,比方说添加Unit.CreateGoods(InvincibleStar)使Mario处于无敌状态,当然在过关可能性测试中就不能使用这类脚本。另外有一点不能忘记的就是测试完成后必须将这些修改撤销。

封装完地图之后,同样使用SMX打开地图进行测试。

该部分主要测试场景间的连接是否正确,场景间的跳转是否能正常运作。

同样地,我们可以在测试前对场景进行一些修改来让测试更有效率。

SMX的地图调试主要使用原因排除法。

在发现错误时,地图设计者可以从错误的发现地点以及其他的线索着手,通过分析来找出错误的原因。
如果无法找出原因,则从一般原理或者前提出发,假设所有出错的原因,排除不可能正确的假设,最后推导出结论。
当然,不排除游戏本身的bug导致了测试地图中发生错误。

在进入某个特定地点时发生错误,则应检查该处是否包含了错误的设计或者脚本。
如果进入场景时发生错误,那么问题还可能出现在场景的属性参数以及Scene_FirstCreated(),Scene_Created()事件中。

成功地排除了错误之后,应回忆一下其他地方是否出现了同样的错误,同时也因考虑甚至重新测试一下本次的修改是否引入了新的错误。