用AI给女儿写了一个Android游戏APP 前些时候,某个周六下午,女儿爬到我腿边,手里捏着平板,说想玩那个“小鸟飞飞飞”的游戏。我接过来看了一眼,平板上是某个经典的像素鸟模仿游戏,跟她说:“不如我们自己做一个吧,主角就是你。” 女儿听完眼睛一亮,然后开始列需求:要有飞机(她最近迷航空模型),要能吃金币,不能碰到管子就结束,最好还有个无敌时间——“就是那种闪闪的一小会儿,什么都撞不到我的那种!” 我说行,这些需求都不复杂,不需要我自己打代码,有更好的工具。
从原型到定制 底子是 Flappy Bird 那套机制:点击屏幕角色上升,不点就下降,穿过两组管道之间的缝隙得分。但原版太硬核了,碰到管子立马游戏结束,小孩子玩几次就撑不住。所以第一个被改掉的机制就是“碰撞体验”——我给它加了一个简单的无敌时间系统:角色周围出现淡蓝色光圈,持续五秒钟,期间可以直接穿过管子,管子会给你让路。这个设计让难度曲线平滑了很多,也符合女儿对“闪闪无敌”的浪漫想象。 角色形象按她的要求换成了飞行器:顶部一个红色四叶螺旋案,两侧蓝色机翼,底部显示她的小名“KIKI”。为了避免版权和敏感信息,我没有直接用她的照片做精灵图,而是做了一个卡通化的飞行器形象,看起来像某种“机甲鸟”的简笔版本。 金币系统是女儿强烈要求的。她说每个游戏都得有“钱”。所以我在管道之间撒了一些金币,接触就累计。金币数量暂时没有消费地方,纯粹是为了满足收集欲——这个设计决策我觉得挺对,很多游戏的正反馈其实不需要复杂的经济循环,只要数字在涨就够了。 最后一个细节是 UFO 加速。女儿在看了一段航天动画后,坚持要加一个“飞得很快很快的东西”。我给屏幕偶尔滑入一个小型 UFO,触发后背景向左飞奔,管子和金币的刷新速度翻倍,持续三秒。这段加速带来的视觉冲击很强,女儿每次触发都会笑得很大声。 没写一行代码 我用的是当下比较成熟的 AI 编程助手,将游戏需求拆成了几个模块逐一描述:物理引擎(重力与碰撞)、管道生成算法、金币检测、无敌状态机、UFO 加速事件。每一个模块我都先让 AI 写出第一版,然后安装到手机上测试。 测试的过程就像是跟一个远程的前端工程师配合。有时候金币比管子生成得慢,角色飞过去了才刷出来,我就截图标注“金币生成时机需要向前偏移 200 像素”;有时候无敌光圈在角色死亡后还没有消失,我就说“需要在 gameOver 回调里清理所有持续状态”。最困扰的一个 Bug 是在某些安卓机型上触控延迟,点屏幕角色要过 200 毫秒才反应。我排查了一下,是因为游戏循环里做了不必要的重绘操作,占用了主线程。把问题描述给 AI 之后,它重构了游戏循环的逻辑,把输入响应放到了独立的事件队列里,延迟消失。 这个过程花了大约三个小时。如果是我自己写,可能两天小时搞定了,但这三个小时里我在做的事情是:给女儿解释为什么飞机不能一直无敌,跟 AI 描述“管子的缝隙要足够一个小朋友的反应时间”,以及在手机上反复测试了二十多次。这个时间成本我觉得花得值,因为我不需要记住 SurfaceView 的编程细节,只需要关注游戏本身是不是好玩。 游戏叫《晨曦大冒险》 最后定名叫《晨曦大冒险》,是女儿取的,理由是“每次玩都像早上起床一样有劲”。我觉得这个名字比我能想到的任何名字都好。 成品是一个Android APK,没有广告、没有内购、不需要网络权限。打开后直接开玩,顶部显示当前分数、金币数和历史最高分。角色周围淡蓝色的光圈出现时,屏幕上会有很小的“免疫中”字样,不影响操作。UFO 从右侧滑入时,背景音效会有一个很快的“啾”声,然后整个场景开始快进。 女儿的最高分现在是 621 分。这个数字是我们一起达成的,她负责操作,我负责在旁边提醒她“要注意下一个管子了”。这个分数对我们来说没有任何实际价值,但她看到数字从个位数慢慢涨到几百的时候,表情是真的很开心。 这件事的意义 很多人说 AI 编程是“零代码”革命,我觉得这个说法有点大。从技术角度看,这个游戏没有用到任何高深的算法,一个有一年开发经验的工程师一天就能写完,甚至写得更好。 但从另一个角度看,它的确降低了“做一件小事”的成本。过去我想给女儿做个专属游戏,需要搬出电脑、搭建环境、写代码、调试、打包,这些前置动作足以让人在周末下午放弃。现在我只需要提问给AI,让先代码的任务交给它,我负责审核和修正,然后和女儿一起边玩边改。 这不是什么了不起的创业项目,也不是技术突破。它就是一个父亲在周末花了三个小时,跟女儿一起做出来的小玩意儿。只不过这个小玩意儿被装在了手机里,可以随时打开。 如果你也想定制 前几天开车时,我好像想到了,是不是也会有家长其想给孩子做一个专属游戏。或者不一定是给孩子,也可以给对象、给朋友。 这个游戏的框架现在是可复用的,替换角色图、修改名字、换一句开场问候语、调整背景颜色或者加几个特殊道具,都不是很大的工程量。如果你有兴趣,可以在后台私信我,告诉我你想要什么元素。如果赶巧,我会根据我的时间安排周期,做出来后发你一个安装包。