AI 协作的小学运动会《加油!运动会》:从跳绳、拔河到接力赛,跟着音乐按,浏览器直接玩
这次想做一款体育类的游戏,而且是大家都经历过的:小学运动会。主席台、彩旗、四个班的帐篷、家长在旁边加油,中午吃盒饭,下午压轴的接力赛分数加倍。
四个班按学校常见的叫法,分成甲乙丙丁。主角是丁班,去年总分垫底,今年想翻身;去年的冠军是甲班。一天里要比七个项目:
| 时段 | 项目 |
|---|---|
| 上午 | 跳绳、丢沙包、两人三足 |
| 中午 | 吃盒饭(存档) |
| 下午 | 拔河、滚大球、躲避球 |
| 压轴 | 接力赛(分数加倍) |
每个项目比完排名次,第一名 4 分,依次 3、2、1 分。最后在领奖台上看总成绩,结局有三种,看你这一天比得怎么样。学校、班级和人物都是虚构的。
这款游戏叫《加油!运动会》(SPORTS DAY),是一款怀旧电视游戏机格式的游戏,整个游戏文件 2 MB。规则、程序、画面、角色、十首曲子都是 AI 做的。AI 实际工作约 150 分钟,按 API 标价折算约 33 美元。
在浏览器直接玩:aixsfc.app/player/?load=sportsday。可以免费玩,想分享给朋友,请给他们这个网址。游戏画面使用繁体中文。
怎么玩









