Articles of 地图

在一个txt文件中存储巨大的2D平铺地图

我正在开发一个使用二维平铺地图的全球性战略游戏。 地图将是8000×8000大的瓷砖(这个大小是固定的,地图在整个游戏中保持不变),因为我覆盖了一个大的真实世界的区域,但是必须详细地这样做。 我想将这个地图存储在一个txt文件中。 要做到这一点,我想为瓷砖使用简单的ID,但这仍然留下我每个瓷砖2个字节,总共大约185 MB我的txt文件,这是太大了。 所以我继续前进,想办法减less包含地图的文件的大小。 这是我想出的:我不是愚蠢地定义每个字段的ID,而是定义区域,行和特定的字段: 区域:任何大小的矩形(不论其大小,需要23个字节) 线:任何简单的指南针方向(北,西,东,南)的任何长度的直线(无论长度如何,都需要20个字节) 特定的字段:特定的单个字段(由于必须给出的坐标,需要13个字节) 使用这三个简单的“对象”,我设法大大减小了文件的大小。 我可能想要添加已经定义的字段可以被覆盖。 以下面的矩形为例: 1 1 1 1 2 1 1 1 1 2 2 2 2 2 2 这可以定义为一个2x的5×3矩形,一个4×2矩形的1s覆盖它的一部分(总共是46字节,而不是专门定义每个字段时的195字节) 我现在面临的问题是:我试图编写一个地图编辑器来简化制作这样的地图的过程。 显然这个编辑器应该自动生成地图文件,使用前面描述的对象来减小尺寸。 问题是,我该如何写这样一个algorithm,这意味着find最佳或近乎最佳的区域,行和特定领域的组合,可能不需要花费3个小时呢? qucikly想到的algorithm是你通过所有可能的矩形的典型直接方法,挑选那些最好的,然后通过未定义的字段和定义行,然后指定其余的具体,但正如你可以告诉,这方法需要很多时间,所以我宁愿避免它。 我有将大地图拆分成更小的部分的想法,但是在这个过程中,algorithm失去了一些精度,因为这会消除跨越两个或多个这些较小部分的矩形和线条。 那么,有没有人可能有一个想法如何优化algorithm,或者甚至更好的方法? 我非常感谢这里的一些帮助,因为我不能在没有地图的情况下去写游戏。 我意识到这是很多文字,也许是一个更大的问题,但无论如何 提前致谢, LegionaryCohort

代表一个记忆中的世界

我试图为一个游戏编写一个基于块的地图系统,当玩家在块周围移动时会被加载/卸载,这样程序就不会因为内存中的整个地图而耗尽内存。 我有这个部分主要工作,但是我已经打了一个关于如何表示每个块在内存中的内容,因为我对OOP语言迄今有限的理解。 我目前的devise有一个ChunkManager类,它使用.NET Listtypes来存储Chunk类的实例。 “块”由“块”组成。 这和Minecraft风格的游戏很相似。 在Chunk类中,我有一些信息,比如块的X / Y坐标等,而且我也有一个Block对象的三维数组。 (三维,因为我需要XYZ值) 这是问题: Block类有一些基本的属性,而且我计划让这个“base”类inheritance不同types的块。 例如,我会有“StoneBlock”,“WaterBlock”等 所以,因为我有许多不同types的块,我不知道如何在每个单元格中创建具有不同对象types的数组。 这是我目前在我的Chunk类中声明的三维数组: private Block[][][] ArrayOfBlocks; 但是,显然这只会接受Block对象,而不是从Blockinheritance的任何其他类。 我将如何去创造这个? 还是我做的完全错了,还有更好的办法?

使玩家落在实际的地图下面

