自定义关卡 - 创作说明

0 点赞
64.0
转载

你现在能够创建自己的关卡了! 这里将会指导你如何操作。 1 - 理解关卡的原理 本游戏是一个有关方块的游戏。 这些我们都清楚,但这些方块是如何生成的呢? 首先,我们需要理解游戏会如何读取关卡数据。 每个关卡都会以像这样的文本文件的形式来存储:

文件中的每一行都是一个命令,而命令的第一个参数是这条命令被执行的时间。 值得特别注意的是,这里的数值是指音轨的时间,而不一定是右上角显示的计时器时间。 举个例子: 第一行中,音轨开始播放4.34秒后,我们创建了一个坏人方块,从下方袭来,速度为50。 第二行中,音轨开始播放4.5秒后,我们创建了另一个坏人方块,从右侧袭来,速度50。 第三行中,音轨开始播放4.68秒后,我们创建了一个好人方块,从左侧跑来,速度50。 因此,用来生成方块的指令结构会像这样:

但是,第十行是什么意思呢?这里的【分离】是指什么意思呢? 还记得每个关卡都有独特的机制吗?这样的指令就是我们用来激活/关闭这些特殊模式用的。 【分离】听上去是不是有点熟悉呢?如果还想不起来的话,看看这个:

这行的意思是,在5.90秒处,激活【分割】机制。你应该知道这里的1表示激活,而0表示关闭。 用于激活/关闭特殊模式的指令结构非常简单:

现在除了标有【rotation】的那些行还有一些数字令人费解外,所有的指令看起来用途应该都显而易见了。 这里的1.2是用来告诉墙壁旋转多少次的。 教程的第一部分就此结束。 如果还有不明白的地方,请告诉我们! 2-关卡原理-第二部分 在教程的第一部分中,我们已经介绍了一些基本知识。但是,为了完全理解关卡的原理你还需要了解更多的信息。 连击与评级 关卡结束后会显示评级,依据玩家获得的最高连击数从C到A+不等。 这样的设定你会在关卡文件的开头部分设定:

每个评级旁边的数字用于设定获得对应评级所需达到的连击数。 举例说明: - 若玩家最高连击为1,则获得C级。 - 若玩家最高连击为100,获得B级。 - 若玩家最高连击为180,获得A级。 - 若玩家最高连击为286,获得A+级。 通常,玩家只有达成完美连击才能获得A+级评价,因此该连击数必须设定为所有好人和坏人数量的总和。 段落 关卡可划分为多个段落。 当新段落开始时,房间的背景颜色会切换。 当前段落的指令执行完毕后,游戏将切换到下一个段落。 下图展示了关卡文件的起始方式以及如何划分段落。

你可以看到,关卡文件开头部分是评级数据,而后你会看到头两个段落。 游戏执行指令的方式我们前文中已经介绍过。 但第17行处的【无操作】指令又是什么意思呢? 这里的【无操作】指令只有一个目的,将段落切换延迟到【无操作】指令插入的时间点。 本例中,第一个段落最后一个方块生成于2.82秒处,但游戏直到3.2秒的【无操作】指令处才切换到下一个段落。 如果我们不使用【无操作】指令,只要最后一个方块一生成,游戏就会立即切换段落,而背景颜色也会变化,然而此时上一个段落生成的最后一个方块却依然存活,这会造成问题。 因此,这一点非常重要:每个段落的最后一个指令都需要使用【无操作】指令。好啦,这部分教程介绍的内容已经相当多了。 如果有任何问题,欢迎告诉我们。 3 - 特殊指令 我们还增加了一些特殊指令让关卡变得更加有趣:

你注意到墙壁和玩家有时会出现某种脉动效果吗? 使用【脉动】指令,你可以开启/关闭这种效果。

你可能也会希望计时器中断计时,使用【计数】功能就可以进行控制。不过请记住关卡文件中使用的是音轨时间而非显示在右上角的计时器时间。

使用settimer可以直接设置指定的计时器时间。数值必须小于64,因为当计时达到63秒后,关卡就会完成。

也可以因此显示计时器,非常方便。

你也可以通过【信息】指令来插入想对玩家说的话,也可能是试玩你关卡的朋友。你必须指定信息显示的持续时长。方向刷新

你注意到每次尝试关卡时它并不是完全一样吗?因为我们使用指令【spawnrotation】旋转了方块袭来的方向。 这条指令能够通过增加一个旋转角度来改变方块袭来的方向。 指令格式如下所示:

