Questions tagged «procedural-generation»

程序生成是基于算法和计算而不是手动构建内容的过程。

4
程序化河流或道路生成,可实现无限地形
我应该说的是道路,而不是道路,因为我认为这更像中世纪。另外,不要寻找现实主义。我正在寻找的答案将是适合我描述的模型,而不是现实。 我正在寻找一种以弯曲的方式生成程序性道路/河流的方法,但我想针对无限的地形类型系统来这样做。就像佩林噪声如何产生斑点一样,我想生成随机长度的线段(可能是无限长)。 我知道类似此处找到建议答案的策略,但是它依赖于指定的起点和终点才能工作,但我没有指定的起点和终点。我希望能够简单地使用任意坐标调用函数,并让其返回特定坐标是否为河流/道路的一部分。 我不想要求预先生成地形。其中包括一个高度图(例如用于降雨模拟或类似方法)。我也不想要求起点/终点。 是否有这样的算法或对噪声算法进行了调整,有人可能会知道这些算法来完成我要解释的事情? 到目前为止,如果我使用的名称正确,则最接近的是多脊形分形。我只是获取噪声值的绝对值(假设将其缩放为-1到+1)并设置一个阈值。我的主要问题是,线条重叠的方式太频繁了,大多是圆形的,有时会收敛形成大湖,这些湖泊整洁但并不理想,而且线条的厚度经常变化太大。 这是我到目前为止在2D模式下的图片,但是以很高的频率显示了更多细节:

4
简单的噪音产生
我正在寻找产生如下噪声: (图片由了解Perlin噪声提供) 我基本上是在寻找带有许多小“波纹”的噪音。以下是不可取的: 有没有简单的方法可以做到这一点?我已经看了一个星期的perlin和simplex,似乎无法在JavaScript中使用它,或者当我这样做时,我没有正确的参数来生成此类图像,或者这太令人费解了慢。 我了解我发布的3张图像可能可以通过相同的算法来实现,但比例不同,但是我不需要那种算法。我只需要一个非常简单的算法即可理想地实现类似第一张图片中的效果。也许某种模糊可以胜任,但我无法取得结果。 我正在用JavaScript开发此工具,但是任何类型的代码,甚至是简单而详细的说明都可以使用。

8
用于创建球体的算法?
有没有人有算法来程序地创建一个球体,该球体具有la一定数量的纬度线,lo一定数量的经度线和一个半径为r?我需要它与Unity一起使用,因此需要定义顶点位置,然后通过索引定义三角形(更多信息)。 编辑 我设法使代码统一工作。但是我想我可能做错了什么。当我打开时detailLevel,它所做的就是添加更多的顶点和多边形,而无需四处移动。我忘记了什么吗? 编辑2 我尝试沿其法线缩放网格。这就是我得到的。我想我缺少了一些东西。我应该只缩放某些法线吗?


2
具有连接路径的过程二维地图算法
要解决的问题:为所有房间相连的基于图块的游戏生成随机的2D地牢地图。 我正在寻找比目前更好的解决方案。 我当前的解决方案是运行两种算法。第一个生成带有其房间的地牢。第二个要确保所有房间都已连接。我很好奇还有什么其他解决方案。更快和/或更容易等。速度并不是真正的问题,但是如果可以免费获得速度,那将是一件好事。更重要的是,我和其他阅读者可以学习不同的方法来解决问题。 以下是我当前的实现。房间目前没有出口,也没有任何2、3或4个方向的出口。 生成地下城房间 设置:将当前房间设置为左上方的房间。 获取该房间的有效房间类型(其中有效的房间类型是在地牢中没有出口,并且其出口与上方房间和左侧房间的出口相匹配的类型。只需要在上方和上方进行检查即可)由于下面的第2步而离开)。 放下房间,将x坐标前进一个步骤。如果x坐标超出地牢宽度,则将x坐标设置为0,并将y坐标前进一个步骤。如果y坐标超过地牢高度,则完成。 从#1开始重复。 然后,我检查是否所有房间都已连接。如果还没有全部连接,我运行第二种算法,该算法以非性感但在地下城布局方面肯定足够好的方式穿过这些房间并进行更改,以便所有被连接起来。 检查是否所有房间都连通 设置:创建一个表示路径的整数2D映射,并将条目初始化为“未处理”(尚未遍历)值-1。将跟踪当前路径的起始路径索引整数设置为1。通过将当前房间添加到要检查的房间堆栈中,将当前房间设置为左上房间。 如果堆栈中包含要检查的房间,则将其弹出以将房间的路径索引设置为当前路径索引。如果堆栈中不包含任何房间,请增加路径索引并尝试逐列逐行前进以获取房间,直到获得尚未处理的房间。如果找不到房间,我们就完成了。 检查房间是否在左侧有出口。如果已添加左侧空间,则将其添加到堆栈中。 对向下,向右和向上方向重复步骤2(因为我们使用的是堆栈,这意味着从顶部方向开始以顺时针顺序遍历房间)。 从步骤1开始重复。 如果路径索引计数大于1,则表示房间已断开连接。 如果存在断开连接的房间,则将房间按其路径索引分组,获取最大路径的索引,然后将所有其他房间连接到这些房间。这是一项正在进行中的工作,但是我的(当前的,“粗俗的”)计划是要遍历一个房间组(第一个房间除外)中的每个房间,以检查是否有通往Biggeset房间组的水平或垂直路径,并且如果是这样,请通过在其间注入/更新房间来在其中创建水平/垂直路径。冲洗并重复。丑陋的,是的,但是就视觉模式而言,这是不明显的,因此可以在这种意义上发挥作用。

