

点击[当前类型]按钮,然后选择要添加的单位的类型,然后选择要添加的单位。选好范围起点,然后在起点处按下鼠标左键并拖动直到尺寸合适时松开按键。
单击选中要进行调整的对象,如果右下角出现了尺寸调节按钮组则表示对象为可变尺寸单位,这个时候可以通过这些按钮来改变对象的尺寸,右下角的按钮为“+”表示增加对象的尺寸,为“-”表示减小对象的尺寸。移动对象则是直接将对象进行拖动。
单击选中要删除的对象,点击菜单命令[编辑]->[删除]即可。
点击属性行,如果属性值列变为可编辑控件则表示该属性可修改,这时就可以对属性进行修改了。
点击菜单命令[文件]->[生成xmap文件],并且输入地图文件名即可。
点击菜单命令[工具]->[世界地图封装程序]可以打开地图封装程序。
地图封装程序允许你将多个场景文件封装为一个地图文件。
从场景列表中选择要改变类型的场景,单击场景列表右上方的[主线关卡]复选框切换场景的类型。
非主线关卡指只能通过水管连接或者脚本进入的场景。
填写完地图信息之后,点击封装地图按钮并且输入地图文件名即可。
蔓藤(样式2)单位可用于创建一个可攀爬的蔓藤。 具体的属性设置如下:
| 对象类型 | 属性 | 值 |
|---|---|---|
| 蔓藤 | Climbable | True |
深水区(扩展)单位用于创建一个自动扩展的深水区,游戏创建场景时该区域会自动向左下右三个方向扩展直到达到场景边界。
瀑布单位用于创建一个具有动态效果的瀑布,创建出的瀑布区域处于背景层,因此不会对Mario的运动造成影响。
砖块/问号方块可以同时包含金币以及道具。具体的属性设置如下:
| 对象类型 | 属性 | 值 |
|---|---|---|
| 砖块/问号方块 | Goods | <物品值> |
| 砖块/问号方块 | CoinsCount | <数值> |
砖块/问号方块可以包含不确定数量的金币。游戏会产生出一个包含1到最多金币数个金币的砖块/问号方块,具体的属性设置如下:
| 对象类型 | 属性 | 值 |
|---|---|---|
| 砖块/问号方块 | CoinsCount | -最多金币数 |
将砖块/问号方块与蔓藤(样式2)配合使用,可以设计出一个通过撞击方块而生长出来的蔓藤。首先添加好方块和蔓藤(蔓藤必须在方块的正上方),然后设置对象的属性。具体的属性设置如下:
| 对象类型 | 属性 | 值 |
|---|---|---|
| 砖块/问号方块 | Goods | 蔓藤 |
| 蔓藤 | Climbable | True&Hidden |
讯息方块常用来给玩家提供提示信息。 具体的属性设置如下:
| 对象类型 | 属性 | 值 |
|---|---|---|
| 讯息方块 | Information | <字符串> |
| 讯息方块 | HitTimes | {1,∞} |
| 讯息方块 | HideTime | <数值> |
水管的加入使得Mario可以快速地移动到另外一个地点。
点击属性行Destination,然后点击按钮"…"即可打开水管连接界面。
第一行显示的是源水管所在的场景以及水管的ID、具体的名称。
下面部分则是连接目标的属性。
目标场景:可以选择连接到当前场景或者是外部场景,如果选择外部场景则必须在连接前将目标场景保存为.xescn文件。
连接位置:分为水管和坐标两种类型,如果选择了水管则必须在下面的水管列表框中选择目标水管,坐标又分为两种类型,如果选择了特定坐标则必须在下面的坐标文本框中输入连接目的地的具体坐标,如果选择了初始位置那么游戏会将连接目的地设置为目的场景的起始点。
特别的,将连接目标水管设定为源水管可以启用水管的喷射功能。
对于水管,具体的属性设置如下:
| 对象类型 | 属性 | 值 |
|---|---|---|
| 水管 | Trap | {敌人}(普通) |
对于炮弹发射台,具体的属性设置如下:
| 对象类型 | 属性 | 值 |
|---|---|---|
| 炮弹发射台 | ShootCondition | 普通 |
标签用于向场景加入自定义的文本。
添加一个标签之后,点击右键进入编辑状态,此时可以对标签内容进行编辑,编辑完成后按回车键退出编辑状态。
图片框用于向场景加入自定义的图片。
添加一个图片框之后,点击右键插入选择要插入的图片,点击中键可以让图片框自动调整大小以适合图片。
脚本区域则用于实现一些高级的交互功能,脚本的使用方法请参见下面章节“使用脚本”部分。
起始点指定了场景载入时Mario所在的位置。
如果场景长度较长或者难度较大则可以加入复活点来降低通关难度。
当Mario经过复活点指定的区域时,该复活点会自动激活并且将指定区域的左下角作为复活点。如果Mario在接下来的游戏进程中死亡的话可以从复活点继续游戏(前提是剩余生命数>0)。
旗杆和城堡则需要配合脚本的使用来实现对游戏的控制,脚本的使用方法请参见下面章节“使用脚本”部分。
使用脚本功能,我们可以让SMX在某些时候执行一系列我们预先定义好的动作。
添加一个ScriptArea控件,在其上方单击右键,进入脚本编辑窗口。
新版的SMX提供了两种脚本编辑模式。
选择模式主要提供给对SMX的脚本不是很熟悉的地图设计者使用。
编写模式主要提供给对SMX的脚本有一定了解的地图设计者使用,该模式更加灵活,但是对设计者的能力要求也更高。
打开脚本编辑界面后,点击"//click this item to add a new line."后,在下面的两个选择框中依次选择脚本类型以及具体的功能函数,如果需要输入参数则在下面的参数文本框中输入,对于某些参数可以点击文本框右边的按钮来选择,完成后即可添加一个语句。
单击选择要修改的语句,然后在修改选择框或者参数文本框中的内容。
单击选择要删除的语句,然后点击"删除"按钮。
在编写模式下 对代码的操作只需在编辑框中修改。点击"确定"按钮完成对脚本的编辑。
| 应用于 | 触发条件 |
|---|---|
| Scene | 对象第一次被创建 |
| 应用于 | 触发条件 |
|---|---|
| Scene | 对象被创建 |
| 应用于 | 触发条件 |
|---|---|
| MessageBox | 对象显示 |
| 应用于 | 触发条件 |
|---|---|
| Mario | Mario跳跃 |
| 应用于 | 触发条件 |
|---|---|
| Mario | Mario加速 |
| 应用于 | 触发条件 |
|---|---|
| Mario | Mario减速 |
| 应用于 | 触发条件 |
|---|---|
| Mario | Mario受伤 |
| 应用于 | 触发条件 |
|---|---|
| Mario,Enemy,Boss,AllBosses | 对象死亡 |
点击菜单命令[文件]->[测试场景],程序会自动使用SMX打开场景。
该部分主要测试场景是否能正常打开,以及设计是否正确,能否正常通关。
设计的正确性包括对象的属性设置是否正确,脚本能否正确执行等。因此测试时最好能保证对每一条分支线路,每一处小的设计都进行测试。
通过修改起始点,我们可以将一个大场景分成多部分进行测试。在测试前往场景中添加一些辅助设施或者辅助脚本可以提高测试效率,比方说添加Unit.CreateGoods(InvincibleStar)使Mario处于无敌状态,当然在过关可能性测试中就不能使用这类脚本。另外有一点不能忘记的就是测试完成后必须将这些修改撤销。
封装完地图之后,同样使用SMX打开地图进行测试。
该部分主要测试场景间的连接是否正确,场景间的跳转是否能正常运作。
同样地,我们可以在测试前对场景进行一些修改来让测试更有效率。
SMX的地图调试主要使用原因排除法。
在发现错误时,地图设计者可以从错误的发现地点以及其他的线索着手,通过分析来找出错误的原因。
如果无法找出原因,则从一般原理或者前提出发,假设所有出错的原因,排除不可能正确的假设,最后推导出结论。
当然,不排除游戏本身的bug导致了测试地图中发生错误。
在进入某个特定地点时发生错误,则应检查该处是否包含了错误的设计或者脚本。
如果进入场景时发生错误,那么问题还可能出现在场景的属性参数以及Scene_FirstCreated(),Scene_Created()事件中。
成功地排除了错误之后,应回忆一下其他地方是否出现了同样的错误,同时也因考虑甚至重新测试一下本次的修改是否引入了新的错误。