我有一个整数的2D地图 0000000000 0200000001 1111100011 0 = sky/empty 1 = ground 2 = player 当玩家在一个洞/悬崖坠落时,我希望玩家走到地图下面,所以玩家看起来就像是坠入了洞/悬崖而死亡。 这是我做的: if(player.getY()+player.getHeight() > map.getHeight()){ //player has fallen in hole/clifff } 上面的代码将testing玩家的脚是否触摸到地图的末端。 但是如何把他移到地图下面呢? 因为如果我把玩家向下移动,那么这个数组就会超出范围。 有没有更改地图数组的方式?

我应该采用什么devise模式来validation角色移动?

我正在开发一个Java游戏,并有一个Map类,它将包含所有的MapObjects(玩家,敌人,墙壁等): Map.java public class Map { private int width; private int height; private ArrayList<MapObject> MapObjects = new ArrayList<MapObject>(); public Map(int width, int height) { this.width = width; this.height = height; } } Hero.java: public class Hero extends MapObject implements Movable { private Map map; public Hero(int x, int y, int direction, Map map) { super(x, […]

如何在不破坏整个地图的情况下replaceTILED中的Tileset中的tile?

我想为我的游戏做一个地图的早期版本,但是我希望能够改变一些新的和改进的瓷砖而不破坏我的整个地图…这是可能的吗?

如何以编程方式devise风险等游戏地图?

我正在做一个基于地图领域的测验游戏,系统类似于风险游戏(除了没有坦克,而是门票)。 地图不是世界,而是我devise的自定义地图,我将在未来完成,我只是在领土之间建立逻辑链接。 有10个地区代表10个不同的事情。 我正在开发的游戏是Android(Java),但是我正在使用Visual Studio编写C#地图的原型,以查看地图的想法是否合适。 现在,我并没有要求在我的应用程序中使用C#代码,而是要求我使用一个编程策略来在Code中实现我的地图。 我写了类Zone来定义每个领域。 我还写了实现10个不同区域的类GameMap 。 在游戏逻辑中,预计攻击1个领域的风险,你必须有一个领域。 我怎样才能以dynamic而不是长期的方式来实现这个概念呢? 我想要的最终结果是:我决定攻击我的国土。 我怎样才能尽可能保持dynamic,而不是编写真正长效的代码? 编辑:我不再寻找C#的帮助。 我直接在客户端和服务器端使用Java和Javascript实现地图。

在世界地图上使用二维方形网格有问题吗?

我正在为我的世界地图制作一个2D方格的游戏。 它环绕着,所以当你到达北方的时候,你又开始在南方,当你一直走到东边的时候, 这种方法会有什么缺陷吗? 我的印象是,快速旅行可能存在缺陷。

在Javascript中交错的等轴测图

我正在尝试在Javascript中创建一个交错的等轴测图。 var x, y, row, column, top, left, width = window.innerWidth, height = window.innerHeight, tile = {width: 64, height: 32}; row = Math.ceil(width / tile.width); // how many rows will be in map column = Math.ceil(height / tile.height); // how many columns will be in map for (x=0 ; x<row ; x++){ for (y=0 ; […]

如何管理2D MMO中的地图?

我很好奇我应该如何绘制我的游戏世界。 我将会拥有一张地图,比如1000×1000的地图,其上有很多玩家。 每个玩家将在地图上的位置,当他们移动我想他们的精灵留在屏幕的中心(所以我想地图本身移动)。 通过绘制比游戏窗口本身每边更大的地图,然后将额外的比特截掉,这样做效率高吗? 或者我应该切片和切块精灵? 如果你对我正在看什么东西感到好奇,可以考虑tibia.com与Pokemon交叉,在两者之间的graphics,以及基于回合的攻击/防御系统。

如何在地图上显示高度信息

我想创建一个六角形的地图,并在同一个屏幕上显示不同高度的区域。 你可以考虑用什么方法来指出一个瓷砖的高度。 (目前,更低,更高?) 几个瓷砖地图游戏通过有特殊的山地瓦片,避免了这一点,但是,允许〜2高度,我想更多的差异化。 另一种方法是只绘制当前高度的贴图,但如果地图非常颠簸(很多洞),这看起来很奇怪。 我还没有find一个好的方法来美化或黑化比当前观点更低或更高的瓷砖。 有任何想法吗?