进山之旅:第1部分
去年,当我获得PICO-8时,我做的第一件事是编写2D地形生成器。 我以前在Java和Android上都做过。 我已经学会了如何从Miners4k源代码(可通过Wayback Machine获得)生成地形,尽管它花了我几次尝试(以及阅读其他博客和Wikipedia)才能使其正常运行。 我选择了简化版的Diamond-Squared算法(用于生成2D等离子体),该算法创建了高度值的1D数组。 有关该算法的简介,请查看此博客。 从一个非常高的层次来看,您将获取一个数字数组,这些数字均已初始化为某个高度值,每个元素代表从0到地形宽度的某个x坐标处的高度值。 您选择数组的中间元素,并将其值设置为第一个和最后一个元素的平均值,再加上一个随机抖动值。 然后,您遍历数组的每一半,对每一半执行相同的操作,并减少随机性。 继续将数组分成两半,直到到达长度为1的数组(可以递归或迭代地完成),然后剩下的整个数组代表一系列的高度值,这些高度值在渲染时看起来像是类似于连绵起伏的丘陵。 我在PICO-8中的第一次尝试只是使用线条,从屏幕的底部绘制到for循环中数组每个元素的高度值。 非常简单,所有颜色均为单色。 我很快意识到,如果对每个垂直切片(数组的每个元素)使用多条线,我可以使它看起来就像是地形/岩石,上面放着一些草。 因此,现在循环画了三行,最后几个像素是单独的行,为“草”渲染了两种绿色。 在这一点上,我决定将其用于制作Worms-Clone,因为我意识到我可以通过编辑Terrain数组来模拟Terrain变形。 当我实施此方法时,它看起来很奇怪(而且我对这种方法的工作情况也没有很好的了解),因为草还留着。 在蠕虫中,当射弹击中景观时,会从风景中带走一小块,留下裸露的岩石。 我对此的解决方案是采用一维高度图数组,并使用它来构建一个稀疏的2D像素值数组来表示地形。…