随机地图生成浅析

本文探讨了在游戏开发中如何使用算法生成随机地图,以提供玩家不同的游戏体验。文章通过《iMonster》项目的实践,分析了选择二维迷宫算法的原因,介绍了深度优先遍历生成全连通迷宫的过程,以及如何通过调整参数实现地图的疏密相间和自然过渡。此外,还提到了如何在迷宫上布置事件以避免不合理分布的问题,以及算法在性能和空间占用上的优势。
摘要由CSDN通过智能技术生成

在游戏中,随机地图有算法动态生成,通常用在策略类游戏中,比较著名的采用随机地图的游戏有《文明》系列,《英雄无敌》系列,《暗黑破坏神》系列等。

随机地图每次生成都不同,能带给玩家可重复的代入未知感和探索乐趣。

生成随机地图有多种方法,一般取决于游戏地图的类型。一般户外自然场景的随机地图使用分形或噪声随机算法生成令人可信的自然随机地形。而一般地下城类型的场景使用二维随机迷宫算法。另有一些游戏支持随机地图模版或脚本来创建新的随机地图。

本文将会介绍《iMonster》项目实际开发迭代中,采用的随机游戏地图生成方法。

1、起点

最初游戏副本设定是迷宫样式,地图基本元素是tile,即格子迷宫。不同格子上发生不同事件。入口出口都在边缘上。首先要根据需求做技术选型:

·分形或噪声随机地图生成技术上显得很上流。从成功应用来看生成的地图也很漂亮。

但是存在以下问题,1应用地图场景很大,不符合我们副本的大小要求。2实现工作量很大,性价比不高。3时间复杂度往往非常高,相对我们副本游戏时间很不合算。

·使用《英雄无敌》用脚本和模版做随即扩展的地图,实现成本和时间复杂度也很高,我们游戏不也不需要mod扩展。

·地下城类似的封闭空间的二维迷宫地图,其tile组织结构和我们需求非常类似。实现和时间复杂度都在可控范围内。

所以,抛弃上流和华丽的浮云,我们先从满足最基本需求入手,快速开发一个原型来验证我们的gameplay。

2、技术原型

一个二维的M*N矩阵,矩阵中每一项为0表示不可通过,1表示可通过。通过算法在该矩阵中生成一个全连通(每个可通过节点到另一个可通过节点有且只有一个通路)的拓扑树(树的定义?在图论中,树是任意两个顶点间有且只有一条路径的图。或者说,只要没有回路的连通图就是树)。

遍历树的算法:深度优先遍历或广度优先遍历每一个tx的程序员在学习数据结构时都应该有所了解,(忘了?请参考 深度优先搜索)。

生成全连通的迷宫就是求解一个随机生成树。可以使用某一遍历方法遍历寻访以下图中的空白节点,并将访问过程中经过的非空白节点清为路径。当每个空白节点都访问到了,迷宫就生成了。

