Questions tagged «maps»

地理区域的视觉表示,显示物理特征。

3
随机地图生成
我正在启动/启动Java中的2D tilemap RPG游戏,我想实现随机地图生成。我有一系列不同的图块(污垢/沙/石头/草/碎石等)以及水图块和路径图块,我的问题是我不知道从哪里开始随机生成地图。 它需要具有地形部分(就像其中的一部分是沙子,部分污垢等),这与Minecraft拥有不同生物群落并无缝地彼此转化的方式类似。最后,我还需要向其中添加随机路径,以及在整个地图上沿不同方向行驶。 我并不是要有人写给我所有的代码或任何东西,请给我正确的方向。 tl; dr-生成包含生物群落,路径的图块地图,并确保生物群落无缝地相互融合。
63 tiles  maps  tilemap 


3
程序生成的地形中的降雨+河流创建算法
最近,我对程序化地形可以完成的事情着迷,并开始尝试一些构建世界的尝试。我希望能够通过将各种地图网格化而创建的生物群系来制作像矮人要塞这样的世界。 因此第一步已经完成。使用菱形平方算法,我创建了一些不错的hieghtmaps。下一步是我要添加一些水特征,并根据降雨实际生成它们。我已经读过几种不同的方法,例如从地图的最高点开始,然后“逐步”下降到最低的相邻点,在其下降到海平面时进行合并/腐蚀。 是否有任何记录在案的算法,还是袖手旁观? 会喜欢任何建议/想法。

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

4
正交图和等距图之间的区别
我嘲笑自己对此一无所知。Google没有给出明显的答案。有人可以解释什么是正交图和等距图,以及它们有何不同?
41 maps 

3
如何在程序生成的地图中确定海湾和海峡?
我有一个使用Voronoi单元程序生成的地图,其中包含定义的海平面和可信的高度图。 到目前为止,我已经成功地标注了某些地理特征:土地,海洋,湖泊,河流,河口,汇合处,山脉和生物群落。生物群落包括苔原,北方森林,草原和温带森林。那里还有其他一些生物群落,但就我的目的而言,它们现在并不重要。 我想标记下海湾和海峡,但我对如何正确执行此操作感到困惑。海湾是一条凹陷的沿海水域,直接与海洋相连。 海峡是自然形成的,狭窄的水路,连接了海洋的两部分。基本上,两片土地几乎相接,两岸都是海洋。也称为“渠道”。 为了确定功能,我可以按以下类型遍历任何功能: for each (var feature:Object in geography.getFeaturesByType(Geography.LAND)) // loop through lands for each (var cell:Cell in feature.cells) // loop through cells for each (var neighbor:Cell in cell.neighbors) // loop through a cell's neighbors trace(neighbor.hasFeatureType(Geography.LAND));

6
一种存储潜在无限2D地图数据的方法?
我有一个2D平台程序,当前可以处理100 x 100的块,块坐标存储为long,因此这是地图的唯一限制(maxlong * maxlong)。所有实体位置等都与块相关,因此没有限制。 我遇到的问题是如何在没有成千上万个文件的情况下存储和访问这些块。有什么想法可以实现快速低成本的高清存档格式,而无需一次打开所有内容?
29 xna  2d  c#  maps  platformer 

4
是否有一种算法可以检测2D地图上的“大陆”?
在此地图上,“大陆”是指可以在四个基本方向(北,南,东,西-而不是对角线)上连接到地图中心的所有土地。 我想发现大陆并填补其中的空白。我想到了三件事: 如果可以使用路径查找算法将每个非水(暗单元)单元连接到地图中心,则进行搜索。太贵了!但这可能适用于这些岛屿。 大陆上满是一桶绿色的油漆。每个孔都被油漆包围着...现在呢?如果我检查大陆内部的每个水位是否相邻,我将删除海岸线上显示的一些半岛和其他地理特征。 某种边缘检测可以弄清楚大陆。保留里面的东西,如果是水则填满,除去外面的东西。复杂? 也许一些有游戏经验的开发人员可以帮我解决这个问题,也许可以给我一些已知算法或技术的名称?
28 algorithm  maps 

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