3
团队如何防止覆盖源文件中的工作?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 4年前关闭。 在我看来,有一种可能性,例如由多个人同时处理游戏引擎时,如何防止覆盖? 假设开发者一在工作,Audio.cpp而开发者二也在工作Audio.cpp,这在大型团队中通常如何进行管理以应对覆盖?(换句话说,要阻止开发人员2打开文件,直到开发人员1完成)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

3
如何在程序生成的世界中识别特征区域?
我正在建造一个岛屿。我使用经典的高度图解决方案:具有爬山功能,避开地图的拐角处,可以确定高度。然后,佩林噪声为我提供了一些应对生物群落的气候变量。现在,我面临着以某种方式联系在一起的两个挑战: 在《矮人要塞》中,尽管不是矩形形状,但游戏似乎是如何“知道”区域并为其命名的,这是世代的整洁方面之一。我希望能够“识别”我的森林,我的河流,我的山丘……不知道我可以使用哪种算法来扫描地图并解释其区域?您将如何存储呢?我正在使用由“ tiles object”的向量的向量构成的基本C ++图形。 这个岛屿应该划分为政治领域,而不仅仅是自然区域。我可以用山脉和河流来做“自然边界”,但是我程序生成的地图却不能保证我会拥有形成王国的漂亮“飞地”。我可以发现自己拥有一个由微型王国包围的巨大的“丝带状”政治地区。另一种可能性是为城市或城堡寻找合适的区域。然后,“发展”周围的政治领域。但是,在尝试设计自己的算法之前,我想再次使用一些众所周知的算法。 这个问题可能解释得太含糊,所以改写它的一种方法是:如何将程序生成的世界划分(不修改!)为适合游戏性的区域?在此先感谢您的帮助。

3
您如何以编程方式生成球体?
有人可以解释一下如何创建球体的顶点,索引和纹理坐标吗?令人惊讶的是缺少有关如何执行此操作的文档,这是我感兴趣的东西。 我尝试了显而易见的搜索,在gamedev.net上进行了搜索,等等。但是,没有什么可以涵盖世代的球形点,对其进行索引和构造。

4
生成图块地图
我正在编写基于图块的游戏,并且有一些基本的图块(草,土等),但是我不知道如何生成良好的随机图,因为当我进行一些真正的随机选择时,如果图块应该是草/污垢,我得到这个: 我知道为什么会这样,但是我想要的是创建一些随机的连续区域的草或泥土。这样更有意义的事情是这样的:


6
程序生成的纹理发生了什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我记得一段时间以前,程序生成的纹理正变得非常重要,许多人/公司对它们带来了很多好处(包括更小的部署,可能更快的加载,更高质量,可伸缩纹理,可能更便宜的生产等)真正感兴趣。 )。 据我所知,嗡嗡声已经死了,我的雷达上也没有游戏在使用它们。发生了什么? 我希望程序纹理能够像NaturalMotion的东西一样(缓慢但稳定的采用)。


4
随机产生的故事
目前,我正在开发一款游戏,我知道随着玩家的前进,游戏的故事情节会随机生成,并且他们的行为会影响故事。 就游戏玩法而言,这将是一个坏主意,还是具有多个结局的故事情节是最佳主意?


4
创建岛屿地图蒙版的简单方法
我正在寻找一种使用C#为岛地图生成蒙版的好方法。 基本上,我使用的是由Perlin噪声生成的随机高度图,其中地形没有被水包围。 下一步将是生成遮罩,以确保拐角和边界都是水。 然后,我可以从Perlin噪声图像中减去蒙版以获得一个孤岛。 并在对比中玩。 和渐变曲线,就可以得到一个孤岛高度图。 (这些只是示例) 如您所见,岛上的“边缘”刚刚被切除,如果颜色值不是太白,这并不是一个大问题,因为我将灰度分为4层(水,沙子,草皮和岩)。 我的问题是,如何像第二幅图像那样生成一个好看的蒙版? 更新 我已经找到了这项技术,这对我来说似乎是一个不错的起点,但是我不确定我可以如何正确地实现它以获取所需的输出。 http://mrl.nyu.edu/~perlin/experiments/puff/ 更新2 这是我的最终解决方案。 我已经makeMask()在规范化循环中实现了该功能,如下所示: //normalisation for( int i = 0; i < width; i++ ) { for( int j = 0; j < height; j++ ) { perlinNoise[ i ][ j ] /= totalAmplitude; perlinNoise[ i ][ j ] …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.