Questions tagged «algorithm»

算法用于计算,数据处理和自动推理。更准确地说,算法是一种有效方法,表示为用于计算函数的定义明确的指令的有限列表。

4
程序…带房间发生器的房子
我一直在看一些有关程序化生成地牢的算法和文章。问题是,我正在尝试建造一间带房间的房子,而这些房间似乎不符合我的要求。 首先,地牢有走廊,房屋有大厅。虽然最初看起来似乎一样,但大厅不过是不是房间的区域,而走廊是专门设计用来将一个区域连接到另一个区域的。 房屋的另一个重要区别是,您必须具有特定的宽度和高度,并且必须用房间和大厅填充整个物件,而使用地牢则要有空白空间。 我认为房子的大厅介于地牢走廊(可带您进入其他房间)和地牢中的空白空间(未在代码中明确定义)之间。 更具体地说,要求是: 有一组预定义的房间, 我无法即时创建墙壁和门。 房间可以旋转但不能调整大小 ,因为我有一组预定义的房间,所以我只能旋转它们,不能调整它们的大小。 房屋尺寸已设定,必须完全填充房间(或大厅), 即我想用可用的房间填充14x20的房屋,以确保没有可用空间。 以下是一些图片,可以使它更加清晰: 如您所见,在房子里,“空空间”仍然是可步行的,它将您从一个房间转移到另一个房间。 因此,说了这么多之后,也许一所房子只是一个真正非常紧凑且带有走廊的地牢。还是比地牢更简单。也许那里有东西,但我还没有找到,因为我真的不知道要搜索什么。 这就是我希望得到您帮助的地方:您能否给我一些有关如何设计此算法的指导?关于将采取什么步骤有什么想法?如果您创建了地下城生成器,您将如何修改它以满足我的要求?您可以根据需要特定或通用。确实,我正在寻找您的大脑。



1
Raymarch着色器如何工作?
我一直在看这里的shaderoy.com中的着色器,大多数很酷的着色器都有共同的噪点和raymarch。我完全不了解源代码,但我确实想要。这些着色器如何工作,raymarch算法如何工作?我到处搜索,找不到关于该主题的任何内容。 谢谢


3
如何生成蠕虫风格的地形?
我正在开发蠕虫风格的游戏,并希望以程序方式生成一些地形。以前,我已经使用Perlin噪声完成了很多地形生成,而这正是我在此游戏中开始使用的。唯一的问题是它太简单又无聊,给了我一些麻烦,但没有我想要的复杂性。我想拥有诸如洞穴和悬空山脉之类的功能,而且我不介意漂浮的岛屿之类的东西。这样的事情,甚至更疯狂也可以: 我想到先使用经典的Perlin噪波生成地形,然后才移除零件以创建洞穴,但并非如此,但是我很难指导移除这些零件。生成这样的地形还有其他选择吗?

3
如何从种子产生随机水平?[关闭]
我将如何使用随机种子生成游戏关卡?相同的种子应始终生成完全相同的水平。 对于此示例,它将是蠕虫样式级别。因此,每个级别都会有一个主题(草地,雪地等),基本地形,不同的对象(例如树木)。 那么我将从哪里开始创建这种级别生成器呢?会涉及什么?它使用什么概念? 积分为任何任何好的链接(奖励积分为任何有关它是如何在蠕虫或类似的完成)。 谢谢。

9
如何量化画线的直线度?
我正在开发一款游戏,要求玩家在Android设备的屏幕上从点A(x1,y1)到另一点B(x2,y2)画一条线。 我想找出该绘图与一条直线的拟合程度。例如,如果结果为90%,则表示工程图几乎完全适合线条。如果玩家从A到B绘制一条曲线,则得分会较低。 终点未知。我怎样才能做到这一点?

5
在2D中,如何有效地找到最接近点的对象?
我有一个相当大的游戏引擎,我想要一个功能来查找最接近的点列表。 我可以简单地使用勾股定理找到每个距离并选择最小距离,但这需要对所有距离进行迭代。 我也有一个碰撞系统,从本质上讲,我将对象变成较小网格上的较小对象(有点像小地图),并且只有在相同网格空间中存在对象时,我才检查碰撞。我可以这样做,仅增大网格间距以检查紧密度即可。(而不是检查每个对象。)但是,这将需要在我的基类中进行其他设置,并使本已混乱的对象杂乱无章。这值得么? 是否可以使用一些有效且准确的方法来根据点和大小的列表来检测哪个对象最接近?
35 c++  2d  algorithm  vector  picking 