9
用瓷砖绘制球体表面时,如何处理极性变形?
在干净的笛卡尔网格上处理位置交互的方式很容易。这只是简单的数学。如果您只想截断两极或其他物体,则可以忽略一堆球体表面的几何形状。但是我一直想出极地空间至关重要的游戏的想法。地理编码的ARG和全球无赖类物品。 我想要正方形(ish?)位置-无论如何,可以用全球范围内相同大小的正方形瓷砖合理地表示。 这必须是一个已解决的问题,对吗? 有什么解决方案? 预计到达时间: 在赤道上-并假设您的正方形位置相当小,它非常接近真实值,您可以在最赤道行南北两行拥有一个正方形。而且,您可以通过手动挥动高达45度左右的差异来避免这种情况。但是最终,极点向圆周的行中需要减少正方形。如果我将行的长度减少1并将正方形偏移1/2,则它们就像十六进制,并且进行编码以跟踪连接相对容易。但是,随着您的步入正轨,它变得越来越极端。 将世界的表面投影到立方体的表面上很诱人。但是我认为必须已经使用了更优雅的解决方案。 如果我做了立方体的事情(不通过大地测量学进一步剖析),那么将杆放在面的中心或三个侧面的顶点是否有任何利弊?


3
地图坐标系的最佳做法
游戏地图中的坐标系周围是否有约定和/或最知名的方法?原点通常位于地图中心吗?还是它生活在角落里,而地图是建立在3D空间的一个八分之一内?

4
球面图表示
我最新的游戏将在一个小行星上进行。我正在寻找用于表示球体表面上的单元的良好数据结构。三角形,正方形,五边形,六边形?哪一个最大程度地减少了拉伸并创造了最好的贴砖? 球形贴图是最简单的,但极点处的拉伸是不可接受的。立方体贴图也很容易,但是在立方体角附近仍然会有相当大的拉伸。就拉伸而言,细分二十面体似乎是最好的,但是存在索引许多三角形阵列并在边界处查找相邻单元的问题。 我想我可以使用代表N个角的单个线性点数组,每个点都有N个邻居索引数组,但这似乎浪费了很多空间。 该游戏具有RTS元素,因此我将存储诸如影响力图之类的内容并执行A *寻路和卷积,因此表示必须高效。
19 maps  sphere 

5
在现代多人游戏中,巨大的静态对象(如环境)是否从服务器传输到客户端?
我有一个权威的系统,当玩家加入比赛时,它会获取所有已经生成的对象-本身(客户端)生成的对象。 看起来像这样: Client 将访问令牌发送到 Server Client 收到来自 Server Client 将场景切换到游戏场景 Server发送玩家,板条箱,可以与之互动的对象,以便client生成并显示它们。 但是地面物体呢?现在,我在服务器和客户端上具有完全相同的场景-以一个静态平面作为地板。目前,我正在添加新的东西,树木,楼梯并一起构建东西。 我以为-我们很好。但是环境也应该不同步吗?是否以某种方式联网?由服务器拥有? 让我们来League of Legends: 这是一个静态环境,可能是一个组合的网格(楼梯,草地,墙壁,商店)。但是它是真正保留在客户端上还是由服务器在加载屏幕期间发送?
18 unity  networking  maps 

