个人技术总结——Unity-C#实现随机房间生成类的设计

221801220徐世祥 学生 2022-06-27 23:13:46

技术概述

在游戏中经常需要随机生成一些环境、资源,学习该技术可以更加方便地去控制随机生成变量。技术难点在于,随机生成需要很强的扩展性,才能面对需求的变化。

技术详述

是抽象出房间的概念:多种房间继承自Room,每个房间这样就可以有更多不同的自己的物体,比如休息房间可以再增加休息点、怪物生成房间可以有怪物生成点。这步产生房间层次类。

控制生成环境变量:在编码前需要确定各种随机生成后的房间的特征,比如是图状还是树状,从多个点生成还是从一个点生成。我们这次项目为从一个点开始生成树状地图,采用深度优先的方式生成。这步产生生成过程类。

控制房间不重叠:使用一个栈记录房间生成过的位置,在生成过程中去探寻各个方向还有没有位置可以生成,如果没有则返回False代表生成失败。这步也为生成过程类的内容

工厂模式+创建者模式结合:有一个单独的函数通过传入参数来控制房间生成,工厂模式:房间类别,创建者模式:房间位置、房间信息(门的开口)。可以在设置完所有房间的信息后统一生成,也可以分开在游戏进行过程中动态生成。这步产生工厂+创建者混合类。

房间信息保存与查询:将房间信息通过链表保存起来,方便后续需求变化来的时候修改。这步产生地图信息类。

关卡管理:再房间生成之后可能需要再生成不同的关卡,通过关卡管理类来分别管理。

总结

随机房间生成系统可以分为:房间层次类、工厂+创建者混合类、生成过程类、地图信息类、关卡管理类。

简易类图表达:

 

...全文
87 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
发帖
2022年福大-软件工程、实践-W班

134

社区成员

2022年福大-软件工程;软件工程实践-W班
社区管理员
  • FZU_SE_teacherW
  • 丝雨_xrc
  • Lyu-
加入社区
帖子事件
创建了帖子
2022-06-27 23:13
社区公告
暂无公告