- 如果使用数值(0、90、180、270),方块总会从邻接当前方向的位置袭来。 - 但你也可以通过设定下列数值使得旋转方向随机出现: 0 意味着不旋转角度,因此方块还会以原有方向袭来。 -1 意味着会随机选取0、90、180或270等角度中的随机一个,然后方块会依据选定角度从该方向袭来。 -2 意味着会随机选取0或180度,然后方块会从选定角度对应的方向袭来。 -3 意味着会随机选取0或270度,然后方块会从选定角度对应的方向袭来。 -4 意味着会随机选取0或90度,然后方块会从选定角度对应的方向袭来。 注意:使用【spawnrotation】会影响整个关卡,而非当前的段落。因此,如果只是想要旋转特定方块的方向,那么请在特定方块生成指令之后调用【spawnrotation】指令将其重置为0,以恢复默认方向。 同样,如果有任何问题欢迎询问我们。 4 - 使用游戏内置编辑器 感谢耐心阅读!终于到了最有意思的部分了。 编辑器的原理 基本上,编辑器实际等同于你在玩一个伴随着音轨播放却没有方块的空关卡。而你可以按想象中的关卡来玩游戏,而编辑器则会记录下来对应的按键并生成关卡文件,包含所有的指令,需要你重复创建时的操作才能完成。 使用编辑器前的设置 每个关卡长度为64秒,必须同64秒的音轨配对,因为结束关卡的指令依赖音轨长度。也就是说,创建关卡前必须有一首乐曲。没有乐曲,就无从创建关卡。 如果你使用Windows系统,那么前往【文档】文件夹,寻找一个名为【rebel rabbit】的文件夹,在文件夹下有一个名为【64.0】的文件夹。 如果你使用Mac系统,那么前往【用户/你的用户名】文件夹,寻找一个名为【rebel rabbit】的文件夹,在文件夹下有一个名为【64.0】的文件夹。 如果出于某种原因你没有找到这些文件夹,可以手动自己创建。

总之,这两个文件夹非常关键:editor 和 levels。 - levels 文件夹用来存放你创建的关卡文件,这样游戏就能正常载入它们以及对应的歌曲文件。 - editor 文件夹则是你使用内置编辑器自动生成的关卡。 为了使用内置的编辑器,请确保准备一首格式为.mp3 或.ogg 的音乐文件,并将其放入 editor/song 路径下。 Windows 系统中支持所有格式,而 Mac 系统下仅支持.ogg 格式。不过,我们仍在尝试支持.mp3 格式。如果您是 Mac 用户,请耐心等待我们的后续更新。

现在,你已经将歌曲放入了编辑器路径下,让我们打开内置编辑器。 使用内置编辑器 从主菜单进入自定义关卡菜单。

选左边打开编辑器。 打开编辑器后,游戏将会载入你放入editor文件夹的歌曲。此时游戏会冻结一小段时间,这是我们使用的mp3库导致的,暂时还没有找到避免这种情况出现的方法。:( 记录 正如我们之前提到的,在编辑器模式下播放音轨时,任何输入操作都会被记录。当按右侧时,编辑器会记录你按键的时间,进行一些计算后生成对应的指令,最终形成自动生成的关卡文件。 记录特别输入 你可以使用键盘或手柄来进行射击输入。无论是哪一种输入游戏都能正常记录。 然而,有一些特殊操作仅能使用键盘完成。 - 按下空格可以开始新的段落,在游戏中的效果即切换颜色。- 按1(键盘字母区上方的1,并非数字小键盘的1)来激活/关闭闪烁效果。 - 按2来激活/关闭分裂效果。 - 按3来激活/关闭旋转效果。 - 按4来激活/关闭区域效果。 - 按ESC离开编辑器,这样做会删除自动生成的关卡。 录音完成后的操作 当计时器满64秒后,自动生成的关卡文件会被保存到editor文件夹下,并以autolevel命名。

现在你就拥有自己的关卡了。 5 - 尝试自己的关卡 现在你拥有自制关卡了。恭喜! 当然,你有可能会希望将自己的关卡命名为“超厉害新关卡”之类的名字。 前往levels文件夹,并创建一个名为“超厉害新关卡”的文件夹。在新文件夹内,放入autolevel文件和对应的歌曲,并将其全部重命名为“超厉害关卡”。 类似这样:(记住你也可以使用.mp3文件)

以下是关键步骤: 1. 在关卡文件夹内,创建一个空文件夹,并命名为你希望创建的关卡名。 2. 将autolevel.json文件和你需要载入的乐曲复制到刚才创建的关卡文件夹内。 3. 将复制的autolevel.json文件重命名为与文件夹相同的名字。 注意:关卡文件夹、关卡文件(即重命名后的autolevel.json)和音轨必须使用相同名字,否则无法正常工作。

编辑自定义关卡 现在,我们可以为自动生成的关卡增加丰富的细节。 你需要准备一个文本编辑器,请不要使用Windows自带的记事本,那很容易导致一系列问题。 推荐使用写字板或者Sublime Text。 修改文件,保存文件,重新载入关卡。所有的改变会立即生效。 你可以增添、删除或者修改数值。它应该都能正常工作。然而,请注意这些字符“[,]”“{,}”,因为它们对文件格式很重要,注意不要随意修改它们导致文件格式错误。 基本上就是这些了。现在你已经可以玩你自己制作的关卡了:) 6 - 分享关卡 也许你会希望向全世界的玩家展示你制作的关卡有多棒。试着学习这里的指南来分享你自制的关卡吧: