Articles of 程序生成

元胞自动机中的“随机元素”是做什么的?

我在TutsPlus上阅读这篇关于使用元胞自动机生成程序级的文章。 我的问题出现在这个代码片段中: float chanceToStartAlive = 0.45f; public boolean[][] initialiseMap(boolean[][] map){ for(int x=0; x<width; x++){ for(int y=0; y<height; y++){ if(random() < chanceToStartAlive){ map[x][y] = true; } } } return map; } 在第一行中,作者声明了一个代表45%的浮动。 这是有道理的。 不过,这个角色对我来说还不清楚。 在这一行中: if(random() < chanceToStartAlive) 正在生成一个随机数字,如果小于0.45f ,正在testing。 既然这是一个不等式,这个expression式可以返回true还是false正确的? 这个百分比究竟是如何影响这个循环? 谢谢!

Pick A Brick克隆中需要使用algorithm来生成连接的砖块

我想制作一个Amiga 500的游戏“ Pick A Brick” ,一个2D游戏,其目标是按照一定的规则通过匹配来清理一张砖。 当涉及到生成砖布局的algorithm时,我没有办法。 我已经添加了游戏规则(我记得他们)。 玩家通过在时间用完之前清除所有瓷砖而赢得游戏。 通过点击一对瓷砖来清除瓷砖,如果以下情况属实: 瓦片必须是相同的types(每种types只有一对)。 他们之间有一条清晰的path(更多的path在下面)。 从瓦片开始的path必须始终朝着屏幕的(清晰)边缘开始。 瓷砖之间的path必须是U形的。 (编辑)注意:在video中,path并不总是U形的。 我不记得所显示的path是否只是一个快捷方式,但不管在我的版本中,我不希望允许从内部删除瓷砖。 我已经做了一些手动testing/原型,使用外部和内部的方法,两者都有变化。 到目前为止,我所提出的任何东西都是非常接近的。 我有点不喜欢问这样的问题,因为这个问题如此具体,可能不是普遍的兴趣,对于任何有兴趣帮助的人来说,可能会花费更多的时间。 也就是说,有人喜欢提出algorithm和“解决问题”,社区可以从答案中学到一些东西,所以就是一个post。 (编辑)澄清。 该algorithm必须提供可解的解决scheme。

如何改变基于距离的产卵机会?

我正在尝试制作一个蜂窝式的自动化洞穴,但是想保持空洞。 我应该如何改变基于距中间距离的机会? 我不想完全否认它只是想要一个足够小的机会来保持它几乎是空的。

修改2D C#噪声的频率

我开始实施C#噪声function,应该帮助我们在项目的程序生成部分。 代码正在工作,我们有这样的东西: 当我尝试修改噪声的参数,尤其是频率时,问题就开始了。 当我把频率增加到1时,我得到了这个:它显示了一些线条,我认为它不应该。 这是一个300 * 300像素(有点裁剪底部)。 我认为这是不正常的,我认为这是关于文件PerlinNoise.cs的第37行的频率的math公式。 这里是代码的GitHub(我使用SMFL渲染): GitHub链接 我正在使用这个页面上描述的algorithm,我重写了: 原代码链接

二维地形生成algorithm的优化

我正在用二维开放的复杂噪声生成二维地形,但是在生成TileMap中的地形时,我遇到了FPS较低的问题。 我的游戏如何在javascript中生成地形的示例: function generator(map_size=0, _posWorld=[0, 0], size=[1, 48], seed=0) { var simplex = new SimplexNoise(seed); var x = 0; var y = 0; var pos_modx = 0; var pos_mody = 0; while (x < size[0]) { pos_modx = utilsfunctions.mod(_posWorld[0] + x, map_size); y = 0 while (y < size[1]){ pos_mody = utilsfunctions.mod(_posWorld[1] + y, map_size); […]

用预定义的对象和约束生成随机等级的algorithm

比方说,我正在开发一个游戏,在这个游戏中生成一个城市,建筑物被随机放置。 生成道路的方法很容易find,就像创造一个迷宫,但我想不出一个方法来产生和放置建筑物。 建筑物离公路应该有多远,阳台应该面对哪里,花园或者树木靠近建筑物。 更重要的是,如果有一所学校,那么这个世代就不可能全是随机的。 游乐区和篮球场应该在一个方向,建筑入口也应该面对这一点。 医院的紧急和正常出口朝向一个方向,停车位在另一个方向,在一个购物商场同时有入口和停车位。 我还没有find合适的解决scheme。 我想到了使用物理模拟,在同一个地方堆叠物体,给他们量,并施加力量到他们应该在的地方,等待一段时间,直到他们解决。 这将解决一些限制,并防止任何重叠,但可能会有这样的缺点。 我想知道是否有一个更简单或更有效的algorithm来解决这个问题。

随机地形生成与洞穴

我目前正在制作一个小型的游戏,如果你愿意的话,这个游戏将会产生一个洞穴和洞穴入口的世界,就像Terraria一样。 今天我在世界/洞穴生成代码上遇到了一些麻烦。 我想使用Perlin噪声,但我不知道如何将其实现到我的代码。 有人能指引我参考甚至是代码样本的正确方向吗?

将瓦片值放在“块”边界上

我的游戏有一个类似于“Minecraft”的“块”引擎,但在2维空间。 每个块是一个32×32的方块。 我想要做的是跨多个块生成一个定义的形状,而不会破坏形状。 这是因为大块在一段时间内以一个未知的时间间隔产生一个块,所以在产生需要的块的数量之后,我不能放置一个结构,因为玩家可能会前进到该区域那时。 另一个问题是,我不能简单地平铺形状,因为形状需要正好在表面之上的一个瓦片,这是使用单纯的噪声产生的高度图,所以它不是平坦的。 有没有什么办法可以从一个起点的原点生成这个结构,这个结点是以一个已知的高度图随机的间隔放置的? 我想要的例子: 灰线 – 大块边界 白色瓷砖 – 结构的一代 蓝色瓷砖 – 已知的一维高度图 如何才能做到这一点?

使用程序生成的项目处理项目数据库?

假设你有一个物品数据库,其中包含游戏中的所有物品。 这对普通物品如生命药水,正常的铁剑等工作正常,因为这些物品有ItemID的,所以我们可以得到这个项目的确切副本。 但是如果我们有一把铁剑附魔:“+5火焰伤害”呢? (管他呢) 如果您要将该物品存储到玩家的库存中,请退出游戏并加载游戏,该物品将作为常规铁剑加载,因为它仍然具有该ID。 具体来说,你如何将这个项目保存到一个文件? 我使用的是Unity,所以为了保存玩家的库存,我使用: PlayerPrefs.SetInt("Inventory " + i, inventory[i].ItemId ); 你会创建一个自定义项目ID为每个项目附魔或有没有更好的方法呢?

程序网格的拓扑结构是重要的吗?

我一直在做一个项目,涉及生成3D游戏模型,大多是硬质表面的,程序上。 我必须担心保持拓扑清洁吗? 拓扑结构会影响纹理,还是会对我没有想到的模型产生任何其他影响?