- 跟着音乐按。 大部分项目考的是节奏和时机,不是手速。拔河、两人三足、滚大球上方有一条节拍条,三角形滑到圆圈的那一刻按;接力赛、两人三足左下角会显示该迈哪只脚,该按的时候变成金色。乱按会打乱节奏,反而会输。
- 跳绳:绳子转到脚下时按 A。每跳一下绳子快一点,绊到就从慢的重新开始。三个人各跳 20 秒,加起来比。
- 丢沙包:上下键选角度,A 开始蓄力,再按一次 A 丢出去。每个沙包的风都不一样:角度低,受风影响小,但力度要把握得准;角度高,容易进,但容易被吹偏。
- 两人三足:搭档喊“一”按左、“二”按右。连续踩准拍子,步子会越迈越大;按错脚,两个人一起摔倒。
- 拔河:在“咻”的时候按 A,连续踩准,全班的力气会叠加上去。半决赛打甲班,赢了进决赛。
- 滚大球:跟着口令按 A 推球,上下键绕过 12 道锥桶门,撞到锥桶球就停下来。比时间。
- 躲避球:看投手出手前的姿势:手举高是高球,按下蹲;身体压低是低球,按 B 跳;手往后拉是正面的球,按 A 接住,还能救回一个出局的同学。
- 接力赛:左右键跟着脚步的节拍轮流按,踩准就加速。到交接区按 A 交棒,太早会掉棒。
- 三种难度、自由练习。 简单(低年级、亲子)、普通、困难,区别只在判定时间的宽窄和其他班的实力。自由练习可以单独玩任何一个项目,适合轮流玩。
先做试玩版,再做完
AI 先写了策划:七个项目、一天的流程、每个项目“怎么玩、按哪些键”,再决定试玩版先做跳绳、拔河、接力赛三项,从开幕一路玩到颁奖。试玩版之后补上另外四项,变成完整的一天。
体育游戏和我们之前做的角色扮演、潜行解谜差别很大,所以这次不沿用之前的游戏引擎,只沿用和类型无关的部分:中文字体和文本框、音效驱动、构建工具。
试玩之后改的主要是手感:接力赛原来每个八分音符一步太快,改成每个四分音符一步,并放宽判定时间;两人三足加上节拍条;躲避球出手前的按键不算。还有一次是节拍对不准:AI 在模拟器里测出每一拍的鼓声落在哪一帧,把判定点校正到听到节拍之后一点点,播放器的声音延迟也改成固定,不再忽快忽慢。
怎么确认难度合适
AI 写了机器人玩家:它直接读取游戏内存里的节拍,再按“水平”故意偏一点按。一共五种水平:
- 完美:每次都在拍子上。
- 好:都在判定时间内。
- 普通:偏差最多到判定时间再加 2 帧,大约四次有一次失误。
- 随便:偏差最多到判定时间的两倍。
- 乱按:没有节奏,一直按。
每个项目、每种难度、每种水平各比 6 场(一个项目 90 场)。下表是“普通”水平赢了几场:
| 项目 | 简单 | 普通 | 困难 |
|---|---|---|---|
| 跳绳 | 6/6 | 3/6 | 0/6 |
| 丢沙包 | 6/6 | 3/6 | 0/6 |
| 两人三足 | 6/6 | 3/6 | 0/6 |
| 拔河 | 6/6 | 0/6 | 0/6 |
| 滚大球 | 6/6 | 4/6 | 0/6 |
| 躲避球 | 6/6 | 4/6 | 2/6 |
| 接力赛 | 6/6 | 6/6 | 2/6 |
“好”水平在每个项目、每种难度几乎全赢,乱按一场都赢不了。丢沙包没有节拍,机器人用和游戏同一套飞行规则算出能进篮的力度范围,再按水平偏一点。
另外也让机器人从标题玩到颁奖,三种结局都走到了:
| 机器人 | 难度 | 丁班总分 | 最高的其他班 | 结局 |
|---|---|---|---|---|
| 完美 | 普通 | 32 | 21 | 总冠军 |
| 普通 | 普通 | 24 | 24 | 总冠军(同分算丁班) |
| 随便 | 简单 | 16 | 26 | 第 3 名 |
| 乱按 | 普通 | 8 | 28 | 第 4 名 |
AI 执行的做法
- 一个项目一个模块。 七个项目各有自己的规则、对手、画面,用 65C816 汇编语言写成,共用文本框、计分板和颁奖。其他班不是照剧本走,而是按各班的实力,用和玩家一样的规则模拟出来。
- 节拍跟着音乐走。 每个项目有一个“节拍器”,按画面的帧数计时(每秒约 60 帧),一拍 32 或 40 帧,正好是曲子的一个四分音符。比赛中不重画文字,因为重画一次超过一帧的时间,节拍就会慢一帧。
- 不靠耳朵对拍。 在模拟器里录下每一帧的声音,找出音量突然变大的帧(鼓声、音符的开头),和节拍器比对;改了程序就重新测一次。
- 画面全部用程序画。 操场是一张 512 像素宽、左右可以无缝衔接的图:彩旗、教室、主席台、四个班的帐篷和家长、四条跑道。接力赛的天空、教学楼和跑道以不同速度滚动(HDMA)。小朋友有侧面 8 种、正面 5 种动作,四个班用不同的颜色。
- 十首曲子都是新写的。 标题、跳绳、拔河、接力、午饭、颁奖、丢沙包、两人三足、滚大球、躲避球,用 MML(用文字写的乐谱)写成,再转成游戏机的音源数据。
成本
| AI 工作时间 | 约 150 分钟(策划、试玩版和完整版约 132 分钟,试玩后的手感修改约 18 分钟) |
| 模型 | Claude Opus 5.5,共约 330 条回复 |
| AI 输出 token | 约 38 万 |
| 处理的 token 总数 | 约 1 亿(大部分是缓存读取) |
| 估计费用 | 约 33 美元(按 2026 年 11 月的 Anthropic API 标价折算;订阅方案计费方式不同) |
| 其他费用 | 0:字体是开源授权,其余都是为这款游戏制作的 |
版本记录
| 版本 | 改了什么 |
|---|---|
| 1.261107.6 | 接力赛的判定时间放宽 |
| 1.261107.5 | 节拍对准音乐,判定时间内的提示变成金色;两人三足加上节拍条;躲避球出手前的按键不算 |
| 1.261107.4 | 两人三足:搭档的口令改成白色对话框“一 左”“二 右”,草地上显示该迈的脚 |
| 1.261107.3 | 完整的一天:加上丢沙包、两人三足、滚大球、躲避球;接力赛按到另一只脚也算一步 |
| 1.261107.2 | 接力赛改成每个四分音符一步,判定时间放宽 |
| 1.261107.1 | 拔河的小朋友不再被切掉 |
| 1.261107.0 | 试玩版:跳绳、拔河、接力赛 |
还没做的
- 难度是用机器人算出来的,真人玩起来的手感,还需要更多人试玩。
- 节奏项目在手机触屏上还没仔细试过,判定时间可能需要再调。
想用 AI 做自己的游戏,在空文件夹运行 npx https://aixsfc.app/skill/aixsfc.tgz 再打开 claude,说明在首页。
来源与许可
- 字体:Cubic 11(俐方体11号),ACh-K,SIL Open Font License 1.1。
- 学校、班级、人物:虚构。
- 程序、规则、画面、角色、音乐:为这款游戏从零制作。