Questions tagged «tilemap»

平铺地图是一种反复使用小图形碎片,平铺砖以塑造游戏场的技术。

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

6
如何快速检查我的精灵瓷砖是否铺好?
我正在尝试创建很好地平铺的tilemap精灵,但是检查它们平铺的程度确实很麻烦。 理想情况下,我想使用一个图像编辑器来显示这样的布局,因此无需手动检查,我就能看到它是否平铺: [img] [img][img][img] [img] 哪些程序可以做到这一点,或者我怎样才能使它更容易?


3
地图生成的随机种子函数?
我正在寻找一个函数来生成随机的,基于图块的地图,因为地图的视觉边界发生了变化(通过地图)。我希望地图无限大,并具有迷宫般的结构。 但是,如果世界是无限的,那么回到玩家之前所处的位置会带来问题。游戏必须记住那里所有东西的实际外观。 所以,我在想-“我的世界如何解决这个问题?” 我以为自己必须使用某种带有种子的随机数函数,该函数既可以向前又可以向后移动,这样就可以像以前一样完全重新生成旧的图块,但是在新的实例中。 您对此有何想法?

2
具有连接路径的过程二维地图算法
要解决的问题:为所有房间相连的基于图块的游戏生成随机的2D地牢地图。 我正在寻找比目前更好的解决方案。 我当前的解决方案是运行两种算法。第一个生成带有其房间的地牢。第二个要确保所有房间都已连接。我很好奇还有什么其他解决方案。更快和/或更容易等。速度并不是真正的问题,但是如果可以免费获得速度,那将是一件好事。更重要的是,我和其他阅读者可以学习不同的方法来解决问题。 以下是我当前的实现。房间目前没有出口,也没有任何2、3或4个方向的出口。 生成地下城房间 设置:将当前房间设置为左上方的房间。 获取该房间的有效房间类型(其中有效的房间类型是在地牢中没有出口,并且其出口与上方房间和左侧房间的出口相匹配的类型。只需要在上方和上方进行检查即可)由于下面的第2步而离开)。 放下房间,将x坐标前进一个步骤。如果x坐标超出地牢宽度,则将x坐标设置为0,并将y坐标前进一个步骤。如果y坐标超过地牢高度,则完成。 从#1开始重复。 然后,我检查是否所有房间都已连接。如果还没有全部连接,我运行第二种算法,该算法以非性感但在地下城布局方面肯定足够好的方式穿过这些房间并进行更改,以便所有被连接起来。 检查是否所有房间都连通 设置:创建一个表示路径的整数2D映射,并将条目初始化为“未处理”(尚未遍历)值-1。将跟踪当前路径的起始路径索引整数设置为1。通过将当前房间添加到要检查的房间堆栈中,将当前房间设置为左上房间。 如果堆栈中包含要检查的房间,则将其弹出以将房间的路径索引设置为当前路径索引。如果堆栈中不包含任何房间,请增加路径索引并尝试逐列逐行前进以获取房间,直到获得尚未处理的房间。如果找不到房间,我们就完成了。 检查房间是否在左侧有出口。如果已添加左侧空间,则将其添加到堆栈中。 对向下,向右和向上方向重复步骤2(因为我们使用的是堆栈,这意味着从顶部方向开始以顺时针顺序遍历房间)。 从步骤1开始重复。 如果路径索引计数大于1,则表示房间已断开连接。 如果存在断开连接的房间,则将房间按其路径索引分组,获取最大路径的索引,然后将所有其他房间连接到这些房间。这是一项正在进行中的工作,但是我的(当前的,“粗俗的”)计划是要遍历一个房间组(第一个房间除外)中的每个房间,以检查是否有通往Biggeset房间组的水平或垂直路径,并且如果是这样,请通过在其间注入/更新房间来在其中创建水平/垂直路径。冲洗并重复。丑陋的,是的,但是就视觉模式而言,这是不明显的,因此可以在这种意义上发挥作用。

3
团队如何防止覆盖源文件中的工作?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 4年前关闭。 在我看来,有一种可能性,例如由多个人同时处理游戏引擎时,如何防止覆盖? 假设开发者一在工作,Audio.cpp而开发者二也在工作Audio.cpp,这在大型团队中通常如何进行管理以应对覆盖?(换句话说,要阻止开发人员2打开文件,直到开发人员1完成)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

4
生成图块地图
我正在编写基于图块的游戏,并且有一些基本的图块(草,土等),但是我不知道如何生成良好的随机图,因为当我进行一些真正的随机选择时,如果图块应该是草/污垢,我得到这个: 我知道为什么会这样,但是我想要的是创建一些随机的连续区域的草或泥土。这样更有意义的事情是这样的:


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

