Questions tagged «maps»

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

3
自上而下的2d地图:归一化与否?
我是游戏编程的绝对初学者,如果这个问题的表述不当,请注意,这不是我身边的草率行为,而是缺乏游戏编程经验。 我计划编写的游戏将使用自上而下的2D地图作为“世界”。世界可能大于窗口(窗口可以放大或缩小),并且车辆可以位于世界的任何位置(=它不是平铺的地图,空间是“连续的”)。 举例说明:如果世界是1000x1000米的地形,则车辆可能位于(327.31,720.4)米的位置。 我的问题是:内部代表世界的最便捷方法是什么?我可以考虑以下可能性: 什么也不做,像使用物理对象一样使用仪表, 标准化为将世界尺寸定义为代表最大缩放1000米的像素数的像素, 标准化为1,将单词定义为大小为1的正方形 ...但是我敢肯定,可能还会有其他一些/我的一些没有意义。仅仅是我的第一场比赛,我对自己面临的问题并没有清晰的认识,我希望获得一些指导,以做出合理正确的初始选择。 感谢您的时间。
11 2d  maps 

3
二维表示行星表面
我想制作游戏,其中一部分工作是管理星球(建造城市,工厂,道路等),但我想避免使用3D-只有我想要的是2D。但是,如果我将行星表面表示为网格,那么靠近极点移动将很奇怪(如果我向上移动,我不会出现在地图的底部,而是出现在地图的顶部-仅在不同的位置),它将是很难拥有漂亮的地形(电线杆会拉长)。你有什么想法怎么做?
11 2d  maps 


3
整体地图设计与图块阵列设计
我正在开发2D RPG,它将具有通常的地牢/城镇地图(预先生成)。 我正在使用图块,然后将它们结合起来制作地图。我最初的计划是使用Photoshop或其他一些图形程序组装瓷砖,以便获得一张更大的图片,然后将其用作地图。 但是,我在一些地方读过人们在谈论他们如何使用数组在引擎中构建地图(因此,您向引擎提供了x个tile数组,并将它们组装成地图)。我能理解它是如何完成的,但是实现起来似乎要复杂得多,而且看不到明显的优点。 最常用的方法是什么,每种方法的优点/缺点是什么?
11 tiles  maps 

2
如何管理图块地图和单位之间的依赖关系
我在作品中有一个基于2D切片的策略。我在徘徊如何处理地图和地图上单位之间的关系。 给定一个平铺坐标,我将需要使该单元站立在上面(如果有)。同时,如果给定一个单位,我将希望能够获得该单位的坐标。 我已经看到了两种解决方案。第一种解决方案是让单位存储一个坐标,而地图将单位引用存储在其图块中。这在地图和单位之间创建了循环依赖性。如果单元移动,我需要确保地图和任何单元保持同步。 第二种解决方案是只让单位跟踪其坐标。为了判断图块是否包含一个单位并获取该单位,我将遍历整个单位单元,找到一个具有匹配坐标的单位。这样就摆脱了循环依赖,但是却失去了第一个解决方案从地图中查找单位所具有的O(1)属性。由于我希望能够定期扫描地图以查找诸如路径查找,确定运动范围以及为给定单位找到有效目标之类的信息,因此这可能会加起来。 我也不能只将单位存储在地图中(或者可以吗?)。单位与玩家或AI的“军队”相关联。一支军队应该能够轻松地访问和遍历其所有部队。 由于这似乎是战略游戏中的常见问题,除了我描述的两种用于管理单位/地图关系的模式之外,还有其他模式吗?
11 tiles  maps  character 

2
将“真实单位”缩放为像素的通用模式?
这是对另一个问题的后续问题。 我想知道是否存在一个通用/典型/最佳模式来缩放我对世界的表示(当前为160Kmx160Km)以使其适合绘图区域(当前为800x600像素)。 我可以想到至少四种不同的方法: 天真(到目前为止我的方式)。我实现了一个全局函数sc(vector),该函数将简单地返回传入的向量的按比例缩小的副本。这当然有效,但是必须我编写如下代码: drawCircle(sc(radius), sc(position)) 包装功能。我可以定义几个函数,每个函数都包装原始的中间件。例如,我可以定义myDrawCircle先缩放需要缩放的参数,然后再调用drawCircle后者。这可能会使我的代码更具可读性,并且更易于维护,但是我应该编写很多包装函数,听起来很傻。 功能装饰器。我可以简单地装饰现有的中间件功能,对所有属于这个类的一个实例参数提供自动缩放Vector3D,但问题是,这些功能也使用相同的参数是工作list还是Vector2D也和装饰就没有办法知道哪些列表需要缩放(例如半径),哪些​​不缩放(RGB值)。 表面初始化。在定义要绘制的表面时,我可以定义比例因子(这样我就可以使用米而不是像素作为参数)。这将对我透明地工作,并且是我选择的解决方案,但是当然应该在中间件中实现,因此这不是一个真正的选择。 ...无论如何:由于这是一个非常普遍的问题,所以我想知道是否存在一种可以很好地解决我未能找到的问题的既定模式。 PS:对于这个项目,我正在使用python(与pygame一起使用),但是-尽管对python / pygame特定的答案非常,但我对模式的一般/高级描述而不是其具体实现更感兴趣。 预先感谢您的时间和专业知识。

