下载 App

100 关水排序,怎么保证程序 "随机生成的每一关都一定能解"

09/2623 浏览开发交流
做关卡生成时最怕一件事:纯随机倒出来的布局可能是死局,这种是最致命影响体验的。
我的整体流程是:先用一条难度曲线定下每关参数(颜色数从 3 递增到 10、瓶子容量 4 到 5、空瓶 1~2 个),然后 随机切块 → 丢给内置求解器验证 → 存下布局;解不出来就重新 roll,直到可解为止。
所以核心是给自己写了一个水排序求解器: ・胜利判定:所有非空瓶都装满且颜色一致、颜色不重复; ・枚举合法走法:只能倒到同色顶部或空瓶,且不能超过容量; ・关键是给走法做启发式打分—— 凑满一个纯色瓶、同色聚合、把源瓶倒空都给更高分,引导搜索优先往 "更接近胜利" 的方向走; ・再配合 DFS、节点预算、局面去重(把局面序列化存表,避免反复搜同一个状态)和剪枝; ・用局面 hash 加伪随机数做种子、多跑几个种子,结果还能稳定复现。
这个求解器我做了两个版本:一个只判断 "能不能解",生成关卡时跑得快;另一个会返回具体通关路径—— 这样游戏里的 "提示" 和技能给出的下一步是真实可通关的,不会把玩家带沟里。顺带,求解器算出的最少步数直接拿来当三星标准,不用手工调。
前几关教学则用 "反向打乱":从完全归位的状态往回走若干步,天然又简单又可解。
直到后面颜色到 10 种、瓶子 12 个时状态空间爆炸,最初的 BFS 直接卡死;换成启发式 + 预算 + 去重后才压到毫秒级。
有没有大佬是直接用反向生成来保证可解的?或者有更优雅的做法,求指点。

