Questions tagged «hexagonal-grid»

使用规则六边形进行网格拼贴的表面的规则镶嵌。

6
垂直与水平十六进制网格的优缺点
使用十六进制网格时,可以选择将瓷砖的尖边朝上排列,以便可以沿东西向轴移动,也可以使边缘朝上排列,从而可以沿南北轴移动。 。 水平或尖头朝上的十六进制网格: 垂直或侧面朝上的六边形网格: 根据此页面,垂直对齐在纸和纸RPG中是“迄今为止最受欢迎的”,但并不能解释为什么。这篇博客文章也提到了这两种变体,但再次没有给出使用任何一种的理由。 而且,如果您看一些使用十六进制的PC游戏,似乎两者都有其拥护者: 水平:魔法门之英雄无敌系列(V除外),文明V ... 垂直:装甲将军和许多类似的战争游戏,韦诺之战... 但是,选择垂直或水平六边形网格布局的主要原因是什么? 我在寻找数据结构,图形,游戏玩法等方面的客观优势和劣势,而不是个人喜好。还是选择哪种方向真的无关紧要?

4
为什么不使用八角形图而不是六边形图?
我了解六角形瓷砖比方形瓷砖的优势。但是为什么不使用八边形呢?我认为它们可以在八个方向上提供更好,更自然的运动。 我当时正在考虑在某些游戏中使用这种地图,但是我还没有看过任何游戏在使用它,所以我想知道我是否错过了使用它时明显存在缺陷的东西?

5
如何为基于浏览器的策略游戏从数据库中用PHP创建六边形世界地图
我正在尝试为基于PHP浏览器的策略游戏创建六角形世界地图。我已经在数据库中创建了一个表,每行包含以下数据:id,type,x,y和占用。其中type是瓦片的种类,以数字定义。例如,1是草。地图本身为25 x 25。 我想使用可点击的图块从数据库中绘制地图,并使用箭头在地图上导航。我真的不知道如何开始此工作,任何帮助将不胜感激。

2
六角形网格/平铺教程[关闭]
是否有任何有关创建基于六边形网格的地图/游戏的平台或语言不可知(最好是逐步介绍)的教程?我主要对网格/平铺基础知识感兴趣,而不对高级游戏引擎感兴趣。到目前为止,我已经找到了这些: 用于游戏和其他项目的六角形网格 六角网格数学

2
获取六角形网格中的瓷砖环
感谢这篇文章:六角砖并找到它们的相邻邻居,我能够将相邻砖收集到给定的砖中。但是我几乎迷上了一种算法,该算法只给我一个由偏移量指定的图块“环”。Stack Overflow帖子中给出的算法并不完全在乎它收集图块的顺序。 我知道每个偏移量都会添加6个图块。 偏移1为您提供6个图块(第一个相邻图块)。 偏移2给您12。 偏移3给您18,依此类推。 每个偏移量持续增长6。因此,我认为应该有一个适应这些偏移的规则。我不能完全弄清楚这一点。任何人?

3
识别六角形Clickbox
我工作的一个游戏,将涉及喘气六边形。 目前,我正在使用一个六边形图像(所有边的长度相同...适合50px x 50px的图像)。 我是C#的新手,还是XNA的新手,但是有没有一种我可以调用的简单方法,而不是根据点和角度进行复杂的if语句?
17 c#  xna  hexagonal-grid 

2
六角形游戏网格的高程模型
TL; DR: 高程应在Civ样式的六角形网格上锚定的位置?中心,侧面还是顶点?(或更复杂?) 问题适当: 考虑一下我们都知道并且喜欢(也许?)的经典游戏,Sid Meier的Alpha Centauri。该地图模型将全新的可见地形标高概念引入了经典的Civ公式。在SMAC中,游戏板的每个顶点都有一个高程,考虑到蠕虫在各个角落等着沸腾,地图就可以在美丽的起伏山丘上形成,这是完全必要的。 仅顶点的高程图会整齐地转换为六边形网格吗? 显而易见的替代方法是基于侧面的立面映射和基于中心的立面映射;以及内部顶点高程贴图(给了悬崖的机会!是的!) 最后一个选择是在游戏网格上应用一个三角形网格,该网格包含中心和顶点,并具有仅顶点或内部顶点高程。 这些选项中的哪一个可能会运作良好?哪个可能会急速地从CPU和RAM中吸走所有汁液?

3
如何在n个玩家之间平均分配十六进制网格?
我正在制作一个简单的基于十六进制网格的游戏,我希望地图在玩家之间平均分配。该地图是随机创建的,我希望玩家拥有大约相等数量的单元,且区域相对较小。例如,如果地图上有4个玩家和80个像元,则每个玩家将有约20个像元(不必精确定位)。另外,每个玩家的相邻单元格不得超过四个。也就是说,在生成地图时,最大的“块”不能超过四个单元。 我知道这对两个或三个玩家来说并不总是可能的(因为这类似于“为地图着色”的问题),我可以为他们做其他解决方案(例如创建可以解决问题的地图)。但是,对于四到八名球员,我该如何解决这个问题?