6
无缝的tilemap渲染(无边界的相邻图像)
我有一个2D游戏引擎,可通过从tileset图像绘制图块来绘制图块。由于默认情况下OpenGL只能包装整个纹理(GL_REPEAT),而不仅仅是部分纹理,因此每个图块都被拆分为单独的纹理。然后,将同一图块的区域渲染为彼此相邻。这是按预期工作时的样子: 但是,一旦引入分数缩放,接缝就会出现: 为什么会这样?我以为这是由于线性过滤混合了四边形的边界,但仍然发生在点过滤中。到目前为止,我发现的唯一解决方案是确保所有定位和缩放仅在整数值处进行,并使用点过滤。这可能会降低游戏的视觉质量(尤其是子像素定位不再起作用,因此运动不太流畅)。 我尝试过/考虑过的事情: 抗锯齿可以减少但不能完全消除接缝 关闭mipmapping,无效 分别渲染每个图块并将其边缘拉伸1px-但这是一种非优化,因为它不再能够一次性渲染图块区域,并且会沿着透明区域的边缘创建其他伪像 在源图像周围添加1px边框并重复最后一个像素-但随后它们不再是2的幂,从而导致与不支持NPOT的系统的兼容性问题 编写自定义着色器以处理平铺图像-但是您将有何不同呢?GL_REPEAT应从边框的图像另一侧抓住像素,而不要选择透明度。 几何形状完全相邻,没有浮点舍入错误。 如果片段着色器经过硬编码以返回相同的颜色,则接缝消失。 如果将纹理设置为GL_CLAMP而不是GL_REPEAT,则接缝消失(尽管渲染错误)。 如果纹理设置为GL_MIRRORED_REPEAT,则接缝消失(尽管渲染还是错误的)。 如果我将背景设为红色,则接缝仍为白色。这表明它是从某个地方(而不是透明度)采样不透明的白色。 因此,接缝仅在GL_REPEAT设置时出现。仅出于某种原因,仅在此模式下,几何图形的边缘会出现渗色/泄漏/透明性。这个怎么可能?整个纹理是不透明的。

1
Unity 2017.2 Tilemap的大小限制是多少?
我一直在研究Unity 2017.2的Tilemap功能的文档。 Unity是否会限制将为特定tilemap网格支持的最大tile数量? 我知道每个图块都实例化一次,并在运行时用于纹理化Tilemap网格上的四边形,因此我猜想网格四边形的数量限制最终取决于硬件,或多或少都很高。 这是正确的假设,还是引擎上有严格的上限?
17 unity  2d  tilemap 

3
在XNA中,如何动态加载大型2D世界地图的各个部分?
我想绘制一张巨大的世界地图;尺寸至少为8000×6000像素。我将其分解为10×10的800×600像素PNG图像网格。为了避免将所有内容加载到内存中,应根据播放器在网格中的位置加载和卸载图像。 例如,这是位置上的玩家(3,3): 当他向右移动到(4,3)时,最左边的三个图像被释放,而右边的三个图像被分配: 网格的每个单元内可能应该有一个阈值来触发加载和卸载。加载可能应该在单独的线程中进行。 如何设计这样的系统?

1
在2D瓷砖地图上计算“视锥”的有效方法?
我正在尝试计算一个特定单位在面向地图上的某个方向(在一定范围和朝向范围内)时可以“看到”哪些区块。最简单的方法是向外绘制一定数量的图块,并对每个图块进行射线投射。但是,我希望有一些更有效的方法。图片说一千个字: 红点是单位(朝上)。我的目标是计算黄色磁贴。绿色块是墙(墙位于图块之间,很容易检查是否可以在两个图块之间通过)。蓝线代表的是类似我所说的“光线投射”方法,但我不想这样做。 编辑:单位只能面向北/南/东/西(0、90、180或270度),FoV始终为90度。应该简化一些计算。我在想有一种递归的/基于堆栈/基于队列的算法,但是我不太清楚。 谢谢!
13 2d  algorithm  tilemap 


2
将许多小碰撞器组合成更大的碰撞器
我正在使用由数千个网格正方形组成的图块地图创建游戏。目前,每个广场上都有一个广场对撞机,用于检查碰撞。 但是,对于成千上万个微小的块,检查它们是否全部碰撞是低效率的。如果我事先知道tilemap看起来像这样,那么我可能只使用了3或4个大型对撞机,而不是数千个小型对撞机: 是否存在某种标准算法,可将许多小相邻的小块合并为最大的小块?如果是这样,有人可以在这里描述它,还是指向有关这种算法的文献? 另外,也许以这种方式预处理瓦片碰撞器完全是错误的方法。如果是这样,应对大量对撞机效率的正确方法是什么?

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.