# 重制 Party House
来源:https://herecomesthemoon.net/2026/08/remaking-party-house/index.html
**tl;dr:要在浏览器中玩这个游戏,点击这里(https://herecomesthemoon.net/games/party-house/)。(不支持移动设备,有声音提示,按 Esc 可访问选项并查看控制方式。)**
起初,这只是个为了学一两件游戏开发知识而做的可爱小项目,但最终却变成了一款现有游戏的(几乎完美)复刻品。你可以直接去试玩,也可以继续读下去,听听我对 Godot、Claude 和游戏开发的看法。
TICKET TKR and WATCH DOG。切换原始/抖动图像
*Party House* 是一款很棒的游戏。如果你不熟悉的话,Party House 是作为UFO 50(https://50games.fun/)游戏合集的一部分发布的。(也就是说,它是五十款游戏中的一款。)
大概来说,UFO 50 是 Mossmouth(最著名的成员是《Spelunky》(https://store.steampowered.com/app/239350/Spelunky/)的开发者 Derek Yu)的一个项目,其目标是一次性发布整整 50 款游戏。它于 2024 年发布,广受好评,内容量也惊人得大。
这些游戏的规模差异极大(有些是派对游戏,或者几小时就能通关,有些则是庞大的冒险游戏)。其中很多完全可以直接作为独立游戏在 Steam 上发布。说实话,这款游戏里的“东西”多到有点离谱,而整个项目有多“傻”(非贬义)也让人难以想象。
如果你喜欢小型独立游戏,我强烈建议直接购买这款游戏(https://store.steampowered.com/app/1147860/UFO_50/),然后直接开玩。我建议跳过 Barbuta(列表里的第一款游戏),直接去玩 Mini & Max(我最喜欢的,可以想象成马里奥式的、剧情驱动的平台游戏,发生在一个单一相连的世界中,你的角色可以缩小和变大)、Party House、Mooncat(???)、Valbrace(第一人称地牢探索)或 Night Manor(恐怖冒险)。(还要提一句 Mortol,以及 Avianos——它证明了只用不超过六个按钮就能做出完整的 4X 策略游戏。)
那么,Party House 玩起来是怎样的?说实话,你就应该直接去玩(https://herecomesthemoon.net/games/party-house/)(再次强调,不支持移动设备)。如果玩不了,这里给你快速介绍一下:Party House(本质上)是一个 roguelite 卡牌构筑游戏。
你会在“规划”阶段和“派对”阶段之间交替。在“规划”阶段,你为你的派对“购买”新客人……
商店。切换原始/抖动图像
……以及“派对”阶段,在这个阶段你从通讯录中随机抽取客人,并用客人能力来提高回合分数和管理麻烦:
派对。切换原始/抖动图像
你通过在同一个时间让四位明星客人参加派对来获胜,时间耗尽则失败。另外,音乐非常带感。就是这样!
### 重制 Party House
我这么做的动机是什么?说实话,我以前并没有做过很多游戏开发。我只是想弄明白,和其他类型的编程比起来,它“感觉”如何。仅此而已。我一直觉得 GUI 和代码之间那种奇怪的脱节,以及整个运行时机制,都奇怪地令人困惑。
(顺便说一句,这一点至今仍然如此。)
总的来说,重制一款游戏很有趣,而且比从零开始做一款要*容易得多*。
最初的原型是我徒手写的,但随着越来越清楚地意识到电子游戏大约 90% 在于把一切都打磨到“手感好”,并接线所有小细节和素材,我最终不再继续了(生活太忙),等我回过头来的时候,我选择求助于 Claude。
(此时“Party House”已经在我的硬盘上放了好几个月没碰过,所以我不认为这是失败,无论道德上还是其他方面。)
我喜欢自欺欺人地说,我写了大概 80% 的代码,然后把它交给了 Claude,而 Claude 写了剩下的约 80%(https://en.wikipedia.org/wiki/Ninety%E2%80%93ninety_rule)。我(很快就)不再看代码了,除了出于学习目的。这样做之所以奏效,是因为外部游戏(以及我和 Claude 一起整理的规格)作为事实来源,防止了项目分崩离析。这个项目足够小,以至于我们能在上下文管理变得无法应付之前把它推过终点线。
(另外,郑重声明:我博客上没有任何内容是 AI 生成的。全都是手工精心写出的句子,用我自己的爪子敲出来的,等等。)
最后一点:当前重制版使用的素材是从原版中抽取的。如果我认为这会损害 UFO 50 的销量,我就不会按现状发布。我把自己逼进了一个角落:做“忠实”复刻时,你实际上就被锁定在原始素材上了;而在冲刺阶段把它们替换成别的东西,感觉也不对。目前我就按现状放在网上,希望这属于合理使用。(再说一次,如果你喜欢这个重制版,你应该购买 UFO 50。)
### 关于 Claude 的收获
看看这个小家伙。它看起来几乎像是个 UFO 50 角色。切换原始/抖动图像
当我求助于 Claude 时,已经存在一个非常初级的游戏版本。核心玩法循环已经有了,大约只有 4 个客人,没有计分动画,也没有那些复杂的客人(会打开通讯录选择菜单的那种)。
作为我整个学习经历的一部分,我已经手动从 UFO 50 中提取了精灵图。(对于个人项目来说,真的没有理由不这么做。)
首先,我启动了 Claude Code,写了一份(相当冗长的)情况总结:我自己并不够在意,不想独自完成这个游戏,但也不确定它能怎么帮我,因为游戏如果没有办法“玩”并且获得即时视觉反馈,是很难迭代的。
Claude 想出了如何运行无头版 Godot,建立了一个小型测试套件,还找出了UFO 50 Wiki(https://ufo50.miraheze.org/wiki/Party_House)的一页,和我一起为游戏构建了一份规格。它正确指出了规格中的一些差异和缺失信息,并在规格里标记了出来,然后我进行了编辑。
我觉得这相当令人印象深刻。(要知道,想想仅仅一年前 LLM 的状态,以及人们仍然停留在一种 AI 完全无法进行可靠工作流程的心理模型上。)
第二,我们开始用图片迭代。我们加了`F12`作为截图按钮,我提供了一些实际游戏的截图,让它检查自己的工作并和原版对比。
这效果非常好:Party House 是一款基于网格的像素游戏,给 Claude 两张截图(当前状态 vs. 预期状态,一种准 diff 测试)的效果远比它应有的效果要好。
接下来是*声音*。将精灵图与原版游戏匹配很容易,音乐也一样。UFO 50 自带了约 750 个音效,但没有明确标记哪个游戏用了哪些音效,除非分析游戏代码(我不想这么做)。
最后发生的是,我向 Claude 扔了几段视频(已经去掉背景音乐),告诉它把这些和 SFX 文件夹里的声音“匹配”起来。
在没有 Python 的情况下,它写了一个声音匹配工具(大约 400 行*GDScript*),并用它(连同精灵图)来找出哪些声音在哪个精确时刻播放。
这并不是完全没有提示的:我引导它往这个方向走,但即便如此,它能直接从脑子里拿出一套可用的声音分析库,并用一种定制脚本语言实现,这仍然令人印象深刻。
此时我们就用这种方式迭代:我不时玩一下游戏,给它一些反馈,玩一下原版,偶尔给它提供游戏视频。效果非常好。
在这个阶段,我的迭代循环是给它发送一条含糊的长提示,包含大约十几个小问题和不一致之处。Claude 会工作长达一个小时,并有条不紊地逐条处理列表。
这里有个例子,其中一半没有上下文是看不懂的:
```
1. Cursor should wrap left and right at the edge of the screen
2. When returning to the party, there are often still floating score numbers. It'd probably be fine if we added a minor delay at the end of the party, so that they've certainly disappeared. Or we just clean them up before we return
3. When climber