2
如何在六角形网格上旋转六角形瓷砖的结构?
我的2D等距游戏使用六角形网格图。参考下图,如何将浅蓝色六边形结构围绕粉红色六边形旋转60度? 编辑: 主十六进制是(0,0)。其他十六进制是孩子,他们的数目是固定的。我将只定义一个位置(在本例中为右),并根据需要计算其他方向(左底,右底,右上,左上和左)。其他十六进制定义为:Package.Add(-1,0),Package.Add(-2,0),依此类推。 switch(Direction) { case DirRightDown: if(Number.Y % 2 && Point.X % 2) Number.X += 1; Number.Y += Point.X + Point.Y / 2; Number.X += Point.X / 2 - Point.Y / 1.5; break; } 在这段代码中,Number是主要的十六进制,Point也是我要旋转的十六进制,但是它不起作用:

2
在大型瓷砖地图以及地牢上“分区”区域
我的游戏以伪无限且随机生成的方式具有类似于Minecraft的地图。又大 假设用户浏览了1000x1000区域(此处为2D),那么就是1,000,000个图块。 显然,我将无法将其全部存储在内存中。我也不只是想忽略10个磁贴或任何半径范围之外的所有内容-两者都不会更新(所有NPC,也许是反应性磁贴),我将不得不处理诸如1382,12918之类的笨拙位置。 因此,如果我要将其拆分为块或区域或诸如64x64的瓷砖之类的东西,则必须存储每个瓷砖和对象的位置,例如: 块a,b 位置x,y。 但是,如果我想要在地图中使用地牢之类的东西怎么办?因此,一块瓷砖可能会导致一个40层的地牢,每个区域的面积为40x40。我无法将它们完全存储在同一张地图中。 还有记忆的一面;我可以合理地同时在内存中存储多少?我可以很容易地按ID进行平铺,并在那里有普通的2D阵列。还是再说一次,有没有比包含瓦片类型的数据文件更有效的解决方案?所以对于64x64 ..那只会是20K或其他 我希望尽可能多地加载最真实的更新。但是我不知道在不浪费内存的情况下可以达到什么样的限制。

3
《我的世界》世界中的照明
《我的世界》是一款主要基于高度图的游戏,并使用该高度图信息使世界充满光明。据我了解,高度图中的最高点是受阳光影响区域的末端。上方的所有物体都被阳光照亮,下方的所有物体都受到附近8个半径范围内的光线的影响。 因此,如果您在世界之巅上有一个浮岛,那么位于其下方的所有事物都会被视为一个洞穴。当两个灯影响同一点时,较亮的灯将获胜(对此不确定)。 无论哪种方式,Minecrafts的照明模型都存在两个问题:首先,如果您的世界没有高度图,那么弄清楚究竟应该发出什么阳光以及什么不发出阳光变得很棘手。一种简单的方法是假设世界(在我的情况下)是一块漂浮的岩石,然后从两个方向遍历每个轴并找出岩石的开始和结束位置。但这并不能完全消除问题,因为岩石中的凹痕不应该处于黑暗中。 Minecraft本身会将光信息与有关块材料的信息一起缓存在其块中。因此,只有在世界被修改的情况下,照明才必须更新。不幸的是,该过程在更新上仍然相当缓慢,并且在快速更改灯光时,人们可以看到照明落后。如果很多块发生变化(TNT,日落等),并且您没有运行最快的计算机(或Mac上的Java),则尤其如此。 从我对3D图形照明的了解仍然有限,像Minecraft这样的世界应该不是最大的问题。您将如何解决这个问题? 我认为体素世界中照明的基本要求是 更新速度足够快,以至于可能在单个帧中发生。一个人可能可以在图形设备中进行照明并将更改后的照明信息下载到主RAM。 灯光信息必须能够快速用于主要游戏逻辑,因此不能完全基于图形设备:推理:灯光会影响草的生长,怪物的产卵等。 灯光更新必须是局部的,或者有其他一些限制,这样就不必重新照明可能很大的整个世界。 主要思想是使灯光更新更快,但不一定更美观。对于一般的灯光渲染性能改进,可以很容易地在其中添加SSAO,这将带来更好的效果。
10 opengl  maps  lighting 

