有了 AI 我还缺少什么

Mar 28

起因

和朋友玩起了 24 点游戏。但是玩的单机版,几个人要抢着手机输入。朋友问,能不能做一个?我觉得这行啊!倒不是说非得自己写,毕竟这种游戏市面上应该有联机对战的版本吧。最主要的原因是简单搜了下小程序没搜到,正好最近有补课 AI 的计划就这么决定了。

游戏

游戏规则不复杂:

  • 随机抽四张牌
  • 数值范围是 1-13
  • 允许的运算规则为加减乘除
  • 牌不可以重复使用
  • 谁先算出 24 谁获胜。

简单的规则是这些,不过其实这里是有坑的,后文再说。

目标

要做一个什么呢?

  • 是个联机对战版的 24 点,可以供朋友们线下娱乐。
  • 可用的资源是我的小水管服务器。当然也可以上 Saas,但是本期的主题是 Vibe Coding,所以有啥用啥吧。
  • 最简单的方案就是个网站了,其他的都要额外学习架构和技术方案。

怎么做呢?

  • 首先是 Vibe Coding,其实说白了就是指使 AI 写代码。
  • 既然都 Vibe 了,我就希望我不要关注具体的代码实现,只用关注游戏本身和架构选择。

有了大方向,接下来要指使 AI 干活了。

依旧牛马

根据过往使用 AI 编程的经验,AI 并不清楚你真实的需求是什么:

  • 游戏逻辑是什么样?如何对战的,用户有什么操作。
  • 美术风格是什么样的?轻松的,刺激的,还是硬核的。
  • 业务指标是什么是什么?有多少人同时游玩,小水管服务器能撑住多少,稳定性要求是什么样的。
  • 你对各种细节的要求:动效,边界情况处理,界面和独属于你的各种信仰和偏好

于是乎第一个想法是,我来出完整的产品文档、美术设计。但是,我只想要一个游戏啊,这些细碎的东西不想写。那于是:我可不可以当老板,让 AI 来细化我的需求?可以。那就先实现一个单机版吧.

我是甲方

我给 AI 说:

我将制作一个游戏,算 24 点。单人游戏,请你策划一个完整的产品文档写在 game.md 中
我将制作一个游戏,算 24 点。单人游戏,请你策划一个完整的产品文档写在 game.md 中

于是 AI 给了我一个企业级策划,甚至上线方案和预期用户转化都有了。果然甲方是慵懒的,得做出来才能够知道想要啥。于是,我得把那些所有我设想的游戏方式都讲出来:

移除积分和其他复杂系统,只保留单局游戏内容。
用户不需要输入表达式,而是直接通过按钮计算,实时显示结果并替换到已经使用过的数字按钮上。
移除积分和其他复杂系统,只保留单局游戏内容。
用户不需要输入表达式,而是直接通过按钮计算,实时显示结果并替换到已经使用过的数字按钮上。

然后差不多了,输出了差不多可用且符合预期的游玩方式的文档。好了,接下来看技术方案。

当前场景为 <10 用户,带宽 1Mbps,写技术方案到 tech.md。要求 js 技术栈。尤其考虑网络引起的加载速度问题。
当前场景为 <10 用户,带宽 1Mbps,写技术方案到 tech.md。要求 js 技术栈。尤其考虑网络引起的加载速度问题。

AI:

- JS 技术栈(Vanilla JS + Vite,后端可选 Node.js/Express)
- 低并发(<10 用户)下的低成本部署
- 重点覆盖 1Mbps 弱网加载优化:首屏资源预算、分包、缓存、压缩、请求数控制、预取策略
- 给出可验收的性能指标(TTI、首包体积、单次计算反馈)与 2 周落地里程碑
- JS 技术栈(Vanilla JS + Vite,后端可选 Node.js/Express)
- 低并发(<10 用户)下的低成本部署
- 重点覆盖 1Mbps 弱网加载优化:首屏资源预算、分包、缓存、压缩、请求数控制、预取策略
- 给出可验收的性能指标(TTI、首包体积、单次计算反馈)与 2 周落地里程碑

