我在这个月发布了一款益智游戏。生成该游戏关卡的生成器被重写了三次,而这两次失败的版本比成功的版本更值得讨论。这个游戏是一款滑动方块的益智游戏。方块在一个网格上移动,需要找到一个出口。每个关卡都有一个目标移动次数,并且三个星星意味着你成功匹配了它。因此,生成器必须知道每个板块实际上有多难。要么就做错了,难度曲线就不正确。第一版使用了每个人都会首先尝试的方法:构建一个解决方案的板块,倒退K次随机移动,结果称为K移动的谜题。听起来很正确。然而,移动是可逆的,因此随机步行会不断撤销自己,并且K只能告诉你它最多可能有多少。超过半数我生成的板块已经是解决方案了。第二版代替了行走而不是搜索,仍然是错误的,而且我一开始并没有察觉。有多种方法可以赢得比赛。出口被其他方块覆盖在任何排列中,所以从一个特定的解决方案板块测量距离并不能告诉你玩家实际上有多远。文件为8到12次移动的板块往往是3次移动。第三版首先收集了每个获胜排列,然后从所有这些排列中逆向搜索。这样就能得出真正的数字。现在,我实际上希望另一个开发者可以从这里离开,因为这与益智游戏无关。两次失败的版本都生成了关卡。它们运行正常,没有任何崩溃,没有任何警告,所有板块都可玩。如果我正在检查错误,我就可以发布所有三次。失败只有在每个生成的关卡都由另一个无关的求解器重新求解,并且计算的结果以原因而不是总和打印时才会变得可见。一个会大声失败的构建是容易的。那些静静地产生可信输出的构建才是昂贵的。详细报告,包括数字,如果有用,请访问:https://cybiqon.in/lab/puzzle-generator-random-walk-doesnt-work
后记:我的关卡生成器生成了150个难度错误的关卡,没有任何错误发生
评论 (0)