经过几周的试验和错误,我终于在Unity中实现了一个基于流程的地下迷宫生成器,该生成器在运行时将模块化房间拼凑在一起,使用图形学方法。基本思路是每个房间预设都有定义的连接点,系统沿着图形走向将房间拼凑在一起,避免重叠。听起来很直接,但正确实现重叠检测和回溯是真的很痛苦。
我有几个我希望早知道的东西。将房间边界存储在一个字典中,按网格位置键入,显著地比遍历已放置的每个房间的速度快。将生成逻辑和视觉实例化分开的清晰界限使调试变得容易得多,因为我可以在实例化任何 GameObject 之前记录整个布局。另外,不要低估你的模块化资产设计对生成质量的影响。房间的不一致的转动点或连接偏移会让你浪费几个小时。
生成器现在在中档硬件上在50ms以下为20个房间的地下迷宫运行,感觉对于加载屏幕情况是可接受的。
有人在Unity中也走进了基于流程的生成的黑洞吗?我很好奇人们是否更喜欢基于图形的方法、BSP树或波函数收缩的这种东西。也乐于分享核心脚本,如果有兴趣的话。
评论 (0)