最低0.47元/天 解锁文章
码农老K
关注 关注
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
c语言 迷宫深度遍历 算法,图的遍历迷宫生成算法浅析
weixin_42351910的博客
05-23 826
1.引言  在平常的游戏中,我们常常会碰到随机生成地图。这里我们就来看看一个简单的随机迷宫是如何生成。2. 迷宫描述随机生成一个m *n的迷宫,可用一个矩阵maze[m][n]来表示,如图:图1.1图1.2这里是两个迷宫的例子,其中“■”表示障碍物(Obstacleblock)。以图1.1迷宫为例,我们可用一个9 * 9的矩阵来表示:111111111000000...
Android BLE开发 百度地图 大神博客&&简书传送门合集
qswl5500的博客
07-05 474
一、踩坑 踩坑1: 问题Q:方法报错、标红、Android Studio提示必须添加权限检查。 解决S:不用管,一样能够正常运行! 踩坑2: 问题Q:权限报错、标红、提示必须是系统应用才可以使用。 解决S:不用管,一样能够正常运行!或者修改安全级别,Android Studio: Preferences --> EditorEditor --> Inspections --> A...
随机地图生成
03-16
随机地图生成器,参数可手动设置,有多种上色模式可供选择。
关于随机地图生成
a563501734的博客
06-15 4166
一直很想做一个模拟现实世界的游戏,最近开始动手了!既然是一个世界那么地图自然是第一个要解决的问题,网上有很多生成地图的教程,但找不到一个完整的文章。经过几天的研究总结了一些。 ...
话说还有一种随机地图
lvcoc的博客
03-20 317
加了细胞以后感觉很带感有没有 好吧,并没有
unity2d随机地图
最新发布
m0_61248085的博客
09-04 410
没记错的话这个我记得是借鉴了一个博主的,但是找不到了,再此做分享与记录。这是我之前写一个小游戏demo写的随机地图生成。代码使用了的是噪声算法
2D随机地图构造
CHenH_HY的博客
04-10 520
2D随机地图构造 只需构造多边形,按顺序给予编号,连起有序的编号即可 可用于海岛地图(绿色部分为海洋) 或用于山地地图(绿色部分为山地) 怎么用都可以 构造多边形的办法 可以用泰森多边形的方法 ...
随机迷宫生成算法浅析
10-23
"随机迷宫生成算法浅析" 随机迷宫生成算法是一种常见的游戏开发技术,用于生成随机地图或迷宫。本文对随机迷宫生成进行了初步的研究和分析,并给出了两种不同的生成算法。 1.引言 在平常的游戏中,我们常常会...
图的遍历迷宫算法浅析
02-05
图的遍历迷宫算法是指在游戏生成随机迷宫的地图算法。这种算法可以生成一个完整的迷宫,并且可以确保迷宫的可行走性。 在迷宫生成算法中,我们可以使用一个矩阵来表示迷宫。矩阵中的每一个元素可以表示为障碍物...
随机地图生成工具 fastMapper
qq_38871173的博客
05-13 2941
随机地图生成工具 fastMapper简介现实中地图生成功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 简介 现实中...
Unity游戏随机地图生成系统
03-05
类似元气骑士的随机地牢生产,包含代码与场景!方便快速开发随机场景游戏,适合新手学习与参考,非常不错的,赶快来下载吧
随机地图生成算法 Wave Function Collapse相关 翻译(github说明,论文等)
qq_38871173的博客
12-18 1519
WaveFunctionCollapse相关 翻译欢迎使用Markdown编辑器原文Algorithm翻译功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLow...
2D随机地图生成
热门推荐
GameRoad
07-27 3万+
ps:记得当初大三上学期时候,曾经被问过一次,steam上一款地图如何生成,当时对这些东西不太了解,卒。这次一起补回来。。 以下很多实现均为猜测!!只是个人实现的方式 以几款游戏为例 •1. steam一款策略类游戏 •2.元气骑士 •3.火炬之光2与暗黑破坏神2   1.Kingdoms and castles  大体是一个随机的格子形地图,可以上面策略经营,并且有塔防元素。 ...
[Unity]Roguelike随机地图生成(一)
Fujige
10-10 4721
初步随机地图生成基础房间生成房间门的判断 基础房间生成 首先需要确定每次房间生成都是在上一个房间的哪个方向上生成,为此需要声明一个枚举值来记录上下左右四个方向 创建脚本RoomGenerator,声明方向枚举值 /// <summary> /// 方向 /// </summary> public enum Direction { LEFT = 0, RIGHT = 1, TOP = 2,
一个简单的2DRoguelike游戏随机地图生成思路
woshi212534的博客
04-18 4096
首先我们要先明确一张Roguelike地图里包含的最基本元素是什么,我的理解是房间与通道。我们可以将一张地图抽象成是房间与房间通过通道来连接。 那么基于这个大前提,我的思路如下。 以图中红色格子为中心生成一个5X5的网格,当然这个根据需要随意设定的。 然后随机挑选5个格子作为房间,这个数量也是根据需要设定的。把这些房间标记为蓝色 然后给每一个房间随机生成一条从蓝色格子到红色格子的路径,这里用绿...
简易版的随机地图方法,适合少数场景
Coder猫 的专栏
06-17 1625
简易版的随机地图方法,适合少数场景int array_1[][4] = { {1, 1, 1, 1}, {3, 3, 3, 3}, {5, 5, 5, 7}, }; int array_2[][5] = { {2, 2, 2, 2, 2}, {4, 4, 4, 4, 4}, {6, 6, 6, 6, 6}, {8, 8, 8, 8, 8}, }
从零开始入门创作游戏——2D沙盘类随机地图生成
dwe147的博客
04-24 3109
如果零基础(例如我)想使用unity引擎做类似于泰拉瑞亚的2d沙盘游戏,首先需要生成随机地图
这些坑别踩!游戏随机地图生成开发经验分享
wangchewen的博客
09-19 3188
https://www.fgba.net/sitemap.xml
随机地图生成--自己的一次尝试
Sprinkble的博客
11-20 2703
最近照着网上的元胞自动机随机地图生成算法自己尝试着写了一下,发现效果不是很满意 local count1 = Tile_map.CheckNeighborWall(i,j)--1层墙的数量 local count2 = Tile_map.CheckNeighborWall(i,j,2)--2层墙的总数量 count2 = count2 - count1 --count1 >=5 会向四周扩...
生成随机数_浅析MT19937伪随机生成算法
06-07
MT19937是一种伪随机生成算法,它可以生成高质量的随机数序列。下面是MT19937算法的简要浅析: MT19937算法的核心是一个624维的状态向量,每次生成随机数时,算法会根据这个状态向量生成一个随机数,并且更新状态...
写文章

