Alphabet Soup:一款拼出最长单词才能获胜的多人游戏
文章摘要
Alphabet Soup(字母汤)是开发者 John Chin-Jew 做的一款极简多人拼字游戏,网址 alphabetsoup.club。规则一句话就能说完:系统给出 7 个随机字母,所有玩家同时在限定时间内拼单词,只有你拼出的最长的那个词计入得分。
作者在 Show HN 的自述里把它和《纽约时报》的 Spelling Bee 做了对比:Spelling Bee 是单人的、鼓励你尽可能多找词;Alphabet Soup 是多人的,且只算最佳成绩,所以游戏的重心从「找得多」彻底转向了「找到一个异常出色的词」。这个改动看似微小,实际上把游戏的心理结构整个换掉了——你不再是在刷数量,而是在赌一个高分词。
产品形态非常轻。首页只有两个按钮:「Arena」进公开对战,跟当时在线的其他玩家匹配;「Play with friends」创建私人房间跟一个或多个朋友玩。如果 Arena 里没人,系统会给你匹配一个机器人(在游戏里以一个鸭子 emoji 出现),保证任何时候点进来都有得玩。因为游戏不是回合制的(所有人同时拼词),所以人数扩展性很好——两个人能玩,一大群人也能玩,不会出现回合制游戏里等人的问题。
技术栈方面,作者在评论里透露用的是 Elixir 的 Phoenix LiveView 加 PubSub 来保持所有人浏览器状态同步——从页面源码里也能看到 data-phx-session、phx-click 这些 LiveView 的痕迹,以及 Tailwind 的类名。整个游戏没有前端框架的重型 SPA 结构,服务端渲染 + WebSocket 推送就把实时多人做完了,这本身就是 LiveView 适用场景的一个不错的示范。部署在 Railway 上(Show HN 期间 Railway 出过一次故障,把游戏搞挂了一阵)。
游戏有几条规则在初版里没写清楚,导致评论区反复被问:可以重复使用同一个字母;不要求用满全部 7 个字母(即不必是 pangram);最初还允许专有名词。作者在讨论过程中现场迭代,添加了「How to play」说明、加了 emoji 表情按钮、移除了专有名词、修了一个已用词判定的 bug。这种 Show HN 现场滚动发版的节奏,本身也是帖子好看的一部分。
HN 评论精华
36 分,讨论规模不大但质量很高,几乎全是建设性的产品反馈,作者 johnchinjew 几乎回复了每一条。
-
SamBam 提了第一条也是最受欢迎的建议:需要一个聊天区,好在结束时说声「gg」。「如果你担心聊天没法管理,哪怕只做一个按钮也行。竞技游戏没有这个总感觉不完整。」doublerabbit 附议但建议做成受限聊天,pavel_lishin 开了个很贴题的玩笑:「不如就照游戏的精神,发消息也只能用那一小撮字母?」作者当场加了 emoji 按钮,SamBam 回复认可,作者又说下一步想做「双击点赞」,让玩家为漂亮的词点赞。
-
decimalenough 给了最深入的一组设计意见:提交完自己想不出新词之后,只能干等着,很无聊;建议立刻显示别人提交的词,并且这些词就此「被占用」不能再用;另外「可以提交多个词」这件事不明显,他一开始一直在输入又删除、想憋一个最好的;还建议把固定的回合间隔换成「准备好了」按钮。作者的回应体现了对设计权衡的清晰认知:如果立刻公开别人的提交,游戏会变成一场比速度的竞赛,速度的权重会大幅上升,那可能是另一种有趣的游戏(也许作为一个新模式),但不是现在这个。他考虑的折中方案是显示「对手 X 找到了一个 5 个字母的词」这种模糊信息。
-
ethannam9022 问了那个所有人都困惑的点:不是应该用满全部字母吗?作者确认允许不用满是有意的——每次都想出 pangram 太难了。他还坦承这里有个有意思的尖锐边界:有时候某组字母的最长单词恰恰不使用全部字母。他想过好几种处理方案,最后为了让计分保持极简,选择了现在这样。
-
scronkfinkle 提了一个很有意思的离线玩法:希望有单人模式,只显示字母、结束时告诉你错过的最长单词,这样可以把手机放在桌子中间,一桌人拿纸笔或者纯靠脑子玩,最后一起报答案。作者说这确实听起来好玩,他打算之后支持多种变体和模式。
-
zvr 介绍了英国老牌游戏节目 Countdown 的规则变体:字母不能重复使用,但起手是 9 个字母且允许重复字母出现在字母池里,建议加个开关切换规则。vunderba 也提到了《IT 狂人》里 Countdown 那段(并遗憾游戏不接受 tnetennba),zvr 补充说 Countdown 是从 1982 年播到现在的真实节目,原型是法国的《Des chiffres et des lettres》。
-
内容审核问题被连续戳中三次,构成了这个帖子一条略显尴尬但很真实的线:magneticnorth 说「很高兴我打败了 hitler1488,不过你可能得给起名环节加个内容过滤」;recursive-call 发现那个鸭子机器人居然会拼出种族歧视词汇——「审核用户是一回事,但至少机器人应该是无害的吧」;justoneletter 直接问用的是什么词库,建议过滤掉侮辱性和粗俗词汇。作者对每一条都是「抱歉,已修复」。这几乎是所有 UGC 游戏上线第一天的必修课。
-
pavel_lishin 报了词典质量问题:「为什么 Fillmore 是词而 filmer 不是?Levitt 和 Illinois 也一样。」作者的回应是直接把所有专有名词都移除了。
-
trapture 报了个具体 bug:一个词被判「已经用过」,但他和其他人都没用过,导致输了比赛,体验很差。作者秒回定位到原因——目前连未计分的词也不允许重用,随即发了修复。
-
zatkin 坦白自己是「那种糟糕的人」,写了个 AI 辅助的作弊脚本粘进控制台。SamBam 的反问很直接:「何必呢?不用脑子就等于没在玩,还毁了跟你对战的人的体验。」pavel_lishin 则更好奇技术实现——他自己也想过直接拿正则去匹配 /usr/share/dict。
-
brikym 贴了一局特别好笑的对局结果,三个玩家的最佳词分别是 asexually、lessee 和 Noah slays,「这局挺有意思,因为对方拿到了一个反义词」。