Trailer: https://youtu.be/PV2p_Puxd8M
Play free in your browser: https://cardclash.online (nothing to install; the tutorial and solo need no account, multiplayer requires a verified email)
What is it
Card Clash 是一种结合卡牌构筑与领土控制的游戏,设定在由六边形瓦片组成的岛屿上。游戏没有回合制,所有玩家同时面朝下放置卡牌,随后所有卡牌一起揭示,每块瓦片上最强的 Claim(宣称)占领该瓦片。回合之间你可以购买新卡牌,扩展你的牌组以增强实力。游戏拥有三种可玩的派系(Vanguard、Swarm、Fortress),每种都有独特卡牌,三个包含 10 个任务的单人战役,最多 6 人在线对战,以及 bot 逻辑。
它是如何制作的
我设计了规则、卡牌、地图和剧情关卡,并进行了全面的测试。我使用 Claude Code(macOS 上的桌面应用)进行 全部 的编码。
- 代码:Claude Code,主要使用 Opus(最初是 4.6,现在是 5.5)。代码行数约 115k 行:一个使用 Python 编写的带有规则引擎和 bot 的服务器,一个使用 React + three.js 的 3D 棋盘客户端,以及用于在线对战的 WebSockets。306 条 361 条提交都由 Claude 共同署名。
- 艺术: 卡牌艺术来自 [Midjourney]。剧情开场画由 ElevenLabs 完成。
- 3D 模型: 你拥有的瓦片上的营地和塔楼是由 Python 完全编写的 Blender 模型(共 27 个模型),参考 Midjourney 概念艺术。测试时每个模型都受限于三角形预算(用于性能)。
- 音频: 使用 ElevenLabs 完成所有音频。共有 12 首音乐曲目、约 85 个音效、145 条配音对白,涵盖三位旁白的声音,以及预告片的配乐和旁白。
- 预告片也已编写。 Playwright 用逼真的鼠标手柄玩真实游戏,Python 脚本将画面剪辑到配乐的节拍。
Bot 是普通的确定性代码,不是 LLM。这对后面的部分很重要。
什么工作得好
- 一个大项目简报。 仓库中的 CLAUDE.md 是我的设计文档,涵盖了每一条规则、每个系统以及背后的原因。每个会话都从它开始,因此代理不会撤销我们已经做出的决定。现在已经很长,可能需要拆分成更结构化的文档。
- 通过模拟而非直觉平衡。 Claude 为三个技能等级的 bot 以及一个基准构建了 bot,基准会进行成千上万局种子对局。衡量标准是“Big Money” bot(类似 Dominion 的),它只购买它能负担的最大 Claim。只有在至少三种不同策略能击败它时,卡牌包才会发布。正是通过这种方式发现了“冲锋冲击” exploit,它击败了 Hard bot。
- 测试作为护栏。 约有 110 个测试文件。当卡牌改动时,测试会失败,直到教程、力量预览和升级文字都与之保持一致。没有这些测试,事情会快速漂移。
- 生成的音频需要工程化才能可用。 ElevenLabs 的音效通常从最大音量开始,攻击被切断。因此我的生成器会先请求一段静默,重复直到一次完整的取样,然后淡入。每一次配音取样都会用语音转文本检查脚本,以捕获漏掉的词语以及偶尔读出的舞台指示。我提前在 ElevenLabs 网页门户中自行设计了三种旁白的不同声线。
什么很难
- 平衡卡牌以及找到一种可靠的衡量游戏“公平性”的方式,而不只是让所有卡牌相同,这显然目前模型(尚未)的能力所及。像 Dominion 那样经过大量 playtesting 并精细平衡的游戏,Card Clash 若要在保持平衡的前提下引入更多卡牌/机制的变体,将需要大量投入。
- 我在三月使用 Opus 4.6 开始了该项目,它在实现方面非常有能力,但在视觉表现上在我看来并没有产生什么惊艳的成果(基于我的经验)。当我重新启动该项目时,我使用 Opus 5.5 进行了视觉升级,虽然游戏本身并不算特别漂亮,但我很满意它的外观!
我希望得到的反馈
- 教程让你能够开始游戏,还是你在结束后仍然不确定该怎么做?
- 如果你使用 AI 进行平衡测试,你是如何设置的?
- 如果你在玩时发现任何问题,尤其是在手机上
我很乐意回答其他关于我的工作流程的问题。
评论 (0)