procedural-generation相关内容

优化 Haskell 中的数值数组性能

我正在为类似 MineCraft 的世界开发地形生成算法.目前,我正在使用基于论文 'Simplex NoiseDemystified' [PDF],因为单纯形噪声应该比 Perlin 噪声更快并且具有更少的伪影.这看起来相当不错(见图),但到目前为止它也很慢. 运行噪声函数 10 次(我需要具有不同波长的噪声来处理地形高度、温度、树木位置等),每个块(16x16x128 块)的噪声为 3 ..

如何在方形网格上创建分支静脉/河流状结构

我正在尝试按程序生成一些河流. 我有一个平面(没有立面概念)方形网格作为基础,想在上面绘制一个分支结构,如图所示. 你能分享一下人们可以用来完成这项工作的步骤吗? 我不是在寻找最快的实现,因为没有实时生成,但更简单的实现将是首选.Lua 是我的语言,但什么都行. 还有一些事情: 形状应通过算法生成. 形状应该是可使用种子值进行控制. 解决方案 我认为生成河流 ..
发布时间:2021-12-30 20:13:17 其他开发

使用天空盒程序生成星星

我正在尝试在 OpenGL 中以程序方式生成一个充满星星的背景. 我采用的方法是创建一个带有立方体贴图纹理的天空盒.立方体贴图纹理的每一面基本上由一个 2048x2048 的黑色图像组成,其中随机选择的纹素设置为白色.结果如下: 我不确定它从图像中的表现有多明显,但是当在一个非常明显的盒子形状周围移动时,可以看到靠近盒子边缘的星星显得更小更靠近.我怎样才能防止这种情况?我是否需要放弃天 ..
发布时间:2021-12-19 18:02:56 C/C++开发

什么语言或方法允许图形&适合 64kb EXE 的音乐演示?

在 64kb 编译的 exe 中,这些程序怎么可能生成如此疯狂的视觉效果,并配以匹配的音乐? 一个例子:Ars Nova By Phantom Lord (演示运行的 YouTube 视频) 这个程序只有 64kb 大小!他们是怎么做到的? 他们是否在 DirectX 或类似的东西中使用了某种预先存在的对象、着色器等? 他们甚至使用什么语言?有关于这些东西的某种指南吗? ..
发布时间:2021-11-25 02:50:34 C#

什么是 3D 更快?Perlin 或 Simplex 噪声?

好的,网上有很多关于 Perlin 和 Simplex 噪声的比较.但是我真的找不到一个在三个维度之间有一个简单的处理时间比较的,这是我最感兴趣的.我已经阅读了那个流行的 PDF(甚至理解其中的大部分内容 - 是的!)但我无法回答这个简单的问题:哪个对 3D 来说更快,假设最佳实施? 这个 stackoverflow 问题答案表明 Simplex 是一个非常明显的赢家我的情况.当然,还有其他 ..
发布时间:2021-11-25 02:22:40 C#

受限景观的程序生成