3
在六角形网格上找到最短路径
我正在写一个带有一些模拟元素的回合制游戏。我目前挂着的一项任务是寻找路径。我想做的是利用AI当前的x,y和目标x,y将AI冒险者每转一圈,使其离目标越来越近。 在自己弄清楚这个问题的过程中,我可以确定使用4个方向没问题 dx = currentX - targetY dy = currentY - targetY 但我不确定如何确定6个方向中的哪个实际上是“最佳”或“最短”路线。 例如,按照当前的设置方式,我使用东,西,NE,NW,SE,SW,但要转到NE磁贴,我先向东移动然后向西北移动,而不是仅向西北移动。 我希望这不是全部。即使只是一两个链接就可以让我入门也很好。我发现的大多数信息都是关于绘制网格并增加所需的怪异坐标系。



6
一组图块边界的高效算法
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我有一个已知的有限大小的瓷砖网格,可以形成地图。地图内的某些图块放置在称为“区域”的集合中。该区域是相连的,但对其形状一无所知。在大多数情况下,它是一个相当规则的斑点,但它可能在一个方向上被拉长,甚至可能有孔。我有兴趣找到该领土的(外)边界。 也就是说,我想要一个列表,列出所有与区域中的某个区域相关但未在区域中的区域。找到这个的有效方法是什么? 额外的困难是,我的图块是十六进制的,但是我怀疑这并没有太大的区别,每个图块仍标记有x和y整数坐标,并且给定一个图块,我可以轻松找到它的邻居。下面是一些示例:黑色是领土,蓝色是我要查找的边界。 这本身并不是一个难题,用伪python的一种简单算法是: def find_border_of_territory(territory): border = [] for tile in territory: for neighbor in tile.neighbors(): if neighbor not in territory and neighbor not in border: border.add(neighbor) 但是,这很慢,我想要更好的东西。我在整个领土上有一个O(n)循环,在所有邻居上有另一个循环(虽然很短,但仍然),然后我必须检查两个列表的成员资格,其中一个列表的大小为n。这给定了O(n ^ 2)的可怕比例。我可以通过使用集而不是边界和地区列表来将其简化为O(n),以便快速检查成员资格,但这仍然不是很好。我希望在很多情况下,由于面积和线比例缩放的原因,领土很大但边界很小。例如,如果区域是半径为5的十六进制,则其大小为91,而边框的大小仅为36。 谁能提出更好的建议? 编辑: 要回答以下一些问题。区域的大小范围从20到100左右不等。形成区域的图块集是一个对象的属性,而这个对象需要所有边界图块的集合。 最初,领土是作为一个街区创建的,然后大部分都是一块一块地获得。在这种情况下,确实最快的方法是保留一组边界并仅在获得的图块上更新它。有时,可能会对该地区进行重大更改-因此需要重新计算。 我现在认为,执行简单的边界查找算法是最好的解决方案。这带来的唯一额外复杂性是确保可能需要每次都重新计算边界,但不超过此数目。我非常有信心可以在当前框架中可靠地完成此操作。 至于时间,在我当前的代码中,我有一些例程需要检查该区域的每个图块。不是每回合,而是在创作时以及随后的创作中。即使它只是完整程序的很小一部分,也要花费我的测试代码运行时间的50%以上。因此,我渴望尽量减少重复。但是,测试代码涉及的对象创建要比程序正常运行(自然)要多得多,因此我意识到这可能不太相关。

3
在六角形网格上显示范围
这是情况。 我有一个六角板,上面有一个单位,具有速度或移动值。4。地形不同,成本也不同。当我单击该单位时,游戏应向我显示移动范围。 我的解决方案是使用A *寻路来检查4个范围内的每个十六进制,如果路径成本小于4,则此范围内的十六进制。最后,游戏很好地向我显示了该单元的范围。 我的问题是:是否有其他解决方案可以在十六进制网格或正方形网格上搜索范围,因为即使我为自己在解决方案中所做的事情感到非常自豪,我认为这还是有点夸张了吗? 是什么让我问这个问题?我注意到,当单位速度为4或6甚至8时,我的计算机达到计算范围的时间确实不错,但是当速度为10或更高时,我注意到我需要等待几秒钟来进行计算在真实游戏中,我宁愿看不到这样的东西,而且我的A *寻路功能已经过优化,因此我认为我的解决方案是错误的。 感谢您的任何答复。

3
存储十六进制网格
我一直在为Unity3D创建一个小的十六进制网格框架,并遇到了以下难题。这是我的坐标系(从此处获取): 除了我不知道如何存储外,所有这些都很好地工作。我最初打算将其存储在2D数组中,并使用图像生成我的地图。 一个问题是它具有负值(可以通过稍微偏移坐标来轻松解决此问题)。 但是,由于坐标系的原因,此类图像或位图必须是菱形的-并且由于这些结构是方形的,因此即使我一起砍东西,也会造成很多麻烦。我有什么可以解决的问题吗?我记得在统一论坛上看到过与此相关的论坛帖子,但我找不到链接。 在这里编写一组坐标翻译器是最好的解决方案吗? 如果你们认为这会有所帮助,我可以张贴代码和问题图像。

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.