kongbaiyo
本帖最后由 dengyu 于 2021-10-16 13:15 编辑

地形创造

地形创造数据包可以按方块创造一个自定义的地形。它根据每个方块的坐标来计算Perlin噪声和Worley噪声。将这两种结合,并加上一些后处理步骤,就可以创造一个包含不同生物群系(包括河流、平原、平顶山等)的完整的世界。

这个数据包没有实用价值。下面动图实际生成时间为30分钟。如果有一天你闲的没事做,可以下载数据包,放到一个void预设的超平坦里,随便传送到一个坐标,启动生成,就可以坐着看戏了。





如何使用

给一个实体或玩家添加一个map_generator的tag,就会自动在这个实体周围开始生成地形。它每tick生成20个方块,每个方块消耗1400条命令。光照更新可能带来很大的卡顿。

同样你可以在perlin:preset中修改一些参数,比如每个生物群系的基础高度,来生成你自定义的地形。


它是如何工作的
伪随机数生成器

参见perlin:random/number。这个数据包使用了线性同余生成器来生成随机数。数据包内为了使数据不超过int最大数据的限制进行了一些修改,因此该生成器只能生成0-8192之间的数字。

实际上,我一开始准备用游戏内的伪随机数生成器。但是由于bugMC-174435的存在导致loot table seed对/loot命令无效,就此作罢。


计算哈希码

参见perlin:random/xy。由三个数字计算哈希码有很多方法。Minecraft使用了乘并异或的方法。但在游戏内计算异或将消耗大量命令,因此这里使用了乘法来计算。


Perlin噪声

2D Perlin噪声的游戏内实现。和标准的算法不同的是,本算法只在12个随机向量中选择。噪声预览图见下。参见perlin:initperlin:noise


Worley噪声

2D Worley噪声的游戏内实现。用了一个简单的办法查找不同块之间的边界。噪声预览图见下。参见perlin:noise_wm这里


波浪滤镜

Worley噪声生成的边界为直线,属实没劲。因此添加了一个波浪滤镜让它看起来更加的浪。参见perlin:wave


将噪声和滤镜结合

使用Worley噪声确定生物群系,再让边界成为河流。使用平滑函数使边界更加平滑(perlin:fade)。最后把Perlin噪声叠加在上方。最终结果是,给perlin:terrain输入一个坐标,它就会返回一个高度和所对应的的生物群系。


按区块生成地形

每个区块生成一个游标,根据游标位置调用函数生成区块。参见perlin:new_map/


鸣谢



tineseack_bk
这个数据包没有实用价值.jpg
希望 mc 能有更丰富的功能让做新维度这件事情变得不那么困难吧

