在游戏中,随机地图有算法动态生成,通常用在策略类游戏中,比较著名的采用随机地图的游戏有《文明》系列,《英雄无敌》系列,《暗黑破坏神》系列等。
随机地图每次生成都不同,能带给玩家可重复的代入未知感和探索乐趣。
生成随机地图有多种方法,一般取决于游戏地图的类型。一般户外自然场景的随机地图使用分形或噪声随机算法生成令人可信的自然随机地形。而一般地下城类型的场景使用二维随机迷宫算法。另有一些游戏支持随机地图模版或脚本来创建新的随机地图。
本文将会介绍《iMonster》项目实际开发迭代中,采用的随机游戏地图生成方法。
1、起点
最初游戏副本设定是迷宫样式,地图基本元素是tile,即格子迷宫。不同格子上发生不同事件。入口出口都在边缘上。首先要根据需求做技术选型:
·分形或噪声随机地图生成技术上显得很上流。从成功应用来看生成的地图也很漂亮。
但是存在以下问题,1应用地图场景很大,不符合我们副本的大小要求。2实现工作量很大,性价比不高。3时间复杂度往往非常高,相对我们副本游戏时间很不合算。
·使用《英雄无敌》用脚本和模版做随即扩展的地图,实现成本和时间复杂度也很高,我们游戏不也不需要mod扩展。
·地下城类似的封闭空间的二维迷宫地图,其tile组织结构和我们需求非常类似。实现和时间复杂度都在可控范围内。
所以,抛弃上流和华丽的浮云,我们先从满足最基本需求入手,快速开发一个原型来验证我们的gameplay。
2、技术原型
一个二维的M*N矩阵,矩阵中每一项为0表示不可通过,1表示可通过。通过算法在该矩阵中生成一个全连通(每个可通过节点到另一个可通过节点有且只有一个通路)的拓扑树(树的定义?在图论中,树是任意两个顶点间有且只有一条路径的图。或者说,只要没有回路的连通图就是树)。
遍历树的算法:深度优先遍历或广度优先遍历每一个tx的程序员在学习数据结构时都应该有所了解,(忘了?请参考 深度优先搜索)。
生成全连通的迷宫就是求解一个随机生成树。可以使用某一遍历方法遍历寻访以下图中的空白节点,并将访问过程中经过的非空白节点清为路径。当每个空白节点都访问到了,迷宫就生成了。
bobozuyuan: 问下楼主 如果service方法中有hibernate 和mysql 如果事务回滚是否 都会回滚?
三土185: 又臭又长
秃头老石: 晶圆图的插件叫什么啊 博主
daydaystudying : 很详细👍
银河万通工作室: 没解决