7
模拟游戏世界中大量实体的绝佳方法
假设您有一个游戏,其中有许多实体(许多)服务于某些功能,但并非总是需要或需要在每个框架中都考虑所有这些功能。我正在研究的具体问题是存在一个包括器官在内的人体的详细模拟。 在游戏中,每个生物都有自己的身体,身体分成较小的部分(躯干,腿等),有时这些部分包含器官,这些器官在体内发挥特定的功能。器官的当前用途或作用是未知的。毕竟,动物可能肚子空了,因此不需要消化任何东西。当您在世界上拥有许多生物时,检查或模拟每个帧中的每个对象将是非常荒谬的,而且成本很高。因此,我正在考虑一种巧妙地区分需要更新的对象和不需要更新的对象的方法。 我想出的似乎是至少可以的解决方案。它创建了一个简单的队列/堆栈(本质上是每个元素在读取后即被删除;顺序无关紧要),称为“注意堆栈”,其中需要模拟的对象驻留在该堆栈中。需要注意的对象将简单地放在堆栈上或由其他对象放在那里。这些对象可能会实现带有Simulate()函数的简单接口。 应用于我之前的消化示例,这将意味着: 玩家从清单中选择要吃的东西(假设是面包),并将其放入角色的口中,然后将口放到注意堆栈中。在下一帧中,将嘴从堆栈中取出,并调用其Simulation()函数。由于是嘴巴,因此在这里模拟咀嚼是合理的。这可能会持续几帧,在此过程中,嘴巴会不断将自身放到烟囱上,直到它决定可以吞咽食物为止。在这种情况下,嘴巴将嚼过的面包放进胃中(我知道它不会直接进入胃中,但是为了简化起见,食管被省去了),然后也将其放到注意堆栈中。在下一帧中,开始消化过程的模拟。其余的必要器官等等。 可以预见的问题是空转对象。熟睡的动物就是一个很好的例子。可以通过将熟睡的动物放在堆栈上并每次检查是否需要唤醒来完成上述操作,但这似乎很浪费,因为这是唯一要做的事情。为了使闲置对象更有效率,我计划添加一种时间表,以存储要在特定时间执行的作业。如果动物入睡,它将按照该时间表进行工作,该时间表将在动物入睡后的一定时间内进行。然后,这项工作将负责将熟睡的动物再次放到注意堆栈中。现在,您可以说不在注意力集中的睡眠动物可能会因为没有模拟AI而错过被某物攻击的机会, 现在,老实说,由于缺乏经验,我不知道这是否可以完美解决该问题。我接近可用的东西了吗?通常这是如何完成的,或者有人有什么建议或更好的解决方案?

2
随机/程序与先前制作的关卡生成
使用随机/过程生成与预制级别相比有哪些优点/缺点? 除了项目可能难以在随机生成的地形中分布以及生成的地形看起来很奇怪之外,我几乎没有想到。 但是,以前制作的关卡的缺点是我需要制作一个关卡编辑器。我无法决定使用哪种更好。 答案是否可以包括程序生成和预制生成的代码/示例以及优点/缺点?

12
当目的地无法通行时,如何使A *更快完成?
我正在制作一个简单的基于图块的2D游戏,该游戏使用A *(“ A星”)寻路算法。我一切正常,但是搜索存在性能问题。简而言之,当我单击不可逾越的图块时,该算法显然会遍历整个地图以找到通往不可逾越的图块的路线-即使我站在它旁边。 我该如何规避?我想我可以减少对屏幕区域的寻路,但是也许我在这里遗漏了一些明显的东西?

2
了解Perlin噪声
在与Diamond Square合作后,我正在玩Perlin Noise。我遵循了Hugo Elias的实现,该实现基本上是用x,y作为输入来生成一系列函数以抛出每个坐标值。 我的PHP代码在这里: 我有两个问题: 如何使用该算法在数组中生成高度图?我并没有完全理解它,只是将伪代码移植到PHP,但是在读取算法“神奇地”为给定的每个x,y点(显然,不必读取其)的转换值后,执行了最后一个函数(map_perlined)相邻的值),当用作随机函数时,我得到这个mt_rand(-100,100)/100; 这在使用密码时:(1.0-(($n*($n*$n*15731+789221)+1376312589)&0x7fffffff)/1073741824.0;顺便说一句,可以在PHP中“按原样”实现吗?): 因此,总结三个问题: 我的代码正确吗? 可以按代码中所述将random函数移植到PHP吗?它不会抛出任何错误,但是结果不存在。 我实际上如何使用该算法? 更新 好的,为Gustavson论文中显示的代码添加了一个PHP端口,正如其他编码人员所说,它仅生成一个八度。是否还有其他有用的站点/论文/指南,说明如何结合使用多个八度音阶,幅度,频率等来控制噪声功能?在Gustavson的论文中仅显示了结果,而不是算法的实际实现,也许我遗漏了一些东西? 更新2 @NATHAN 我做了类似的事情: $persistence = 0.5; for ($j = 0; $j < $size; $j++) { for ($i = 0; $i < $size; $i++) { for ($o = 0; $o < 8; $o++) { $frequency = pow(2,$o); …
31 algorithm  php 

2
即使障碍物在移动,A *还是有效的吗?
我刚刚开始学习路径查找,并且一直在研究A *算法,而我主要担心的是,我所看到的所有示例都显示了围绕它进行计算的静态障碍。 如果我有移动障碍物,例如说其他角色,也要四处走动,以确保角色必须找到自己的位置,我假设我必须在每一帧都运行算法,但是我担心这样做会变得很昂贵硬件为每个活动演员处理每个帧。 那么,A *是否仍然足够有效,以便在障碍物也移动时也可以使用,或者还有另一种寻路方法能够更有效地处理障碍物?

5
如何在随机数生成中避免“太”幸运/不幸的条纹?
我目前正在使用一种多人战斗系统,其中玩家造成的伤害总是乘以0.8到1.2之间的随机因子。 从理论上讲,真正随机的RNG最终可能会多次产生相同的数目(请参阅“ 俄罗斯方块困境”)。这可能导致一场比赛,其中一名球员总是造成很高的伤害,而另一名球员总是造成非常低的伤害。 我该怎么做才能确保不会发生这种情况?有些RNG在避免重复方面比其他RNG好吗?

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.