热门文章

  • Git 切换至master分枝 7097
  • openSSL 5584
  • 分布式调度框架 elastic-job 实践详解(超详细) 5524
  • IOS 为label创建边框 3242
  • IOS UITableView上添加一个view作为头部 3053

分类专栏

  • 机器学习
  • 音视频 7篇
  • IOS 17篇
  • Unity3D 1篇

最新评论

  • 鱼与熊掌得兼:Hibernate与Mybatis共存

    bobozuyuan: 问下楼主 如果service方法中有hibernate 和mysql 如果事务回滚是否 都会回滚?

  • Kafka 事务实现原理

    三土185: 又臭又长

  • 领导嫌弃可视化太丑?学会这10个高级炫酷图表,胜过一切技巧

    秃头老石: 晶圆图的插件叫什么啊 博主

  • ActiveMQ消息传送机制以及ACK机制详解

    daydaystudying : 很详细👍

  • pyinstaller 打包exe cv2库找不到处理

    银河万通工作室: 没解决

最新文章

  • Kafka/RocketMQ事务消息对比
  • Nginx-代理服务
  • 并发经验八年架构师:缓存在高并发场景下该如何问题
2021年326篇
2019年20篇
2018年4篇
2017年212篇
2016年17篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农老K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳坪山网站建设公司商丘网站自然优化哪家合适优化推广网站怎么做最好优化网站更新教程贵州信息化网站优化检修无锡优化网站方法新手网站优化方法潮州网站竞价优化运营铜陵福州网站优化焦作实力网站优化公司网站使用图像优化其分辨率订做网站优化SEO优化网站教程5邯郸网站优化制作阿里巴巴有没有做优化网站海曙优化网站哪家好平顶山网站seo优化哪家正规如皋网站优化怎么做泰安智能网站优化眉山网站排名优化企业网站怎样优化网站首页优化公司怎么做公司网站关键字优化湖北优化网站优质商家武汉网站怎么优化长尾词如何优化自己的网站排名靠前搜索引擎对网站优化有什么帮助许昌正规网站优化排名襄阳市网站线上推广优化网站内容优化简洁网站整站优化人家是怎么做的香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化