大家好,我目前正在开发一个名为Arrow Puzzle Escape的游戏。它是一种类似迷宫游戏的解谜游戏,玩家通过“拉出”箭链并推断它们之间的相互作用来解决关卡。目前,我正在为该游戏开发一个基于程序的关卡生成器。生成器的想法是,它会根据用户选择的网格区域填充箭头结构来创建一个可玩的谜题。生成器的工作流程分为两大阶段:1. 它首先将选定的区域分成类似于Tetris形状的“链条单元”。2. 然后它尝试为这些形状分配方向,使它们成为形成可解关卡的箭头。目前我遇到的主要问题是,第一个阶段没有包含任何逻辑来防止“死锁”——一种情况,其中箭头会阻塞对方,使关卡无法解答。对于小网格(如10x10或30x30),一切正常。但是,对于更大的网格(40x40、50x50和以上),生成时间会指数增长,非法布局的数量也会显著增加。到那时,生成就变得几乎不可用了。我觉得问题不仅仅是优化问题,而是算法结构本身的问题。我正在寻找如何重新设计这个方法来可靠地生成更大的可解关卡而不需要指数重试或死锁情况的想法。退一步说,我开始怀疑这种方法是否根本可扩展。这种方法是否实际上可以设计出可靠地生产50×50+可解关卡的程序化系统,而不必陷入指数失败率?我附上了一个展示当前生成器在Unity中如何工作的视频。如果有人感兴趣深入探索或实验想法,我也可以分享该项目的源代码。任何建议或反馈都将不胜感激。同时,我也非常高兴能够为改进或解决此算法的人提供署名。
箭头谜题逃脱关卡生成
评论 (0)