谈 Blunderbuss:人工智能与个人软件革命
为儿子制作国际象棋训练应用,如何成为一次用人工智能开发个人软件的学习经历。
最初发表于 X,2026 年 9 月 3 日.
我儿子今年 7 岁,是中国国际象棋协会的一名出色小棋手。几个月前,教练提到他应该重点练习一些特定的防守下法。我心想:“其实我完全可以做个应用,分析他在 chess.com 上的棋局,再给他有针对性的练习。”于是,Blunderbuss 诞生了,恰好属于新近出现的那类高度个性化、通过与 AI 对话编程开发的应用。
最初,它几乎就是一个用 Stockfish 分析棋局的后端,加上每天 5 组练习的前端。练习局面来自他的真实对局;如果某天不够用,就从 lichess 题库中补充合适的题目。后来我觉得,加入连续打卡保护和完成训练的徽章应该挺有趣,于是就加上了。
接着,我觉得应该加一些机器人对手。但 Stockfish 更适合展示近乎完美的下法和分析棋局,而对弈时,你会希望对手更像真人。所以研究之后,我加入了 Maia 3 引擎。我让 AI 制作一批水平和棋风各不相同的机器人,它还尽职尽责地给它们配了些搞怪头像。儿子很开心,接连战胜 ELO 等级分越来越高的对手;我记得他赢过的最高对手大约是 2200 ELO。
我陆续打磨细节、修复棋盘问题、调整音效,然后觉得,做一个 2D 游戏一定很好玩:只要打败 1100 ELO 的机器人,就能开启传送门,进入一个人人下国际象棋的 RPG 世界,游历不同的岛国,挑战各地棋手。我设计了一些需要发现的小秘密,以及推进剧情必须完成的对话。一开始非常有趣,毕竟我从没做过游戏;但很快我发现,即使用 AI,制作素材也十分繁重。我本想专注于扩展游戏,却仍花了大量时间让 AI 把各种东西正确拼起来。我还花钱买现成素材以节省时间,结果不知不觉又学起了 Aseprite 和 Tiled。相比这些工具,我更关心把这个世界推进下去,让儿子能开心地下棋。看到许多人在用 three.js 做东西,我就冒出了一个傻念头:也许让 AI 做一个 3D 世界会容易得多。
事实证明,这个方向也不对。虽然我更了解了 3D 与 2D 各自的长处,整个过程却成了巨大的时间黑洞,让我偏离真正想做的事。更糟的是,我发现儿子只是喜欢在我精心搭建的 3D 世界里闲逛——以我这个半吊子制作者的水平来说,确实算精心了——而那里还没有多少国际象棋内容。
下面放了一段长视频,想看我扔掉那几周成果之前的样子,可以看看。视频很长,现在也没什么参考价值,除非你只是喜欢听我的声音,否则可以跳过。当然,喜欢我的声音确实是个很好的理由,不过我还是建议你先往下读。
最后,我决定做一个国际象棋生涯模拟器:把漂亮的 AI 生成 2K 图片精心组合成真实世界地图,让孩子四处旅行,与其他棋手比赛。这就是如今的 Blunderbuss。
使用 Blunderbuss 时,先输入孩子的 chess.com 或 lichess 用户名以及注册码,再由孩子选择想加入的俱乐部。目前可选纽约、莫斯科、哈瓦那、金奈、成都和东京。每天当地时间凌晨 4 点左右,服务器会抓取近期棋局,按需调整训练策略,并生成当天的训练内容。
游戏会让玩家知道,当地国际象棋协会已经关注到他,只要认真训练,就愿意提供旅行及其他费用补助。补助使用游戏货币 lev 支付。这个名字一方面是在向 @GothamChess 致意,感谢他的那些视频;另一方面,也是想用一种听起来真实、却因为“邪恶的欧盟”之类原因已经不存在的货币,开个玩笑。
在训练选项卡中,玩家可以欣赏经典棋局、学习布局体系,并针对即将参加的锦标赛准备对手。有些比赛甚至要求先针对采用特定开局、体系或棋风的机器人完成适当备战,才能进入。
“比赛”选项卡有两种状态。通常,你可以挑战当周在场的任意棋手。机器人实际上会在整个游戏世界中旅行,所以主场俱乐部里除了总能挑战的本地棋手,也可能出现其他城市的来客。在这个模式下,你不会获得 lev、奖杯或徽章,但可以赢得对手的“棋手卡”,类似于游戏中每个机器人的人物卡。每个机器人都有自己独特的棋风。
“比赛”选项卡的另一种状态,是显示你正在参加的锦标赛。此时它会切换到锦标赛模式,你需要在一个周末里与五位强手对弈。这些比赛只在周六、周日开放,通过邮件中的特别活动邀请展开,而且会带有鲜明的地域特色,或特定棋风。我也想让儿子学习地理,所以正在加入大量细节。他本周末的第一场锦标赛将在阿拉斯加州瓦西拉举行。我猜现实中的瓦西拉没有什么大型国际象棋俱乐部,但 Blunderbuss 里的那家听说了儿子的棋艺,愿意出机票钱,邀请他参加当地比赛。我以前没做过这个功能,所以想先找个不太重要的小镇试试。对不起,瓦西拉。也不用谢,瓦西拉。
这个世界还有个特点:它是活的。前面说过,机器人会旅行,它们也会彼此比赛。每隔几天,你的收件箱就会收到一份简报,介绍当前的世界排名。
来看看莫斯科:
可以看到,每个飞抵的地点都有自己的当地风格,而且每个地点也有专属的城市地图。
随着我逐步丰富这些地点,每座城市都会有自己独特的活动。目前莫斯科只有分析大厅;无论身在哪座城市,你都可以完成日常训练。想看更多内容,我们先回纽约吧。
纽约其实是我们的主场,所以这里有玩家的家,可以查看自己的奖杯和徽章,也有各种结识棋手、发起挑战的地点。既然是纽约,自然还要有一条“特别”的生涯晋级路线:“中央公园街头棋手”。这是纽约独有、与其他进度完全独立的成就路线。如果你选择纽约作为主场,收件箱里就会收到开启它的消息。我正在为这条路线生成符合当地人群特点的机器人形象,目前先用临时角色代替。
我想加入大量内容、有趣的支线任务,或许再点缀一些古怪角色和职业成长路线,让这款应用在正常、写实的成长系统中带上一点点奇妙感。
还有很多内容,不过先写到这里。我只是一个在为儿子做应用的父亲。如果你读到了这里,希望我也分享给你的孩子,欢迎私信我。我不作任何保证,但我确实打算继续丰富它,让它对儿子而言更有趣、更有用。如果有人感兴趣并愿意提出看法,我会很高兴。
哦,这里还有几张街机厅的截图,里面保留了最初版本 Blunderbuss 的所有旧机器人。
这里是各处都会用到的棋盘,可以更改棋盘风格、棋子和声音。
补充一下,棋盘和对局具备完整国际象棋应用通常应有的复盘、局面评估和辅助学习功能。后端在许多方面比前端完善得多。这样的情况还真不少。
感谢阅读。