随机地图,或是随机地牢,有很多实现方式。目前比较流行的方法是使用随机房间+剖分三角形加 prime算法生成。
还有一种方式就是反解有权图。个人认为反接有权图布局逻辑更可控一些。

需求

随机生成地图,且尽量扩大变化因子,以下是大致需求内容

  1. 房间位置随机
  2. 房间大小随机(可接受倍数)
  3. 起始房间(出生点)
  4. 带锁的房间(宝藏房,道具房)
  5. 终点房间前boss房(boss关卡)
  6. 钥匙房 (钥匙要出现在锁之前)
  7. 道具房(装备、解密道具)
  8. 服务房(存档、购物)
  9. 有怪房
  10. 每个房间最多可有包括入口在内的4个门
  11. 某些房间可以多路互联

设计思路

从我们玩游戏的经验中反向推理,发现人物闯关的行为路线其实是一个多叉树,或是一个有向有权图。所以要搞定随机地图,先要搞定随机内容策划,再考虑铺图的事情

设计一个有向有权图

关于图的基础,不清楚的可以在我的博客中找到《数据基础结构》里面关于图的介绍与计算。

这就是个图:
权值
A
B
C
D
转换成我们需要的样子就是:
路径长度
出生房
有怪房
道具房
boss房
终点房

知道我们的数据结构长的样子,下面就可以考虑构建了。
首先我们要知道房间类型产生的顺序。为什么需要知道这个,因为你不可能出生房紧邻钟点房吧,那还玩个屁呀。一般游戏流程不都是出生点>打怪>捡东西>解谜>打boss>过关 这种么。其中还有些宽度比较大的随机成分,比如是否有宝藏房,有几个。是否打boss,打几个等等,都属于平级可扩展的房子。这些都要考虑进去。下面我将这些房间分成等级,然后就可以按重要程度分配随机因子了。

房间等级
出生房
有怪房
宝藏房
道具房
钥匙房
有怪房
道具房
怪物房
宝藏房
有锁房
终点房

大致是这么个情况。房间顺序从上至下,在同一行的属于平级房。可以看到,像有怪房这样的房间下级房间的种类选择很多。有时候为了增加游戏的难度和游戏时间,这部分可以指定循环生成的次数,达到丰富地图内容的目的。当然,地图的大小、怪物、奖励也要相应的做好调整。毕竟反复的打同样的房子。。。你逗我??需要注意的是钥匙房和锁房的数量要一致,并且钥匙房要出现在锁房之前。否则。。。。作出这么傻逼的游戏玩家一会杀了你。