(=°ω°)丿
我也有想过用命令自己弄一个自定义世界生成,不过我的重心不是生成地形(地形都是有规律的)而是生成植物、建筑什么的(
https://www.mcbbs.net/thread-942960-1-1.html

Xiao2
刚在想这方面的事就遇到了qaq
很有实用价值

仅仅将地形定义为类似末地岛的有限空岛就可以做到类似完全的新维度(在已有地形的地图上)
我正在想如何做一个新入口,让玩家可以传送到一个新世界(其实就是重置某一地区的生态系统或者地形,但是是有界的),以拓展游戏内容。


kongbaiyo
Xiao2 发表于 2020-3-24 21:06
刚在想这方面的事就遇到了qaq
很有实用价值

修改现有群系确实是个好想法!之前我做过这么一个地图 月面模拟器,就是把平顶山地形的混凝土全换成白色的了
生成空岛我还没想过 不过感觉可以试试!


Xiao2
kongbaiyo 发表于 2020-3-25 09:59
修改现有群系确实是个好想法!之前我做过这么一个地图 月面模拟器,就是把平顶山地形的混凝土全换成白色的 ...

我看了一下

如果能用现在这个技术的话
就不只是替换而已了

可以完全生成不一样的地形
再加上建筑等等就可以是一个“维度模拟器”了
-------
空岛的意思是:局域的地形生产,而不是全图型的(类似末地更新前的末地岛的局域性)

🥶❄️☠️
30分钟!那么我刚开始玩就已经又要上课了

neverwouldhe
话说群系分布也可以这样搞吗?还有就是 地下的矿脉会受到影响吗

44455512345
电脑会因为地形刷新卡住吗??

1014558923
建筑党表示感谢,但还是小木斧好用些也简单些

102630464c
很不错的世界生成,但目前看下来并不是很有实际价值

Freeze_Dolphin
刚刚在站内看完bukkit插件的WorldGen写法,一翻主页底部的“命令”专栏就找到了这个= =

Stray05
哦?可以可以。不过话说怎么用?
还有,适应1.16的啥时候更新呢?

Stray05
Stray79 发表于 2020-4-30 19:59
**** 作者被禁止或删除 内容自动屏蔽 ****

所以你得在距离下课前30分钟打开然后搞出来

AppleCarrot
1gt20个?每个方块1400条?1gt有28000条,1s有560000条
拜拜我电脑带不动

Eddsy
可以,您就是mc的编程师吧【doge】

真香_意大利皮
感谢大佬,不知道Worley噪声能否进行替换,因为音源文件夹在哪个位置有些混淆

我的好祖宗
可以什么地形都能实现的感觉

精良MP
做地图神器

3252236846
谢谢版主,已收下,我寻思着弄一个自定义的传送类的东西,就是感觉有点难正好可以试试这个

JellyBlue
Dear-boy 发表于 2020-4-30 18:06
感谢大佬!本来对这方面一直不太懂,看了帖子入门了一些(虽然还是不懂) ...

这种mod仅仅是为了复杂而复杂吧
之前玩的匠魂mod至少还算人性
我是搞不懂这些mod到底图啥,可能有些人喜欢玩吧

asd1827795321
我感觉我的电脑会冒烟...老古董了= =

liu00a
nbnbnbnbnb

一片死寂
感觉......还好吧!

Sweeture
配合创世神0.0 分分钟建筑大佬的铁子

Minecraft098765
这堪比真实地形mod,爱了

夕阳红熊猫
我觉得可以和cq的自定义建筑结合一下

方块2018w
以后不用担心玩家超传出边界了

方块2018w
方块2018w 发表于 2020-10-7 17:29
以后不用担心玩家超传出边界了

现在他们走到哪都是刷新的合法地形doge

夕阳红熊猫
可以手动设置出现的地形种类吗

ban1ow
感觉很有前途? 不过前路还很长

苏子佩
地形感觉有点不太自然

狗啃空岛
现在1.16.4好像自带了

俗人问雅
我们服务器里好像就有这个

列车长。
我给服务器加了一个rtg真实地形,也是很好看的

冰风胡椒粉
咋就没价值了,杀时间当然是价值(狗头

海绵c2
所以这是在主世界生成还是自定义的维度生成的啊

🥶❄️☠️
哇,又是可以用噪声函数的了,但是感觉单用噪声函数似乎不太够

BeiAn_Ghost
看起来很炫 但是30分钟时间太长了吧。。一节课的时间也才45分钟。。

みさか_みこと
自定义生成的话,对于服务器作者是真滴香

师_兄
要是能生成树木什么的就完美了,但是可以了正好建造田园风格的空岛,省的自己还要想地形

高胜寒
自定义好评,想做啥做做啥

qeqaa
好好用,造地图真方便

CoolSammi
为啥没有低版本的哇,有1.12.2就好了

LiangYuan
为什么说没用实用价值嘞 是自己弄出来的东西都是花了心思的 我觉得还不错 当然如果要扣我分你当我没说

Koyume233
真·随机生存,有一定的参考价值

bf896
生成游标的条码是什么

yang1551296
看起来可以试试生成边境之墙

碳芝狼
强啊!我的lj服能自定义地形了!好耶!

清风诺帝
好方便我擦 对于我这个建筑师来说真是福利

下一页 最后一页