问题标签 [procedural-generation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 将多边形细分为不同大小的框
我想指出用于创建算法的信息/资源,如本博客所示,它是将多边形(在我的情况下为 voronoi 单元)细分为几个不同大小的框:
http://procworld.blogspot.nl/2011/07/city-lots.html
在评论中可以找到博客作者的一篇论文,但是列出的唯一公式是关于候选位置的适用性:
http://www.groenewegen.de/delft/thesis-final/ProceduralCityLayoutGeneration-Preprint.pdf
任何语言都可以,但如果可以给出示例,首选 Javascript(因为它是我目前正在使用的语言)
[编辑]:我找到了一些可以开始的东西,但这不是我完全想要的: http ://www2.stetson.edu/~efriedma/squintri/
python - 从C代码在python中实现噪声函数
我想玩一下程序内容生成算法,并决定从噪音(Perlin、值等)开始
为此,我想要一个通用的 n 维噪声函数。为此,我编写了一个函数,该函数返回给定维度的噪声生成函数:
我相信,问题在于计算。我的代码基于这两篇文章:
我的一项测试示例:
它总是返回 -0.281790983863,即使在更高维度和不同种子上也是如此。
我相信,问题在于在 C/C++ 中存在溢出是一些计算,并且一切正常。在python中,它只是计算一个巨大的数字。
我该如何纠正这个问题,或者如果可能的话,我如何生成一个伪随机函数,在播种后,对于某个输入,它总是返回相同的值。
[编辑] 修复了代码。现在它起作用了。
java - 在与邻居对应的区域中随机选择点,避免无限递归
请原谅文字墙。稍后我会添加图像。我需要生成一个有点现实的立方米体素地图,包括水、沙子、草、树木、矿物、沙漠、海滩、岛屿等,没有任何形式的 voronoi 应对(即聪明地将这些因素与每个其他)。是的,这是一个游戏。
我想我会随机生成临界点并将它们插入以获取海拔和湿度读数,但我对随机生成感到茫然。基本上我需要一个稍微均匀的分数分布,而不必一次列出完整的列表。我需要一次生成大约 20x20x20,并且可能使用大约 1000x1000x1000 个临界点单元格,但我预计在大单元格的边缘会发生奇怪的事情。有谁知道以这种方式选择点的任何方法?真正的麻烦在于,点应该更接近“山脉”风格链中的其他点。
这里的问题是,这发生在这些 1 公里的小区中。
我可以简单地在一个单元格中以这种方式选择点,但是由于一个单元格及其邻居需要相互依赖,所以我的简单算法会遇到需要前往这些单元格中的一个无穷大,或者看到类似网格断链的模式。链不应在单元边界上更频繁地断裂。如果他们在生成过程中显示了一些有问题的类似晶圆的图案,并且由于设计/游戏玩法的原因而导致无法使用的糟糕的生成。
nb 出于这些目的,系统级随机生成器可以播种并且实际上是统一的。就一个单元格而言,我可以很好地选择链。
我还考虑过让一个细胞溢出到任何未生成的细胞中,以便它的链开始连接到现有的细胞,但这会破坏仅基于位置和种子的生成确定性,将生成顺序作为一个因素。
同样,出于现实主义和设计的目的,我试图远离使用 Perlin。还是我应该在gamedev.SE上发帖?
c# - 随机生成的障碍物有时放置在同一位置
下面的代码是为障碍物生成随机位置。障碍物从右向左移动,所以我使用它的 x 坐标向左移动。当障碍物到达屏幕左侧时,它再次放置在某个随机位置。但这里的问题是,有时障碍物放置在同一位置或距离太近。
python - 将分形方程转换为 Python 算法时遇到问题
我正在尝试将此处概述的方程式转换为 Python 代码:
这是我的结果(为了测试目的,稍微被黑了):
然而,结果似乎只是一个简单的螺旋。很可能我只是在将数学函数转换为 Python 语句时出错了,因为这里展示的数学超出了我的教育范围。是这样吗,如果是,应该如何表达?
php - 以编程方式组装描述段落
我有许多动态创建的页面,每个页面都有许多与之关联的关键字。我希望能够创建一种方法来组合每个页面的一些描述,但我不希望它们都相同。
我有一组句子可供选择,旨在接受关键字。我正在尝试创建一种技术,该技术将获取页面主题的 ID 并根据它选择句子,因此每次访问该页面时它都是一致的,但在不同页面之间是不同的。
例如,到目前为止我有
我想为农民戴夫做的,ID 123345 是根据他的 ID 选择句子,所以当我创建它时,他总是有描述 1 和正文 2 - 例如。随后,农民约翰,ID 223454 将始终使用描述 2 和正文 2 创建。我知道如何随机选择句子,但我不知道从哪里开始使它们保持一致。
每个部分我也有大约 10 个版本,大约有 6 个部分,为了简单起见,我在这里选择了两个。我知道这可能有点矫枉过正,但它为网站增添了一种很好的个人风格。
opengl - 一种生成块的方法
我正在制作一款游戏,我实际上是在生成地图。
该地图是使用一些算法程序生成的。这没有问题。
问题是我的地图可能很大。所以我考虑过将地图切成块。
我的块没问题,它们每个都是 512*512 像素,但唯一的问题是:我必须生成一个纹理(实际上是 SFML 的 RenderTexture)。生成大约需要 0.5 毫秒,因此每次生成块时游戏都会冻结。
我想了一种方法来解决这个问题:我用工厂制作了一种线程池。我只需要向它发送一个任务,它就会创建块。
现在它已经全部实现了,它会引发 opengl 警告,例如:
“RenderTarget.cpp (219) 中的内部 OpenGL 调用失败:GL_INVALID_OPERATION,当前状态下不允许指定的操作”。
我不知道这是否是处理块的好方法。我也考虑过将块保存到图像/文件中,但我担心保存/加载它们需要太多时间。
你知道处理这种“无限”地图的更好方法吗?
c++ - 大面积钻石方形地形生成
我正在尝试在 OpenGL 中实现菱形正方形地形生成算法。
到目前为止,我有一个由多达 1024 个不同的正方形组成的 2D 平面(实际上是 3D,但所有 Z 坐标都设置为 0)。坐标被组织成二维数组
- x 坐标数组:xMap[1024][1024]
- y 坐标数组:yMap[1024][1024]
- z 坐标数组:zMap[1024][1024](开始时全部为 0;出于实验目的错误地假设 z 在我们的例子中是“垂直”轴)
例如,我们有:
我正在使用以下代码生成地形。我遇到的问题是,虽然它在 4 X 4 点大的地图上按预期工作,但它不适用于更大的地图。当应用于 6 X 6 地图时,它将为 4 X 4 相应地生成地形,但不会触及添加的 2 个方格。
这是我用来生成地形的代码:
问题可能与算法有关,也可能与我选择观点的方式有关。
有什么想法和/或帮助吗?
c++ - 如何实现中点位移
我正在尝试在我的游戏中实现程序生成。我想真正掌握和理解所有必要的算法,而不是简单地复制/粘贴现有代码。为了做到这一点,我尝试自己实现一维中点位移。我使用这里的信息来编写和指导我的代码。下面是我完成的代码,它不会引发错误,但结果似乎不正确。
我到底在哪里犯了错误,我该如何纠正它们?
我得到这样的结果:
但我期待这样的结果: