嗨!大家好,我是小蚂蚁。
今天我们来聊聊如何做一个关卡编辑器。
关卡编辑器一直都是小蚂蚁游戏中的必备品,在做的所有关卡制的游戏中,我都增加了关卡编辑的功能。
精致1010中的关卡编辑器。
精致点点连线中的关卡编辑器。
疯狂泡泡龙中的关卡编辑器。
关卡编辑功能用的人多吗?说实话,不多。但是为什么要去做呢?因为我总觉得如果一个玩家能够参与到游戏的创作中,那么这个游戏对他来讲就会变得不一样。虽然做游戏跟玩游戏是完全两码事,而且几乎 99.99% 的游戏玩家都不会去做游戏。但是,关卡编辑器仍然能够给所有的玩家一个以极低的门槛体验游戏创作的机会,这大概就是我认为一定要去做这个东西的意义。
关卡编辑器到底是怎么做的呢?接下来我们简单的说一下关卡编辑器的制作思路。
先看一下上方的这个图片,左侧是游戏界面,右侧是数据表格,我们可以把游戏的界面进行数据抽象,得到右侧的数据表格,也可以通过右侧的数据表格构建出左侧的游戏界面。了解更多与数据抽象和关卡创建相关的内容,可以参考【这篇文章】。
关卡编辑器要实现的其实就是上方的从左到右的过程:我们提供一个可视化的易于理解的界面,让玩家可以在上面进行编辑操作,最后再将玩家编辑完的界面转换成游戏中的关卡数据。
好了,就是这么简单。
我做的三个游戏逻辑都比较简单,关卡编辑器看起来也很直观,对于那些复杂的游戏编辑器都是怎么做的呢?其实都是同样的原理,1 可以表示一个方块,可以表示一个圆点,可以表示一个颜色的泡泡,同样还可以表示一座炮塔,一块障碍,一个道具,一个士兵......一个数字可以表示任何一个游戏中的任何一个物体,所以无论是看起来多么复杂的关卡编辑器,做的其实都是同一件事情:把可编辑的游戏界面抽象成能在游戏中使用的数据。
接下来,我们了解一下在制作关卡编辑器中需要用到的一个重要的转化:表格数据和字符串数据的转化。
如图,左侧的这一张数据表格和右侧的这一长串数字其实是“等价的”,即不论当前拿到任何一个,都可以转化成另一个,其实可以把它们当作是一种数据的两种表现形式。
两者之间可以互相转换,表格中任意的“行列号”上的数据,都可以根据“行列号”计算出它在字符串中的位置索引。例如表格第 2 行第 1 列的的数值 2,对应的就是字符串中的第 6 个位置 2。而知道了字符串中任何一个数的“位置索引”,也能够计算出它位于表格中的哪一行哪一列。
为什么我们要把表格数据转换成一个字符串?因为字符串数据更方便存储或者传输。有了这个字符串,不论你是想要把数据保存在本地,还是上传到云端,亦或者是通过分享发送给好友(利用分享参数),就都不成问题了。
最后,关卡编辑器提供的是编辑功能,应该尽可能的简单易用。在制作泡泡龙游戏第一个版本的编辑器时,做的就不是很好用。
如图,在编辑其中点击任何一个泡泡切换颜色,这也是延续了上两个游戏的思路,但是之前的游戏数字比较少,所以设置一个位置时不需要点击太多次,但是泡泡龙游戏中包含 8 种颜色的泡泡,也就是说,如果这个关卡中想要设置多个第 8 种颜色的泡泡,就得挨个泡泡点击 8 次,实在是有些麻烦。
在第二个版本时,我对此做了改进,想法其实是来源于绘图软件,在绘图软件中都会有一个工具条,上面放置着各种各样的工具,当你选择画笔工具时,在画布上执行的一切操作都是绘制操作,当你选择橡皮擦工具时,在画布上执行的操作就是擦除操作。借鉴了这种方法,我在关卡编辑器中也增加了“工具条”,上面摆放着各种颜色的泡泡,选中一种颜色的泡泡,在上方填充的将都会是这种颜色的泡泡。
这样就方便多了,顺便说一下,在制作泡泡龙游戏的关卡时,我就是用这个关卡编辑器做的。
好了,今天的内容就到这里了。关卡编辑器是一个小众的功能,但是仍然有它存在的必要和价值,它能够为玩家提供一个创造的机会。不论做任何的事情,创造都是重要的,它能够让我们觉得自己所做的事情意义非凡。玩游戏会让你觉得快乐,但是如果还能够在游戏中进行创造的话,这个快乐或许就具有了更深层次的意义。