我的MC复刻(一):2DMC垃圾制作——随机地形的第一次尝试
我对 Minecraft 的向往由来已久,久到总想自己手搓一个。真要动手的时候,第一个开工的不是那些漂亮的素材,而是一个最根本的问题:地形到底能不能自己”长出来”?
这个第一次尝试的工程,名字起得非常谦虚,叫「2DMC垃圾制作」。工程里的素材落盘时间是 2016 年 10 月 16 日——五把镐子、泥土、原石、屎蒂夫行走图,和 PS 里那批抠图是同一批;地图数据则在 10 月 22 日第一次存盘。
先交代操作
方向键里只有左右能操控移动,Z 键跳跃,空格是挖掘键。按 W 会切换到另一张地图——这个后面再说。
目的:测试地形随机生成
做这个工程的出发点只有一个——测试地形随机生成。玩 Minecraft 的时候总会好奇:地形到底是怎么”长出来”的?当年的我只会最简单的东西:随机数。
所以开局落地的这张「草原吧?」地图,就是那次实验的现场——深绿的底子上,方块由随机数直接撒出来,东一块西一块,毫无规律可言。这并不是一张”好看”的地图,它就是随机数本身的形状:

右下角的 X: 12 Y: - 5 是坐标——「地图显示XY」是特意加上的脚本,走一步它就报一次位置。
按 W,切到 2D MC 世界
切换过去的第一段时间其实有点好笑:角色直接卡在了出生点的泥土里,完全动不了了;不过旁边的木头和脚下的泥土还挖得动——于是就这么卡在原地,挖了一整段:

读档重来,就靠空格往下凿自救。下面这段从按 W 切过来那一刻开始全程保留——刚进来的几秒、卡住、凿穿脚下方块,然后越凿越深,坐标从 Y: -5 一路凿到了 Y: -19,往下凿了十几格:

「草原吧?」在俯视角里,是随机数撒在深绿底子上的形状;切到「草原吧? 2」的 2D 视角,树冠长在顶上,泥土草方块还是东一块西一块——落在哪里依然由随机数说了算。地图是杂乱了点,不过重力、挖掘这些底子,在这一版里已经立住了。
这版的配置
- 重力脚本:之前就有的社区脚本,这版直接沿用
- 「地图显示XY」:这一版特意加的坐标显示
- whbm 的完整鼠标系统(四方向专用)加四方向寻路算法:点击移动、点 NPC 触发事件
- EngShun 的 TextBox 输入框
打开编辑器,看看随机地图是怎么写的
光看演示还不够,这次把 RMXP 的编辑器也打开了,截了八张关键部位。编辑器里可没有什么图例,所以每张图我直接点名,说清它在哪、要看的是什么。
先看「草原吧?」在编辑器里的样子:深绿的底子上,方块东一块西一块,游戏里那张随机地图在编辑器里反而看得最清楚。这里还藏着一个当时的小机关——图上这些橡木原木,大多数其实只是贴图,点不动也挖不了;真正能交互的原木,整张图只在左上角藏了一个:

接下来这张是「草原吧? 2」的图块页。这张地图和「草原吧?」正好反过来:地图上的方块全是贴图事件,个个都能交互。左边一列还能看到方块破坏的裂纹贴图,从刚裂开到快碎掉,一段一段备齐了:

随机刷新的账,记在一个叫 EV003 的并行事件里:草方块刷新点的 X、Y 全部交给随机数——X 从 0 到 20 里抽,Y 从 6 到 12 里抽;顺手还实时记下了角色当前的 XY 坐标。整张图的草方块长在哪儿,就是这几行变量说了算:

随便再打开一个草方块的事件 EV020。它的第 1 页挂着「地图随机刷新」开关:一进地图,先用随机数算出刷新点,再用「设置事件位置」把自己挪过去,最后打开独立开关 A——到这一步,这块草方块刷新完成,站在原地等着被角色响应:

第 2 页的触发方式居然是「与主角接触」——按道理这里该是决定键,要主角按下 C 或者空格才算动手挖。内容倒是不复杂:先看创造模式开了没有,没开的话,再判断手里装备的是不是「屎蒂夫」,条件对了就打开独立开关 B;按住下键也能走进同一个分支:

第 3 页就是挖掘本身了,事件图片已经换成了挖掘状态的裂纹贴图。执行内容就三行:等 5 帧、打开独立开关 C、给泥土 +1——也就是说刚开挖,泥土就进包了,根本不等动画播完。后面的页全是同一个套路:一条独立开关接力一页,每页等 5 帧、播一段裂纹动画,裂缝越来越大,最后一页把方块完全挖掉。逻辑很朴素,但拼起来就是游戏里那个挖掘的手感:

数据库的公共事件列表里也藏着好东西。这张是「使用“创造模式开启地图”」:使用物品后要输入一个 7 位的代码,答案是 123456,输对了才把「创造模式开启」开关打开,还挺正式地弹一句“您的游戏模式已更新”。不过结合前面第 2 页的挖掘判定看,创造模式在这里其实管不着挖掘——照样要走独立开关的接力,照样等动画播完才掉落:

最后一张是公共事件「创造模式」本体:条件开关挂着创造模式开关,里面直接给重力脚本的变量赋值——把跳跃次数改成 9999。跳一下之后空中还能无限再跳,模拟出能飞的样子。飞行模式,就这一行数字:

结语
场外话从随机数撒方块,到后来见到的柏林噪声——地形生成这条路,我是从最笨的方法开始走的。走得多慢不重要,重要的是 2016 年那个问"地形能不能自动长出来"的问题,我在几年后还愿意打开工程接着试。这种事,多做几次就不亏。