看似一切正常,于是我让 AI 在不考虑美术风格的情况下实现

无尽的细节

游戏,或者说任何软件,能用和好用和有趣之间是天壤之别的。现在的代码也只是能用而已。接下来开始了和 AI 的无尽拉扯:

- 开发需要,请在开发环境直接显示答案。
- 参考 game.md 4.3 和 5.1 的变更更改页面
- 生成一份美术风格描述到 art.md。风格简约现代温馨,使用柔和大色块方案给用户带来轻松的氛围。交互自然而非像表单一样死板。
- 界面元素使用自解释方案,不要指望用户看文字,要设计的自己就能让用户理解。继续修改 art.md
- 四个数字按钮占据绝对主要的屏幕位置。成田字格分布。
- 相应的,运算符按钮也变大,是次要视觉区
- 删了和移动了一些按钮,你整理下 main.js
- 所有的panel 不带背景,所有元素不带边框,要大块纯色简洁。
- ......
- 开发需要,请在开发环境直接显示答案。
- 参考 game.md 4.3 和 5.1 的变更更改页面
- 生成一份美术风格描述到 art.md。风格简约现代温馨,使用柔和大色块方案给用户带来轻松的氛围。交互自然而非像表单一样死板。
- 界面元素使用自解释方案,不要指望用户看文字,要设计的自己就能让用户理解。继续修改 art.md
- 四个数字按钮占据绝对主要的屏幕位置。成田字格分布。
- 相应的,运算符按钮也变大,是次要视觉区
- 删了和移动了一些按钮,你整理下 main.js
- 所有的panel 不带背景,所有元素不带边框,要大块纯色简洁。
- ......

我甚至直接改起了代码——有说话的功夫,直接改代码,让 AI 根据我的代码读懂我要改什么,然后完善细节。这不就是甲方么,人是真的懒啊!

经历了无数轮掰扯后,完成了。在之后添加了多人模式时,我试图将自己的需求描述更清楚:如何对战,界面长什么样子。但收效甚微,总有写自己觉得理所当然但其实并不如此的地方:

  • 进入房间后长什么样子?
  • 对战结束后什么样子?
  • 房主退出游戏了怎么办?
  • 排名如何显示?
  • 有人先做完了,他的界面应该显示什么?

似乎复杂度不仅来自和 AI 的交流,还来自事物本身的复杂。

总结

做一个游戏的传统流程:

我有一个点子 > 实现核心 demo > 细化玩法、交互和美术细节 > 确定技术方案 > 实现 > 继续细化和迭代

AI 能帮助我们的是什么呢?

  • 在核心玩法确定后,生成一个随机细节的游戏产品文档
  • 根据玩法和技术需求确定方案
  • 根据方案实现,甚至还可以接管 CI/CD

AI 不能帮我们的是什么?

  • 玩法的选择,一个游戏好不好玩 AI 是不知道的,游戏是给人玩的,AI 只能给你出点子
  • 细节的选择,或者说,品味,AI 是不能猜的,你得明确告诉他
  • 考虑边界在何处停止,AI 并不知道你要打造何种精致程度的游戏

可以看到,AI 擅长干活,擅长出点子,但:

  • 它永远无法代替你的决策(你究竟在乎什么,想要什么)
  • 也无法代替你与 AI 沟通(你怎么把你想要的清晰表达出来,并通过某种方式让 AI 听懂)

所以后两者在很大程度上决定了 AI 的使用效果

未来

以后怎么办呢?

  • 我怎么确定那些繁琐的细节?
  • 我怎么向 AI 描述我想象中的模糊的感觉?

目前还没有明确的答案,但明确的是,就算没有 AI 这些东西也是需要被解决的。

>
CC BY-NC-SA 4.0 2011-PRESENT © Yu Jianghao