godot 随机地图1-noise
之前用unreal整了一个出来,效果反正够用,但是效率绝对拉胯,因为getpixel是从显存到内存,而且不是优化的。因为unreal已经删掉了fbo这个功能。
在godot中,是一款面向2D的游戏,所以他专门弄了一个class noise,在class texture中还有专门的noisetexture的子类。
当然noise的生成在gpu上,所以要获取他们也很容易,只需要await changed后,在用image保存texture,在把image转化为data就好了。
以下是godot的官方文档的使用方式。

var texture = NoiseTexture2D.new()
#给指针分配内存
texture.noise = FastNoiseLite.new()
#在GPU上快速生成 FASTNoise
await texture.changed
#因为nosie的生成是单独线程,等他跑完
var image = texture.get_image()
#把数据从显存复制到内存中
var data = image.get_data()
#把image的数据转化为PackedByteArray
其中PackedByteArray就是一个高效的string

这要要把它变为一个tilemap,速度是非常快得。
◇简单看一下noisetexture的属性

也就是关于noise的清晰度和连接处的关系。
直接上源码


运行结果

总结:作为游戏引擎,设计理念非常棒,小bug只是一些常见的问题,使用c#就没啥问题。