不同的游戏生成地图的方式有所不同,在此只是记录几种不同的生成地图的方式和思路
地牢型地图参考游戏:
- 死亡细胞
- 传说法师
- 元气骑士
大部分的roguelike类游戏的关卡设计都是使用这种类型的地图生成方式,通过事先设计好的几类模板地图构成小房间,随机构成各类具有相似结构的房间。这样的探索可以给玩家初次的新鲜感,但是作为roguelike游戏,反复的游玩后,重复的关卡设计很容易使玩家疲倦
关于这种地图的实现思路是:
1. 在有限的网格中放置好关键房间
2. 用柏林噪音随机漫步生成联通路线
3. 根据路径的开口方向放置随机的房间
横板随机地图参考游戏:
- 泰拉瑞亚
- 缺氧
横板的地图生成比较好想,一维噪音用于生成地表,然后根据深度在噪音图的规划下嵌入不同的其他方块,再根据需求加入不同的特殊建筑就好
只是生成这样一个二维的地图可以说是相当简单的生成方式了,但是为了做到某些效果而不断调整生成地图的参数也是一件复杂的工作
平面随机地图参考游戏:
- 饥荒
饥荒的地图比较于泰拉瑞亚、缺氧这种地图还要简单,一个平面内只需要一块大陆保证联通就好了,柏林噪音到这里用不上了,不过或许可以使用分形方式生成的噪音,关于如何生成一块连通的二值化的图像咱还得再了解一下
三维地图参考游戏:
- MC
这类地图生成是最复杂的,但也是最简单的
MC作为一款开源模板式的游戏,它的源代码中有它完整的地形生成方式,想要研究的话有着大量的资料和教程、文档可供参阅
一般来说,这样的地图首先采用柏林噪音生成高度图,根据高度初步生成海洋和雪山,再使用三维噪音在地底生成不连通洞穴,后续的就是各种复杂的修饰了,嵌入矿物、划分生物群系之类的
如果有足够的精力学习JA和MC的源码及文档的话,MC必定是一个值得学习的开源程序
几点地图生成中值得注意的问题- 一般来说,随机生成的地图都会有一个对应的种子,而游戏使用这些种子作为依据生成伪随机数,进而生成噪声、创建地图。但是程序中一般不会使用系统相关的随机数生成,而是使用自行编写的随机数生成器,目的是为了使得不同的电脑、系统上只要游戏程序相同就能使用一个种子生成相同地图
- 就生成地图而言,初期进行地图生成的编写时,可以使用数据可视化工具直接生成柏林噪音灰度图的三维图像,对地形的随机生成方式进行调整,比如说使用Qt的可视化工具(真相是C#对于咱来说还是太不熟悉,很多高级特性运用不熟练,Qt使用C++编写,只要把重心放到Qt相关框架的学习上就好)
- 游戏编程永远和数学离不开关系,柏林噪音的实现原理和多元微积分、插值这些内容分不开,所以尽快完成基本的数学知识的学习很必要
1、首先设计游戏地图的基本框架,包括地图的总体概念,其中的主要地点和区域以及上下文,主要难度,彩色使用,游戏类型等。这些信息将为制作大型游戏地图提供基础。
2、选择合适的制图工具,并设计地图的布局,绘制地图的地形,设定游戏路径,定义区域和空间,绘制背景,填充细节,安排游戏元素等。
3、安排游戏元素,编辑游戏机制等。在大型游戏地图中要考虑元素的位置如何分配,比如怪物的分布,道具的发放,事件的发生,小的任务的隐藏等。
4、添加游戏元素,编辑游戏属性,比如怪物的行为,属性,物品,地图刷新。在设定游戏元素时要记住怪物和物品的难度,要多层次设置,保证游戏的趣味性。
5、测试游戏地图,以检查其准确性。将地图提交给多位测试者,让他们试玩并发表意见,在收到反馈后,及时调整地图,保证地图的准确性和达到设定的目标。
6、最后,准备游戏发行。调整游戏的体积,调整地图的关卡和游戏的体验,使其能够达到最佳的状态,以便给玩家最好的体验。