随机世界生成算法
## 第一种思路
步骤
-
添加一个连接点(属于
Position
类) -
对每个连接点生成一个符合条件的模块(房间(
Room
)或走廊(Hallway
)) -
在该模块上添加更多的连接点
-
重新建立一个目前未连接的出口的列表
-
重复步骤2、3、4
注意:遍历连接点的方式会影响世界的连通效果
- 先遍历单个母模块上的连接点
- 先使用子模块上的连接点
可以类比一下DFS与BFS,显然前者能生成的路线更多:
- 在房间上添加至少一个连接点(不能在四个角上)
- 将所有的新连接点加入一个队列(Queue)中
- 最后从队列中提出一个连接点
- 重复1~3
第二种思路
步骤:
-
生成随机房间
-
将除房间以外的部分用迷宫生成算法填充
-
连接房间与走廊
-
去除一些deadends,减少复杂度
但是这样做很有局限性,同时对游戏界面的尺寸要求也很高,
至少我自己在测试的时候(85,35)是行得通的。
最后的参考文献
花了一周多完成了这个玩意吧,最后总结下来感觉学到了很多。起码对Java的理解和大工程的工作过程有了直观感受,同时也学习了很多思路。
内容量太大,以至于学了和没学一样
这应该是2024年我的第一篇学习笔记吧hh
本文由作者按照
CC BY 4.0
进行授权