unity c#《自己做游戏》之 设计一个可以生成复杂解密地图的随机地图系统 第一篇 设计地图规划,每日更新!!!
随机地图,或是随机地牢,有很多实现方式。目前比较流行的方法是使用随机房间+剖分三角形加 prime算法生成。
还有一种方式就是反解有权图。个人认为反接有权图布局逻辑更可控一些。
需求
随机生成地图,且尽量扩大变化因子,以下是大致需求内容
- 房间位置随机
- 房间大小随机(可接受倍数)
- 起始房间(出生点)
- 带锁的房间(宝藏房,道具房)
- 终点房间前boss房(boss关卡)
- 钥匙房 (钥匙要出现在锁之前)
- 道具房(装备、解密道具)
- 服务房(存档、购物)
- 有怪房
- 每个房间最多可有包括入口在内的4个门
- 某些房间可以多路互联
设计思路
从我们玩游戏的经验中反向推理,发现人物闯关的行为路线其实是一个多叉树,或是一个有向有权图。所以要搞定随机地图,先要搞定随机内容策划,再考虑铺图的事情
设计一个有向有权图
关于图的基础,不清楚的可以在我的博客中找到《数据基础结构》里面关于图的介绍与计算。
这就是个图:
转换成我们需要的样子就是:
知道我们的数据结构长的样子,下面就可以考虑构建了。
首先我们要知道房间类型产生的顺序。为什么需要知道这个,因为你不可能出生房紧邻钟点房吧,那还玩个屁呀。一般游戏流程不都是出生点>打怪>捡东西>解谜>打boss>过关 这种么。其中还有些宽度比较大的随机成分,比如是否有宝藏房,有几个。是否打boss,打几个等等,都属于平级可扩展的房子。这些都要考虑进去。下面我将这些房间分成等级,然后就可以按重要程度分配随机因子了。
房间等级
大致是这么个情况。房间顺序从上至下,在同一行的属于平级房。可以看到,像有怪房这样的房间下级房间的种类选择很多。有时候为了增加游戏的难度和游戏时间,这部分可以指定循环生成的次数,达到丰富地图内容的目的。当然,地图的大小、怪物、奖励也要相应的做好调整。毕竟反复的打同样的房子。。。你逗我??需要注意的是钥匙房和锁房的数量要一致,并且钥匙房要出现在锁房之前。否则。。。。作出这么傻逼的游戏玩家一会杀了你。
unity c#《自己做游戏》之 设计一个可以生成复杂解密地图的随机地图系统 第一篇 设计地图规划,每日更新!!!相关推荐
- 毕业设计-基于Unity的餐厅经营游戏的设计与开发(附源码、开题报告、论文、答辩PPT、演示视频,带数据库)
基于Unity的餐厅经营游戏的设计与开发 下载链接: 点我下载资源 一.登陆(Unity2020.3.3f1c1版本) 开始界面 进入游戏后,在开始界面右下角是一个登陆按钮,当玩家点击开始按钮后,会进 ...
- 编译原理实验报告_任意给定一个正规式 r (包括连接、或、闭包运算),根据 Thompson算法设计一个程序,生成与该正规式等价的 NFA N 。
任意给定一个正规式 r (包括连接.或.闭包运算),根据 Thompson算法设计一个程序,生成与该正规式等价的 NFA N . 百度网盘下载 传送门 提取码:bzjn
- python和cc++哪个适合做游戏_分享一个C++与Python开发的中小型通用游戏服务端框架(跨平台,开源,适合MMORPG游戏)...
在开发一款游戏项目时,在立项时我们往往会考虑或者纠结很多,比如: 1,对于开发来说:服务端和客户端应该选择什么语言?用什么协议通信才更效率?协议后期如何维护?socket是用长连接还是短连接?tcp还 ...
- 测试用例设计怎么做?怎么设计一个好的测试用例?
一.测试用例的定义 测试用例(Test Case),是为某个特殊目标而编制的一组测试输入.执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求. 二.为什么要写测试用例 1. 理清测试 ...
- 做游戏美术设计赚不赚钱?
游戏美术的分工: 游戏美术制作的顺序:原画(角色/场景)--3D(角色/场景)--动作--特效 游戏分场景和角色两条线:游戏中副本,城市风光,郊外,城区,山洞,荒漠森林等这些都属于场景.游戏中活动的事 ...
- 录制视频讲解,设计一个基于社交和大数据分析的智能家居系统
基于社交网络和大数据分析的智能家居系统 摘要 智能家居是在互联网影响下的物联化的产物,本文阐述了一种基于微信和和大数据分析的智能家居的设计方案.为何要用微信?为何要用大数据分析?这两种技术相结合能为智 ...
- unity开发入门_Unity游戏开发终极入门指南
unity开发入门 Unity is a great tool for prototyping everything from games, to interactive visualisations ...
- 想做游戏开发要深入c/c++还是c#?
根据题主描述提三点建议: 先选择一个语言.选择一个引擎能入行 确保精通一个及已入行的情况下,技多不压身 不必想日后的"退而求其次",现在的事情还没有开始做就想以后,太过虚无及功利了 ...
- 为什么写了value属性 jq赋值value值不显示_为什么 String 要设计成 final,又如何设计一个不可变类呢?...
前面聊了聊面试必考 String 的坑,具体可以细看<你真的懂 Java 的 String 吗?>,也留下了一个疑问,为什么 String 要被设计成 final 呢?其实,如果你读的认真 ...
最新文章
- io_service work 的作用
- gitee怎么看用户名_教你手机怎么远程连接云服务器
- umi脚手架搭建的项目_还在从零开始搭建项目?手撸了款快速开发脚手架!
- Android 进行单元測试难在哪-part3
- Linux系统终端常用指令命令汇总
- B、KB、MB、GB、T单位换算
- PHP 每小时抽奖,项目3:PHP抽奖程序 ,抽奖规则代码 分时间段
- 解决 nvcc: command not found
- R语言使用dplyr包进行数据聚合统计计算滑动窗口统计值(Window Statistics)、计算滑动分组四分位差(IQR、四分位距)并合并生成的统计数据到原数据集中
- 对“剖析液晶屏逻辑板TFT偏压电路”一文的一点看法(上)
- node.js共享输液检测系统毕业设计源码131105
- SpringBoot整合Mybatis-Plus
- 异常处理_MacM1 python-akshare导入报错
- pip 如何指定国内源安装
- jieba分词词性标注含义
- 社会分工的理想与现实
- How add nic driver to initrd
- 心情日记20090820
- 如何快速找出电脑里的所有视频\照片\文件
- 活动预告:专访Velo,跨境金融的商业落地探索 | TI对话首席
热门文章
- 站长之家网页模板爬取(未分页)
- LOL国服哪个服务器最稳定,S6即将结算,LOL国服大区实力排行榜,你在哪个服务器?...
- MMoE ESSM PLE对比
- jupyter notebook中新建cell的方法与快捷键
- 王团长:无论竞选成功与否,我们都会一如既往,初心不改
- CDA数据分析师 - SQL数据库基础 数据类型表操作语句
- OLE:对象的类没有在注册数据库中注册 问题的三种解决方法
- TOP斩获“2019全球区块链创新50强”投票冠军 得票数力压“图灵奖”得主项目
- 计算机网络:自顶向下 第一章1.6 网络安全
- 券商3月份金股名单揭晓 五大看点暗含春季行情“密码”?