大部分 EpicWorldGenerator 生成的地形都使用梯度噪波算法. 这是维基百科对梯度噪波算法的描述; Gradient noise is a type of noise commonly used as a procedural texture primitive in computer graphics. It is conceptually different, and often confused with value noise. This method consists of a creation of a lattice of random (or typically pseudorandom) gradients, which are then interpolated to obtain values in between the lattices. An artifact of some implementations of this noise is that the returned value at the lattice points is 0. Unlike the value noise, gradient noise has more energy in the high frequencies.
谷歌机翻
梯度噪声是计算机图形中通常用作程序纹理原语的一种噪声。 它在概念上是不同的,经常与价值噪音混淆。 该方法包括随机(或典型的伪随机)梯度的格子的创建,然后将它们内插以获得晶格之间的值。 这种噪声的一些实现的假象是格子点处的返回值为0.与值噪声不同,梯度噪声在高频中具有更多的能量。
- "useOpenSimplexNoise": false,
复制代码如果 "useOpenSimplexNoise" 设置为 false, 插件就会使用 Perlin 算法来生成地形. 阅读以下文章了解这两个概念.
Perlin 是给有更多内存的服务器使用的, 并且会使用更多的 CPU. 尽管这两个算法都很相似, Open Simplex 更推荐那些没有内存和CPU的服务器使用. 并且 Perlin 并不会创造更好的地形, 还会使用更多资源.
好吧, 它看起来就像这样; 通过添加更多层噪波, 或者堆叠不同设置的噪波会让它看起来像这样; 为了简化这个过程, 我们先来学习1维的噪波. 我们先从一层开始. 我们创建了更多频率更高的噪波层. 我们还下降了下一个层的幅度. 这让我们能够生成一个很酷的地形. 如果我们把所有的层堆在一起, 取最顶端, 就会看到这样一个地形; 这个噪波会表现在地形的顶端. 如果没有噪波, 插件就会使用 "baseheight" 属性来生成Biome. 这是一幅 EWG 如何工作的插图; 绿线代表基础高度. 蓝线代表海平面. 黑线代表噪波图形. 灰线是另一个层, 使用更高的频率和更小的幅度. 地形的高度是这样计算的;
基础高度+ 主层+ 第二噪波层 = 地形高度 基础高度属性在下方有更详细的解释.
请务必看看 "Frequency" 和 "Octaves" 于 http://www.redblobgames.com/maps/terrain-from-noise/
在弄清楚地图是如何通过噪波产生和它们使用的不同变化之后, 我们可以根据这些来制作自己的独特地形.
首先, 让我们在配置它们之前先搞清楚地形的数据.
打开你的 <biome>.json 文件, 位于 world > settings > biomes > (custom 或 default).
你可以根据 json 语法粘贴下以下内容. 下面已经提供了一份配置好的文件, 这样你在实际操作时就不会急的头皮发麻.
如果您正在使用以下指南,请不要使用自定义地形以外的其他内容,因为其他的内容(以及自定义地形,但我们正在编辑)只是默认配置.
在biome.json文件中找到地形设置. 将生成器名称(引号内的文本)更改为“CUSTOM_EWG”, 名称必须为大写字母(不需要引号, 它们已经在.json文件中了).
你做完了这些, 接着让我们自定义吧.
指南: http://jetpad.io/index.php?id=5153513
- "customTerrain": {
- "noiseLayers": [ //层列表, 或填写 "octaves"
- {//基础层 (80 格高)
- "xDensity": 300.0, //x轴反转频率. (X-Cord / xDensity). 增加这个数字会产生更低的频率,从而产生更多的山脉和更高的高度. 另外, xDensity是世界东西延伸的方向, 也就是东西方向起伏越大. 将其设置为150-200左右最好.
- "yDensity": 300.0,//y轴反转频率. (Y-Cord / yDensity). 增加这个数字会产生较低的频率. 注意, y和z在Minecraft中是同一个设置, 增加这个数字会产生更低的频率, 从而产生更高的山脉和更高的高度. yDensity是南北的方向, 数字越大, 南北起伏越大. 最好与 xDensity 相同.
- "multiplier": {//噪波值为-1 ~ 1, 需要合适配置以产生合适的地形. 我们已经在配置文件中定义了一个 baseHeight, 通常在60左右.
- "baseMultiplier": 80.0, //使层的峰值在 Y= 80. 这是地形的平均基准高度. 将60设为基础高度, 峰值高度将为140. 最好为60-70.
- "biomeModifier": 0.0, //1.0=100%, 允许超过100%. 如果设置为1,层高度将在生物群系边缘变为返回0. 不需要动.
- "riverModifier": 0.0,//1.0=100%, 允许超过100%. 如果设置为1,层高度将在生物群系的河流附近变为返回0. 不需要动.
- "baseModifiers": [ //设置为负会让噪波水平变低. 不需要动.
- {
- "referenceLayer": -1,//层参考的最高和最低高度, 像这样就是总的层高, 最好为-1.
- "start": 1.0E-9, //开始淡化的值
- "stop": 0.0, ///停止的值
- "finalCoefficient": 0.2857143 //最终的加倍数, 像这样就是1/3.5
- }
- ]//如果值大于一, 则可以添加多个噪波
- }
- },
- {//细节层. 添加这些图层, 以使你的自定义地形更真实和有趣. 你可以按照你想要的添加很多层,但这里有3个模板. 确保将其中的每一个更改为不同的设置. 你将必须使用所有这些设置, 以找到与最适合的生物群体(5个块高)
- "xDensity": 20.0,
- "yDensity": 20.0,
- "multiplier": {
- "baseMultiplier": 5.0,
- "biomeModifier": 0.0,
- "riverModifier": 0.0,
- "baseModifiers": [
- {
- "referenceLayer": -1,
- "start": 35.0,
- "stop": 0.0,
- "finalCoefficient": 0.2
- }
- ]
- }
- },
- {//Detail layer (3 blocks heigh)
- "xDensity": 12.0,
- "yDensity": 12.0,
- "multiplier": {
- "baseMultiplier": 3.0,
- "biomeModifier": 0.0,
- "riverModifier": 0.0,
- "baseModifiers": [
- {
- "referenceLayer": -1,
- "start": 35.0,
- "stop": 0.0,
- "finalCoefficient": 0.2
- }
- ]
- }
- },
- {//Detail layer (1.5 blocks heigh)
- "xDensity": 5.0,
- "yDensity": 5.0,
- "multiplier": {
- "baseMultiplier": 1.5,
- "biomeModifier": 0.0,
- "riverModifier": 0.0,
- "baseModifiers": [
- {
- "referenceLayer": -1,
- "start": 35.0,
- "stop": 0.0,
- "finalCoefficient": 0.1
- }
- ]
- }
- }
- ]
- },
复制代码 粘贴下面这个, 不是上面那个. 否则插件会报错.
用于复制的配置 - http://raw.jetpad.io/index.php?id=30a32c0
这个配置是迄今为止 EpicWorldGenerator 中最复杂的配置. 虽然我们尽可能清楚地解释所有的东西和配置, 但有些事情可能无法像你想象的那样容易. 所以我们在配置文件的过程中给出了几个设置的推荐数值, 如果不知道该怎么办, 就使用这些推荐的值. 祝你与你自己的神奇地形好运!
这个配置需要很多的耐心, 并且应该仔细配置, 达到最好的效果. 如果你是第一次这样做, 你将必须通过不同的组合来找到完美的匹配. 虽然很多事情都是具有挑战性的, 但请继续努力, 因为这是实现此功能的必要过程.
|