unity c#《自己做游戏》之 设计一个可以生成复杂解密地图的随机地图系统 第一篇 设计地图规划,每日更新!!!相关推荐

  1. 毕业设计-基于Unity的餐厅经营游戏的设计与开发(附源码、开题报告、论文、答辩PPT、演示视频,带数据库)

    基于Unity的餐厅经营游戏的设计与开发 下载链接: 点我下载资源 一.登陆(Unity2020.3.3f1c1版本) 开始界面 进入游戏后,在开始界面右下角是一个登陆按钮,当玩家点击开始按钮后,会进 ...

  2. 编译原理实验报告_任意给定一个正规式 r (包括连接、或、闭包运算),根据 Thompson算法设计一个程序,生成与该正规式等价的 NFA N 。

    任意给定一个正规式 r (包括连接.或.闭包运算),根据 Thompson算法设计一个程序,生成与该正规式等价的 NFA N . 百度网盘下载 传送门 提取码:bzjn

  3. python和cc++哪个适合做游戏_分享一个C++与Python开发的中小型通用游戏服务端框架(跨平台,开源,适合MMORPG游戏)...

    在开发一款游戏项目时,在立项时我们往往会考虑或者纠结很多,比如: 1,对于开发来说:服务端和客户端应该选择什么语言?用什么协议通信才更效率?协议后期如何维护?socket是用长连接还是短连接?tcp还 ...

  4. 测试用例设计怎么做?怎么设计一个好的测试用例?

    一.测试用例的定义 测试用例(Test Case),是为某个特殊目标而编制的一组测试输入.执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求. 二.为什么要写测试用例 1. 理清测试 ...

  5. 做游戏美术设计赚不赚钱?

    游戏美术的分工: 游戏美术制作的顺序:原画(角色/场景)--3D(角色/场景)--动作--特效 游戏分场景和角色两条线:游戏中副本,城市风光,郊外,城区,山洞,荒漠森林等这些都属于场景.游戏中活动的事 ...

  6. 录制视频讲解,设计一个基于社交和大数据分析的智能家居系统

    基于社交网络和大数据分析的智能家居系统 摘要 智能家居是在互联网影响下的物联化的产物,本文阐述了一种基于微信和和大数据分析的智能家居的设计方案.为何要用微信?为何要用大数据分析?这两种技术相结合能为智 ...

  7. unity开发入门_Unity游戏开发终极入门指南

    unity开发入门 Unity is a great tool for prototyping everything from games, to interactive visualisations ...

  8. 想做游戏开发要深入c/c++还是c#?

    根据题主描述提三点建议: 先选择一个语言.选择一个引擎能入行 确保精通一个及已入行的情况下,技多不压身 不必想日后的"退而求其次",现在的事情还没有开始做就想以后,太过虚无及功利了 ...

  9. 为什么写了value属性 jq赋值value值不显示_为什么 String 要设计成 final,又如何设计一个不可变类呢?...

    前面聊了聊面试必考 String 的坑,具体可以细看<你真的懂 Java 的 String 吗?>,也留下了一个疑问,为什么 String 要被设计成 final 呢?其实,如果你读的认真 ...

最新文章

  1. io_service work 的作用
  2. gitee怎么看用户名_教你手机怎么远程连接云服务器
  3. umi脚手架搭建的项目_还在从零开始搭建项目?手撸了款快速开发脚手架!
  4. Android 进行单元測试难在哪-part3
  5. Linux系统终端常用指令命令汇总
  6. B、KB、MB、GB、T单位换算
  7. PHP 每小时抽奖,项目3:PHP抽奖程序 ,抽奖规则代码 分时间段
  8. 解决 nvcc: command not found
  9. R语言使用dplyr包进行数据聚合统计计算滑动窗口统计值(Window Statistics)、计算滑动分组四分位差(IQR、四分位距)并合并生成的统计数据到原数据集中
  10. 对“剖析液晶屏逻辑板TFT偏压电路”一文的一点看法(上)
  11. node.js共享输液检测系统毕业设计源码131105
  12. SpringBoot整合Mybatis-Plus
  13. 异常处理_MacM1 python-akshare导入报错
  14. pip 如何指定国内源安装
  15. jieba分词词性标注含义
  16. 社会分工的理想与现实
  17. How add nic driver to initrd
  18. 心情日记20090820
  19. 如何快速找出电脑里的所有视频\照片\文件
  20. 活动预告:专访Velo,跨境金融的商业落地探索 | TI对话首席

热门文章

  1. 站长之家网页模板爬取(未分页)
  2. LOL国服哪个服务器最稳定,S6即将结算,LOL国服大区实力排行榜,你在哪个服务器?...
  3. MMoE ESSM PLE对比
  4. jupyter notebook中新建cell的方法与快捷键
  5. 王团长:无论竞选成功与否,我们都会一如既往,初心不改
  6. CDA数据分析师 - SQL数据库基础 数据类型表操作语句
  7. OLE:对象的类没有在注册数据库中注册 问题的三种解决方法
  8. TOP斩获“2019全球区块链创新50强”投票冠军 得票数力压“图灵奖”得主项目
  9. 计算机网络:自顶向下 第一章1.6 网络安全
  10. 券商3月份金股名单揭晓 五大看点暗含春季行情“密码”?