#休闲游戏 #水排序 #游戏日常 #开发心得 #ai做游戏 #解谜游戏 #独立游戏
猜你想搜
taptap制造 水排序关卡生成
别再烧积分了!从每次 2000 到每次 50 的血泪经验截图
别再烧积分了!从每次 2000 到每次 50 的血泪经验
适用场景:所有在用 TapTap Code 开发游戏的小白 难度:★☆☆☆☆ 背景最近群里总有人"炫耀"一次操作花了几千积分,说实话这不是值得高兴的事——这是在告诉所有人你的开发方式有根本性问题。我也走过这条弯路,所以来说说怎么改。 积分消耗的本质是什么积分 = AI 处理的 token 数量 = 你发给 AI 的内容 + AI 回给你的内容所以烧积分的本质只有两种: 你让 AI 做了大量无效/重
精华
82 赞
23 回复
如何提升你游戏中的UI美术水平截图
如何提升你游戏中的UI美术水平
一、请为你的游戏挑选一款合适的字体 很多开发者没有注意到其实UI界面中最重要的元素是字体,一款合适的字体能给整个游戏的界面感官带来蜕变。 请看案例 那么如何挑选适合自己的字体呢? 我总结出了一些小经验可供参考: 黑体:通用 宋体:古风、武侠、修仙 楷体:古风、武侠、修仙 圆体:卡通、动漫、Q版 科技:科幻、未来、电子 顺手分享一个免费可商用字体网站: 当然 如果你不知道自己的游戏适合什么风格
精华
127 赞
44 回复
2D 等轴测视角:完整理论截图
2D 等轴测视角:完整理论
2D 等轴测视角:完整理论 一、视角的本质 什么是等轴测 人站在高处斜着往下看地面,地面上的方格子不再是正方形,而变成了菱形。这就是等轴测的视觉本质。 俯视(正上方看下去): 等轴测(斜上方看下去): ┌──┬──┬──┐ ◇ ├──┼──┼──┤ ◇ ◇ ├──┼──┼──┤ ◇ ◇ ◇ └──┴──┴──┘ ◇ ◇ ◇ 正方形网格经过旋转 + 压缩,变成了菱形网格。 为什么是 2:1
6 赞
【开发者实践分享】单手搜打撤大楼的减法与音效压迫感打磨截图
【开发者实践分享】单手搜打撤大楼的减法与音效压迫感打磨
大家好,我们是灰色龟记工作室。这两天《最后的钟声》开启不删档公开测试后,陆续收到了第一批玩家的五星鼓励,后台看到试玩同学的人均单日游玩时长超过了 29 分钟,这让我们松了一大口气。借「开发者实践分享」版块,和各位创作者聊聊我们在 TapTap 制造(UrhoX + NanoVG)里打磨这款单人「搜打撤」的三个真实踩坑与设计取舍。 一、核心减法:怎么让“搜打撤”在手机上单手就能爽玩? 传统撤离射击往
【UI教程】如何将已有的效果图应用为实际的UI界面截图
【UI教程】如何将已有的效果图应用为实际的UI界面
在经过了一些折腾和比较折磨的尝试后,我总算是摸清楚了嗒啦啦怎么把UI效果图转换为实际游戏中的UI组件,今天就给大家带来这部分的经验分享。 tips:1.本篇教程需要各位掌握最基本的ps使用,具体的操作部分我会大致讲解,但仍需各位自行学习ps的基本操作,部分可以由ai代劳的环节我会注明。 2.本篇教程需要在以我前两篇教程作为前置环节,请在阅读这两篇前置教程后再进行本篇教程内容的学习 在按照前
12 赞
5 回复
浅记《阿方的旅程》开发历程截图
浅记《阿方的旅程》开发历程
预计阅读时长10分钟,欢迎您先品鉴游戏,再回来看这篇“流水账” 这是我第一次实际接触“用自然语言制作游戏”,也是我第一次接触游戏开发工作,所以一切都是从零开始,跌跌撞撞,懵懵懂懂。[表情_豹哭] 我是通过获得的本次开发资格,6月22日晚,在微信公众号收到了测试资格的消息,最开始公布主题“跳跃”的时候,脑子里最先想到的就是几款非常经典的游戏「马里奥」「Flappy Bird」「Doodle Jump
10 赞
1 回复
01:13
【游戏自荐】《王朝崛起》——一个人做的2D骑马砍杀,但真的上头截图
【游戏自荐】《王朝崛起》——一个人做的2D骑马砍杀,但真的上头
略沙盒,玩法硬核,还在修bug,但真的上头 先声明:我不是托,是开发者自己来安利的。如果你喜欢《骑马与砍杀》那种从零拉起部队、跑商、招降将领、攻城叛变的玩法,那这款游戏大概率会对你的胃口。 一、这游戏玩什么? · 超大的2D沙盒地图:64座城市 + 128个村庄,四大势力割据,满地图的蛮族部落。· 动态世界 & AI:AI势力之间会自己宣战、结盟、叛变;武将忠诚度低了会自立为王,最多能冒出8个新势
13 赞
8 回复
游戏自荐《少女终焉契约》截图
游戏自荐《少女终焉契约》
之前玩放置类型的rpg游戏的时候我就在想,现在游戏的操作有的太过于繁琐了,有没有一款休闲一点的,想上线就上线,离线的时候角色能自动行动的游戏呢?感谢TapTap制造,我按照我的想法开发出了现在这款游戏。 一、故事背景和UI 游戏的故事背景是传统的异世界穿越故事,玩家被女神召唤到异世界,随后组建工会,招募美少女,打怪升级探索世界。所以我选择了更加二次元萌系画风的UI风格,主页为各个主要的功能,点开来
8 赞
3 回复
自由建造游戏搭建墙体参考截图
自由建造游戏搭建墙体参考
本文只提供自由建造游戏2d类围墙方便思路,给萌新一条通天大道,下面是个人总结哈,大佬可以忽略 1.自由建造游戏需要先确定地图方向,地图瓦片,建造物,树木登场景瓦片,如何用瓦片拼接地图这里我就不教了之前有发过,也可以在taptap制造论坛精华帖找一找。 2.确实方向后我们拿2d,有高度感,正向相机视角举例子哈,看上面图一这是一片空地,我们需要做出来有高度感的围墙应该怎么做? 第一步:用ai生图,参考
4 赞
1 回复
2D 无限地图 Tilemap 实战指南截图
2D 无限地图 Tilemap 实战指南
2D 无限地图 Tilemap 实战指南 从一张图到无限世界 —— 如何用 AI 生图 + Tile 平铺 + 装饰散布,搭建一个可无限漫游的 2D 游戏地图。 为什么需要 Tilemap? 很多 2D 游戏一开始用一张静态背景图铺满屏幕就够了。但当你想做"无限地图"(比如吸血鬼幸存者那种可以自由走动的大世界)时,一张固定背景就不行了——玩家走到哪,地面就得铺到哪。 Tilemap 的核心思想很简
精华
21 赞
1 回复