我想实现地形的程序生成.经过彻底的研究,我得出一个结论,它应该使用梯度(相干)噪声生成算法之一来实现,例如 Perlin Noise 算法.但是,我不希望这一代完全随机.我想应用一些限制条件(例如哪里应该是山脉,或者哪里应该是低地等). 问题: 例如,我有一条曲线代表一些景观元素.曲线是一组点. 我如何改进 Perlin Noise 算法,以便沿着这个曲线噪声将具有首选的值范围( ..
发布时间:2021-11-25 02:07:29 C#

二维瓦片地图生成

我正在开发一个 2D 切片引擎,目前我正在研究地图生成算法. 我尝试了通常涉及简单高度图生成的基本方法,例如 山地生成 柏林噪声 菱形方块 但我总是遇到同样的问题:这种算法在处理也有高度分量的瓦片地图时似乎很合适,但这不是我的情况. 我基本上有草、海、沙漠等精灵,但它们不应该根据生成的高度放置在地图内,而是像 一切从海洋开始 岛屿位于地图中间(这是我尝试的算法最 ..
发布时间:2021-11-24 21:45:54 C#

制作可前后移动的可定制 LCG

我将如何让 LCG(伪随机数发生器的类型)双向传播?我知道向前行驶是 (a*x+c)%m 但我如何才能逆转它?我正在使用它,因此我可以将种子存储在地图中玩家的位置,并能够通过在 LCG 中向后和向前传播来生成它周围的东西(就像某种随机数轴). 解决方案 所有 LCG 循环.在达到最大循环长度的 LCG 中,每个值 x 都有一个唯一的前驱和唯一的后继(对于没有达到最大循环长度的 LCG,或者 ..
发布时间:2021-07-02 19:53:18 其他开发

遍历描述螺旋的公式以生成XY坐标

我正在尝试生成xy(2D)坐标形式的螺旋星系-但是数学并不是我的强项. 我从螺旋上的优秀来源中收集了以下信息: 半径r(t)与角度t成正比 最简单的螺旋,阿基米德的螺旋.因此,等式为: (3)极坐标方程:r(t)= at [a为常数]. 从此开始 (2)参数形式:x(t)=等于cos(t),y(t)=等于sin(t), (1)中环 等式:x²+y²=a²[弧形tan(y/x ..
发布时间:2020-11-04 18:48:32 PHP

C#格式任意大BigInteger,用于无尽的游戏

我正在尝试创建无尽的游戏,例如Tap Titans,Clicker Heroes等.我有一个BigInteger类,只要能容纳在内存中,就可以表示任意大的整数. 现在,我有一个将BigInteger格式化为特定格式的类.对于较小的数字,它使用K(千),M(百万),B(十亿),T(万亿),Q(四十亿),但之后的缩写符号变得模棱两可且不直观.由于五位数,Q已​​经不明确了,但我可以接受. ..
发布时间:2020-09-20 20:18:42 C#/.NET

调整六边形网格的高度图生成

目前,我正在做一个小项目,只是为了一点乐趣.这是一个使用OpenGL的C ++ WinAPI应用程序. 我希望它将变成在六边形网格上玩的RTS游戏,当我完成基本游戏引擎后,我计划进一步扩展它. 目前,我的应用程序由一个VBO组成,该VBO包含顶点和高度图信息.高度图是使用中点位移算法(菱形正方形)生成的. 为了实现六边形网格,我接受了在此处解释的想法.它向下移动普通网格的奇数行, ..

为什么所有的Simplex噪声算法都具有置换&渐变表?

我已经尝试实施Simplex Noise大约一个月了,并且我了解与Simplices合作以减少所需计算量以及在梯度方面安全供电的想法。不过,将其实现为任何语言似乎都不可能实现。 在每一个我发现的代码,我阅读的资源中,到处都有代码,其中似乎有一个G表和一个P表。通过一些谷歌搜索和询问,我了解到它们是一个排列表和一个渐变表。他们在做什么?我们为什么需要它们? 我目前的想法是,置换表仅包含随 ..
发布时间:2020-06-03 21:33:18 其他开发

通过Skybox生成星星的程序

我试图以程序方式在OpenGL中生成一个充满星星的背景. 我采用的方法是创建一个具有立方体贴图纹理的天空盒.立方体贴图纹理的每一面基本上由一个2048x2048黑色图像组成,并且将随机选择的纹理像素设置为“白色".结果如下: 编辑:这是我将立方体贴图映射到天空的方式. // Create and bind texture. glGenTextures(1, &texture_); ..
发布时间:2020-05-20 21:55:24 C/C++开发

如何使用3D Perlin噪声函数生成地形?

我可以使用2D Perlin噪声函数来生成高度值,但我不明白为什么要使用3D Perlin噪声函数.在 Notch的博客中,他提到将3D Perlin噪声函数用于Minecraft上的地形生成.有谁知道该怎么做以及为什么会有用吗?如果要传递x,y和z值,并不表示您已经有身高了吗? 解决方案 Minecraft与矿井有关.因此,Notch试图解决的问题是:“我如何在我的世界中出现孔洞/突出物 ..
发布时间:2020-05-09 21:59:51 其他开发

极坐标图生成

我目前正在为我的游戏开发某种地图生成算法.我对我想要做什么以及如何生成地图有基本的了解. 我想使用极坐标系统.我想要一个圆形图,以便每个玩家都可以在圆圈的边缘生成,并均匀分布. 该算法应生成从整个圈子(但仅在圈子内部)散布的“城市".每个城市都应该以某种方式联系起来. 圆圈的大小应取决于玩家的数量. 一切都应该是随机的,这意味着如果我跑步 GenerateMap() ..
发布时间:2020-05-05 14:18:58 其他开发

Perlin杂讯详细程度.如何放大风景?

我已经编写了自己的Perlin Noise实现,并且效果很好.我可以通过更改频率来“放大"和缩小,但是当我放大噪声时,噪声会变得越来越平滑. 假设我有一个显示大洲的风景.我想放大到城市大小的区域(或更近的区域),但仍然有详细信息.我认为我需要重新生成更详细的信息,但是我不确定是否有任何实现方式可以帮助实现这一点? 放大后,我看到了大陆和海洋,但我想在小区域中代表大区域. 这是我遇 ..
发布时间:2020-04-27 03:22:27 其他开发

在Haskell中优化数组的性能

我正在研究类似MineCraft的世界的地形生成算法。目前,我正在使用单纯的噪音,基于在这篇文章中的实现单纯噪音揭秘“[PDF] ,因为单纯的噪声应该比Perlin噪声更快,并且产生更少的伪像。这看起来相当不错(见图片),但到目前为止它也很慢。 运行噪声函数10次(我需要不同波长的噪声,例如地形高度,温度,树的位置等等),一个块(16×16×128块)中的每个块具有3个八度的噪声,或者总共大 ..

Diamond-Square算法的平滑问题

我正在使用菱形算法来生成随机地形。 它工作正常,除了我得到这些大的锥形,伸出或进入地形。 问题似乎是,现在每一点都被设置得太高或太低。 这是一个问题的图片 当我设置平滑度真的很高时,可以更好地看出 这里是我的代码 - private void CreateHeights() { if(cbUseLand.Checked == false) return; i ..