1
在地图上以程序生成的2D弯曲道路
我一直在尝试使用算法为正在开发的游戏自动生成路线图。 我使用“ Kingdom Rush ”游戏作为参考点,因为它们具有一些精美的地图。 我是程序性内容生成的新手,并且想知道这里是否有人有任何指针。我已经尝试过生成随机的道路拓扑,例如,一些入口/源节点,一些内部节点(叉和合并)以及一些出口汇点节点,然后使用图形布局算法根据此信息创建实际的道路图。 这是一个使用Fruchterman-Reingold算法进行道路布局的示例: 蓝色图形使用一些随机生成的Bézier控制点来使边缘看起来不太平直。 这是使用相同算法但使用不同随机数生成的另一个示例: 麻烦的是,大多数结果最终看起来都非常相似,而且我不确定可以添加哪些规则来改善过程生成地图的可控制性和多样性。 任何建议表示赞赏。

5
增加相似图块彼此相邻生成的可能性
我正在开发一个瓷砖地图系统,它看起来像这样(绿色是草,空气是白色,石头是灰色,蓝色是水): 它使用了一个简单的随机数生成器,因此瓷砖有45%的机会是草,有30%的机会是水,有25%的机会是石头。 无论如何,我是否可以增加草块/石头块结成块形成土地块,并使水块形成海洋的趋势(有点像在《我的世界》这样的游戏中看到的那样)?
9 java  algorithm  tiles  maps  lwjgl 

2
.PNG图块到.PNG地图
我想知道如何将110 + .png地图图块方便地转换为1:1像素比例大小的地图.png。香港专业教育学院一直在谷歌等浏览,论坛的免费软件游戏,我正在修改,但应用程序即时通讯使用只能识别.png文件,我想要超过1%的地图。如果你们知道一个程序,我将不胜感激。
9 tiles  maps 

2
在高温高热地区,预计会出现什么样的环境?
我正在创建一个“探索”游戏,该游戏会随机生成世界地图。使用“温度图”,“湿度图”和海拔图给出的数据生成生物群系,例如:寒冷+湿度=雪,炎热+湿度=丛林等我剩下的问题是以应对炎热气候下的高架地区。现在,它被设置为“裸露”生物群系(下图中的灰色区域),我想这应该是“荒芜的干旱土地”。另一方面,温度较低的高架区域设置为雪(白色),可以。那么,我应该如何应对寒冷气候下的高架区域?我有几个想法,但我觉得它们都不起作用:1)也将其设置为下雪,但我认为这很奇怪2)将其设置为“裸露”但我不知道

2
如何有效地在网络上存储和显示地图?
关于 这实际上是两个问题合二为一。首先,我正在寻找一种有效存储大量切片数据的方法。另一个方面涉及查询数据集和显示图块。让我先给你一些背景。 我们正在使用CraftyJS库制作基于浏览器的多人大亨游戏,以将其渲染到Canvas。在GUI的后台,我们在PHP上运行Yii Framework,并且它们都连接到Python随机地图生成器和游戏引擎。 这是第一个粗糙地图渲染的外观:http : //i.imgur.com/khAXtl.png 存储地图数据 每次游戏开始时,都会随机生成游戏世界。每个玩家的大小为100x100的六角形瓷砖。这意味着对于一个三人游戏,将创建90.000个图块。目前,我只是创建一个JavaScript数组来渲染地图。 这对于渲染来说效果很好,但是对于与地图的任何形式的交互,我们都需要存储哪个玩家拥有该图块,在该图块之上构建什么样的结构,它的当前价格等等。起初,至少对于原型而言,我们想使用MySQL,但是经过一些测试,它的速度并没有我想要的那么快。也许像MongoDB这样的对象存储将更适合于存储切片数据而不是SQL表。也许还有其他东西? 显示地图 我看到的另一个问题是在地图上移动。目前,我正在为每个图块创建Crafty实体,即使它不在视口中也是如此。这很慢,因为即使Crafty仅在视口中渲染那些,它也会存储并可能遍历每个渲染事件上的所有图块。我目前所拥有的是绘制的生成地图,当您四处走动时加载和停顿非常慢,现在我想使其可玩。 我的第一个想法是加载视口中显示的图块子集。但是,当玩家将视口移至空白区域时,我需要查询服务器并等待响应返回,只有这样才能渲染地图。这在本机应用程序中会很好,但在网络游戏中却比较落后。 从地图上获得平滑性能的方法可能是将较大的图块子集预加载到javascript数组中并将其用作缓存。播放器将有几个屏幕“缓存”,当他移动视口时,我将向JS“缓存”加载更多图块。 我朝着正确的方向前进吗?我很想从做过类似事情的人那里获得更多信息。我是游戏开发的新手,但是在过去的几周中,我已经经历了很多研究。

3
什么是一种好的平面文件格式,用于存储可以在任何方向无限增长的2D切片地图?
我正在创建一个简单的地图引擎,该引擎将根据需要使用过程生成的内容自动向任何方向扩展。 有什么好方法可以存储地图数据,将其锚定在0,0的原点上,以便可以从地图上的任何点快速高效地加载地图数据的矩形子集? 我有一个想法,也许我应该将地图分块为不同的扇区,然后使用某种标头格式来标识特定扇区在文件中的存储位置。这是一项好技术还是我可以看看的更好,更有效的技术?
9 tiles  maps 

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.