2
如何生成类似于《帝国时代II》随机地图的随机地图?
我喜欢《帝国时代II》生成随机地图的方式(种类繁多,生物群落过渡不错,地图感觉随机而不混乱),但仍在努力复制样式。我尝试使用例如Perlin噪声,但是所有结果要么太均匀,要么不一样,Perlin值->地形启发法过于敏感和脆弱,无法创建各种世界类型。 我记得AoE2地图类型“未知”广告了“ 100,000张可能的地图”,暗示了一些种子编号的用法,但是我不确定如何使用种子编号来产生我所看到的品种。 我可以使用什么算法和启发式方法来生成类似于AoE2随机图的随机图? 编辑更具体: 进一步思考我的问题,并研究我对AoE2随机地图引擎的喜欢,我认为我最大的问题是管理地图上水和植物生命的分布。我现在看到我也将其与“有意义的生物组转换”联系在一起,但这是一个不同的问题(尽管我希望继续使用Perlin噪声将使其难以解决)。 我添加了几张AoE2随机映射,突出显示了我对它们的映射引擎的喜好,但我自己的努力未能重现。所有屏幕截图均取自随机地图类型“自定义”->“未知”。我没有指示游戏使用特定地理位置,例如群岛。 以下是来自我自己的地图引擎的图像。每个像素对应一个AoE2地图图块。 我的项目的一个难题是我希望地图比AoE2地图大很多倍。因此,无论我使用哪种引擎,都必须能够在每个地图中创建完整的生物群系,而不能像AoE2那样在每个地图中创建一组狭窄的生物群系。 帝国时代II地图 这是一个具有内陆湖泊和类似河流的事物的示例。我喜欢地图上包含大量散布的水的方式,但是水仍然有些集中-有大量土地可用于建立帝国。您无需花费整个游戏就可以在水上规划城市。 这是一个类似的示例,其中游戏足够聪明,可以将岛屿与可穿越的沼泽相连。我无法想象基于噪声的算法将如何在那以及只有那些地方造成沼泽。另外,请注意游戏是如何创造土地的,以便每个玩家都拥有自己的私人大片土地。它并没有创造出一片随机的土地,然后就每位玩家开始时哪怕是最糟糕的猜测。 我喜欢这张地图也大量使用水,但其中不包括许多内陆湖泊。将其与第一个图像进行对比。我喜欢AoE2使用相同的构建块创建完全不同的地理位置的方式。我尝试使用Perlin噪音的尝试在这里失败了-我要么获得了广阔的海洋,使陆地或10,000个湖泊的土地相形见war。我还发现很难同时到达岛屿和相连的大洲(想想北美/南美)。 将此图像与其上方的图像进行对比。他们表明地图的干旱度不取决于水位。第一张图片的地图几乎没有水,但包含森林和草丛。第二张图像的水量适中,却是沙漠。我喜欢那是可能的(想想您的世界既有新墨西哥,又有撒哈拉和哥斯达黎加)。 我自己的地图 我在很多地方都读到,构建地图的一种好方法是对Perlin噪声的多个级别进行分层,每个级别代表不同的数据维度。按照流行的建议,我选择了海拔和湿度,并从此处的Whittaker表中选择了地形类型。 我拍了两个珀林图,通过一个简单的量化每个值成整数if perlin_val < x { i=some_int } else if perlin_val < y...,然后将(海拔,湿度)整数对映射到地形类型表(例如[1,0]->热带沙漠,[1,1 ]->草原)。该系统中包括海洋-海拔= 0定义的海洋。 有很好的变化,并且在许多方面感觉都像真实世界,但是存在一些问题: 首先,海洋深度没有规律。您可能希望靠近岸边的浅水区和更远的深水区,没有哪个韵律或原因 第二,所有的水都集中在海洋中。没有湖泊或河流,因为Perlin噪声不会在大洲中部突然下降到较低的值。 在每个生物群落的数量之间取得平衡非常非常困难。我将此归因于: Perlin噪声遵循正态分布,因此很难估计如何调整每个尺寸映射的概率 试图平衡多个维度很困难-也许我想要更多(2,3),所以我提高了获得(n,3)的几率。好吧,现在我有太多(3,3)了,一切看起来都错了。 当我将噪声放大到足够接近以获取平滑数据时,我没有得到非常完整的Perlin值样本。因此,我需要调整我面前地图的分布,重新加载新的随机地图,并获得截然不同的结果。 我试图通过使用第三组Perlin值制作水来解决河流/湖泊问题。根据水/土地的二元决策,然后将以上所有内容应用于土地。这使控制水的分布变得非常容易(仍然不完美,但是更好),但是引入了一个问题,那就是存在许多没有意义的生物群落过渡。例如,茂密的草原中莫名其妙的沙漠,沙滩上的雪等。由于上述原因,仍然很难控制陆地生物群落的比例。 考虑到上述问题,我尝试了一种更简单的算法,该算法仅将Perlin噪声映射到一个维度。我现在有一系列的地形类型,从0 =深海-> 1 =浅海-> 2 =沙滩...-> N =雪。虽然这产生了岛屿和大洲,并且使平衡每个地形的比例变得容易得多,但地形类型却过于聚集。每个陆地块看起来都像一张海拔图,通常没有分散在其表面的地形类型。每个陆地块都具有大致相同的特征,始终具有相同的顺序,并且始终具有相同的环形形状。

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.