随机Tiled Map的生成

背景
Tiled Map是一种利用地块儿元素拼接,构成2D或伪3D地图的技术。随机地图生成技术,则可以不依赖人力,通过程序产生大量的各不相同的游戏地图。当我们把这两种技术结合起来,就可以在游戏中提供大量的、运行期产生的tiled map类型地图,大大增加这类游戏的耐玩程度。下面的图片来自知名的游戏系列<<风来的西林>>,这一系列的游戏就以随机地图著称。玩家每次进入游戏,都会挑战与上次不同的关卡。本文将介绍一种产生随机tiled map的方法。

 


简介
我们要产生的地图采用著名的“Tiled”编辑器的TMX格式,风格上则是isometric投影的即时战略游戏,如下图:
 

随机地图生成的过程可以简单归结为以下步骤,现在我们可以暂且不理解每一步的用意,后面会有设计思路的说明。
  1. 根据地图模板的尺寸产生对应的“可行走/障碍物”点阵(下文也会使用w点阵的叫法)。
  2. 定义2个地形类型(terrain type)过渡的队列(下文也会使用t队列的叫法),分别对应可行走区域和障碍物区域。
  3. 针对“可行走/障碍物”点阵的每个点进行噪声扰动,并根据噪声值和上述2个地形类型过渡队列,获得地形类型点阵。
  4. 制作一个TMX格式的地图文件模板,其中包含了tileset和terrain types的定义。
  5. 根据地形类型点阵,配合TMX地图文件模板的tileset中定义的tile和每个tile的4个角的terrain types,产生tiled map。
  6. 输出TMX格式的地图文件。

我们从解决方案的设计思路上来说明一下上述的各个步骤。

首先需要考虑通过什么样的手段来产生随机的地图效果。对于我们希望得到的这种地图,最基本的,我们需要有一个可行走区域的轮廓,即哪些区域是可行走的,哪些区域是障碍物,如果我们能够产生随机的可行走区域,那么问题就解决了很大一部分。这项工作对应上述步骤的第1步: 根据地图模板的尺寸产生对应的“可行走/障碍物”点阵

对于一副地图,只定义哪些区域可以行走哪些区域不能行走是远远不够的,因为这些信息相当于一个摆满黑白两色棋子的围棋盘,非常单调。我们需要让这两种区域都呈现一定的变化,从而丰富地图效果。这部分的工作对应上述步骤的第3步: 针对“可行走/障碍物”点阵的每个点进行噪声扰动,并根据噪声值和上述2个地形类型过渡队列,获得地形类型点阵。这项工作也需要上述第2步: 定义2个地形类型(terrain type)过渡的队列,分别对应可行走区域和障碍物区域。我们将每个点的噪声值分别映射到这2个地形过渡队列包含的地形类型,就能获得地图的地形类型点阵,换而言之,我们定义了地图点阵每一点处的地形类型。

现在我们已经获得了随机的地形分布情况,下一步则是把它可视化呈现
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
cocos2d是一个流行的游戏开发引擎,而Tiled Map Editor是一个针对2D游戏开发的地图编辑器软件。这两者结合使用,可以帮助开发者更高效、便捷地制作游戏中的地图。 cocos2d引擎提供了丰富的功能和工具,用于创建2D游戏。而Tiled Map Editor则是用于制作游戏地图的工具。它提供了一个用户友好的界面,可以在里面创建、编辑和管理游戏地图。用户可以在Tiled Map Editor中自定义地图的大小、背景色、分块大小等属性。 在制作地图时,Tiled Map Editor允许用户在画布上绘制各种元素,如地面、墙壁、河流等。用户还可以在画布上放置各种可交互的物体,如玩家、敌人、道具等。这些元素和物体都可以通过Tiled Map Editor方便地进行定位、调整和编辑。 当地图制作完成后,开发者可以将其导出为某种格式,如XML或JSON。然后,cocos2d引擎可以读取这些格式的地图数据,将其加载到游戏中。cocos2d提供了专门的API和函数,用于解析和渲染Tiled Map Editor导出的地图数据。这样,游戏就可以实时显示地图,并根据实际情况进行交互。 使用cocos2dTiled Map Editor可以极大地简化游戏地图的制作过程。它们提供了一套完善的工具链,使开发者可以快速有效地创建、编辑和使用游戏地图。无论是在平面视角的角色扮演游戏,还是在横版平台游戏,cocos2dTiled Map Editor都可以为开发者带来很大的便利和效率提升。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值