在游戏地图上创建非均匀空间

时间:2013-02-16 05:28:51

标签: javascript html5-canvas voronoi

我需要有关创建游戏地图的建议。我需要在地图上创建1400个空格。我想象每个空间将是10种不同尺寸中的一种 - 例如,他们将是十几个'尺寸10',四十个'尺寸9'等等,最小的几百个-sizes(这是数据驱动的)。中心也会有一个中立空间(可能比其他所有空间都大)。我想随机将这些区域放在游戏区域,但不应该重叠,它们之间没有空格。如果总空间是矩形则无关紧要。我真的很喜欢this effort,虽然它不属于我的联盟,但它让我研究voronoi tesselations并找到我有点理解的javascript implementation,但我看到的所有例子都使用随机点作为起源正如我上面所描述的那样,我正在寻找更加自定义的结果,所以这可能不是最佳选择。 ---无论如何,我对任何建议持开放态度。请注意,我是一名设计师,而不是一名程序员,但我正在编写自己的原型,所以任何建议都值得赞赏。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,这似乎与Knapsack Problem类似。但是,您只需寻找单一解决方案,而不是优化。这在尝试和解决方面实际上是一个非常困难的问题,无论是在时间复杂性方面还是在合理地(即在合理时间内完成)工作方面。 This是一篇关于它的有趣帖子(尽管他处理的是优化) - 只需要一点点工作,你就可以提供一个足够好的算法。

答案 1 :(得分:0)

如果我理解你想要实现的是所谓的路径导向细分树或quadtree。该算法的具体方法是将一个矩形二维空间递归地划分为四个较小的部分,称为象限或四边形。区域可以是正方形或矩形,或者可以具有任意形状。

如果您需要一个真实的例子来研究代码,您可以将这个实验作为起点在Actionscript中创建,但这也可以很好地转换为Javascript:http://wonderfl.net/c/fLVs

另一种可能性是Delaunay triangulation手动选择控制点,因为如果理解正确,您不希望随机分散点。也许这个链接会有所帮助:http://neoformix.com/2012/DelaunayImages2.html

我希望这些有帮助!