Java 使用程序生成生成由平铺组成的16 x 16块

Java 使用程序生成生成由平铺组成的16 x 16块,java,algorithm,sandbox,tile,procedural-generation,Java,Algorithm,Sandbox,Tile,Procedural Generation,在我的2d沙盒游戏的编程中,我决定添加一个程序生成引擎来生成地形。我决定实现它的方法是使用菱形正方形算法生成值,然后根据这些值,我将导出匹配的地形(每个地形都有一个可以生成的范围。我能找到的算法(find)的唯一示例需要奇数网格大小(即17 x 17,而不是16 x 16)生成。我理解为什么,并且想知道我是否应该使用不同的算法,或者是否有一种方法可以使它与此算法一起工作。对于17x17网格上的数字,您可以只取每个小正方形的4个角的平均值来得到正方形的数字。例如,使用3x3而不是17x17,假设您

在我的2d沙盒游戏的编程中,我决定添加一个程序生成引擎来生成地形。我决定实现它的方法是使用菱形正方形算法生成值,然后根据这些值,我将导出匹配的地形(每个地形都有一个可以生成的范围。我能找到的算法(find)的唯一示例需要奇数网格大小(即17 x 17,而不是16 x 16)生成。我理解为什么,并且想知道我是否应该使用不同的算法,或者是否有一种方法可以使它与此算法一起工作。

对于17x17网格上的数字,您可以只取每个小正方形的4个角的平均值来得到正方形的数字。例如,使用3x3而不是17x17,假设您有

3--2--1
|  |  |
4--3--1
|  |  |
5--4--2
该网格定义了4个小正方形。这些正方形将具有值

(3+2+4+3)/4=3.00  (2+1+3+1)/4=1.75
(4+3+5+4)/4=4.00  (3+1+4+2)/4=2.50

将17x17网格划分为16x16个网格的想法也是一样。或者我不明白吗?

该算法通常是用2^n x 2^n网格来解释的。但是你总是可以计算出下一个更大的大小,即2^n,然后使用子集。有什么问题吗?是的,将四个角平均,以找到小正方形内的数字、高度或其他数字埃森特。