Gemini 4 Argon 做游戏:一句提示词,19 项按键实测

用 Gemini 4 Argon 做游戏,一句提示词能不能出一个真能玩的网页游戏?看 48 条发布周游戏帖,再用无头浏览器跑 19 项按键检查:一个输入 bug、一次修复、总花费 0.39 美元。

Gemini 4 Argon 一句提示词做网页游戏实测的封面插画,非游戏截图

用 Gemini 4 Argon 做游戏的演示视频,不管跳跃键灵不灵,看起来都一样。视频只能证明画面渲染出来了,证明不了玩家手速快过一帧时会怎样、切走标签页再回来会不会瞬移、死了按 R 能不能重开。可这些恰恰是「游戏」和「动画」的分界线。

所以这篇分两步走。先把 SandBase Lab 发布周合集里 48 条游戏帖过一遍,看大家用 Argon 做了什么、自己声称了什么;再自己动手:通过 SandBase 调 google/gemini-4-argon,一句提示词生成单文件 canvas 游戏,在无头 Chrome 里用真实按键跑 19 项检查,发现 bug 后发一次修复提示词,最后对账单。适合想靠提示词快速出可玩原型、又想知道分享链接前该查什么的开发者。

先说结论

  • 一句提示词生成的游戏是一个 23 KB 的单 HTML 文件,打开零报错,首版 19 项检查过了 18 项:移动、边界、暂停、帧间隔钳制、计分、生命、结束、重开、最高分持久化都没问题。
  • 唯一的失败出在输入时序:按下和松开发生在同一帧之内的空格「秒按」会被吞掉,10 次一次都没跳。原因是跳跃靠逐帧轮询「当前按住的键」。发一段修复说明后,模型只改了约 10 行,19 项全过。
  • 两次调用合计约 2 分钟,SandBase 实扣 0.390808 美元(每百万 token 输入 4 美元、输出 20 美元)。同样的 token 按 Google 目前 2 / 10 美元的推广价算,约 0.195 美元。
  • 48 条游戏帖里有 20 条是同题多模型对比。创作者自报的成本从 1.16 美元到 54.41 美元不等,差距主要来自 agent 工具反复重发上下文,而不是单价。这些数字我们都没有核实。

48 条 Gemini 4 Argon 游戏帖里有什么

SandBase Lab 收录了 2026 年 10 月 13、14 日两天 X 上公开发布的 264 条 Gemini 4 Argon 作品视频(合集页,数据同步于 2026-10-14T16:29:53Z),其中 48 条归为 game。这 48 条一共拿到 5,054 个赞、约 51.2 万次浏览,点赞中位数 20,视频时长中位数约 36 秒,只有 10 条附了提示词。下文都是创作者自己的说法,我们没跑过他们的游戏,也没核对过数字。

按「游戏对代码提了什么要求」来分:

类型例子(注明作者)对代码的要求
竞速、飞行@genevieve__h 用桌面照片生成的赛车游戏(@googledevs 发布)、@aniketjart 的无人机竞速 Heatsink、@chasen_liao 的卡丁车、@exploraX_ 的二战战斗机连续转向输入、镜头跟随、碰撞
休闲街机@ivanainai 的 3D Flappy Bird、@doe_naps 的软糖弹跳、@nex_ify 的 Jelly Jet Takeoff点按时机、计分、重开循环
物理沙盒@burhansebin 的过山车搭建器、@procesor_x 的连锁反应机关鼠标拖拽、模拟步进
棋牌、策略@soumyadesign 的 WebGL 麻将、@realbrucemartin 的 roguelike 卡牌、@remoteugur 的文明演化模拟回合状态、规则、多界面切换
体素、开放世界@jerrod_lew 带天气系统的体素世界、@fawnunwrap 的「谁先到下界」世界状态、方块放置
特殊输入@chongdashu 的多人夺旗、@venturetwins 改超任汇编做新关卡、@0xVibeDino 用冥想头环控制的游戏联网、ROM 工具链、蓝牙

至少 27 条在标题或正文里提到 3D、Three.js、WebGL 或体素。操作方式就很少有人写了,提到输入的只有寥寥几条(拖拽、点击、手机上滑、头环)。所以从合集里能看出游戏长什么样,看不出输入处理靠不靠谱。

对比视频怎么看

48 条里有 20 条是同一提示词下 Argon 和别的模型并排比。正文点名的对手:Claude Opus 5.5 出现 10 次,Muse Wonder 8 次,GPT-6 Astra 3 次,GPT-6.1 Sol 2 次,SWE-2 Max 1 次。点赞最高的游戏帖就是一条对比:@universalmodhq 的 Argon vs Muse Wonder,2,089 赞。对比帖点赞中位数 28.5,单独展示的是 19;不过两组只有 20 条和 28 条,这个差距说明不了什么(中位数置换检验 p ≈ 0.10)。

这些都只是某个人的一次运行。提示词常常不公开,工具五花八门(Antigravity、Cursor、Devin、JetBrains、AI Studio、Gemini App 都有),也没人在同一套检查下把两个游戏都玩一遍。@xueyu1125 就拿一条对比视频公开的 boss 战提示词在 Devin 里重跑,说效果远达不到视频里的水平,还质疑那条视频的真实性。这事我们判断不了,但它提醒了一点:视频不等于可复现的结果。

成本数字是这批帖子里最有参考价值的,因为差得实在太多:

创作者自述(未核实)工具自报成本与耗时
@wikiwayne:7 个游戏一次成型,「7/7、零修改」未说明1.34 美元,约 6 分钟,13.2 万输出 token
@nex_ify:一句话做出 Jelly Jet Takeoff未说明1.16 美元,11 分 6 秒
@realbrucemartin:单 HTML 的 roguelike 卡牌Devin约 1.75 美元(Devin 内 75% 折扣),56 分钟,输入 650 万 / 输出 10.9 万
@universalmodhq:Argon vs Muse Wonder未说明Argon 29.71 美元,Muse Wonder 3.45 美元
@jetbrains:蛛丝摆荡送货游戏,两个 agentJetBrainsArgon 54.41 美元、23 分钟;Opus 5.5 56.97 美元、2 小时 20 分

SandBase Lab 上 @wikiwayne「Seven one-shot playable games showcase」详情页:4 赞、429 次浏览,2026 年 10 月 13 日发布,正文声称 7 个游戏一次成型、花费 1.34 美元、13.2 万输出 token

Lab 详情页原样展示了 @wikiwayne 的说法,并注明作者没有公开具体提示词(2026-10-14 UTC 截取)。

看 realbrucemartin 那行:输入 650 万 token,输出才 10.9 万。agent 每一轮都把上下文重发一遍,输入费就被反复计算。wikiwayne 的 1.34 美元,大致就是 13.2 万输出 token 按 Google 每百万 10 美元推广价的价钱。游戏各不相同,谈不上严格对比,但同一个模型成本差 40 倍,主要是工具链造成的,不是价目表。我们的测试刻意放在便宜那一头:一次请求、一个文件、没有 agent 循环。

实测:一句提示词,一个 HTML 文件

提示词要的是「Lantern Drift」:玩家操控一盏纸灯笼沿夜晚的河面移动,接住萤火虫加 10 分,躲开掉落的火星,3 条命,难度慢慢上升。选 2D canvas 而不是 3D,是因为这次想考的是游戏循环和输入,不是渲染(渲染那部分见 Three.js 3D 场景实测)。提示词把游戏必须有、演示可以没有的东西都写明了:

  • 四个状态:title、playing、paused、gameover
  • 方向键或 A/D 移动,空格跳,回车或空格开始,P 暂停,R 重开
  • requestAnimationFrame 加帧间隔(delta time),并且要钳制上限,防止切回标签页时物体瞬移
  • 用 keydown/keyup 维护按键集合,方向键和空格要 preventDefault,别让页面滚动
  • 受伤后 1 秒闪烁无敌,最高分存 localStorage
  • 一个只读测试钩子 window.__game.getState(),返回状态、分数、生命、最高分、玩家坐标、实体列表和帧计数

测试只读这个钩子,所有操作都走真实键盘事件。

请求发出时间 2026-10-14 18:58:29 UTC:

{
  "model": "google/gemini-4-argon",
  "max_tokens": 32000,
  "messages": [{"role": "user", "content": "Build a complete, playable browser game called \"Lantern Drift\" in ONE self-contained HTML file ... Return only the HTML file in a single ```html code block."}]
}

完整提示词 22 行,约 290 个英文单词。推理强度、temperature、seed 都用默认值,接口是 POST https://api.sandbase.ai/v1/chat/completions(调用指南)。返回(节选):

{"id": "25144395-ad80-48e6-9119-8efe4096de23",
 "choices": [{"finish_reason": "stop", "message": {"content": "```html\n<!DOCTYPE html>\n<html lang=\"en\"> ..."}}],
 "usage": {"prompt_tokens": 438, "completion_tokens": 8762,
           "completion_tokens_details": {"reasoning_tokens": 0}, "total_tokens": 9200}}

63.0 秒返回,一个 848 行、23,077 字符的 HTML 文件,代码块外一个字都没多说。GET /v1/tasks/<id>/cost 实扣 0.176992 美元,正好等于 438 × 4/M + 8,762 × 20/M。usage 里推理 token 为 0;模型是不是推理了但没上报,从外面看不出来。

怎么测:19 项检查,全用真实按键

测试脚本用 Node 加 playwright-core,驱动本机无头 Chrome,视口 1280×800,记录所有 console 消息和页面报错,然后按这个流程走:

load file ──> title? ──Enter──> playing ──> frames advancing?
   │                                  ├─ hold Right / A ──> x changes, stays inside canvas
   │                                  ├─ Space held 100 ms, then 10 instant taps ──> hops?
   │                                  ├─ freeze main thread 2 s with Right held ──> no teleport?
   │                                  ├─ P ──> frames and entities frozen, input ignored ──> P resumes
   │                                  └─ play on until lives = 0 ──> gameover, best saved
   └─ R ──> score 0, lives 3 ──> reload page ──> best still there ──> zero console errors?

有两项是截图永远查不出来的。「秒按」把 keydown 和 keyup 连着发,两者都落在两帧之间,相当于掉帧时的一次快速点按。「卡顿」则在按住右键的同时把主线程堵 2 秒:如果帧间隔没钳制,灯笼会按每秒 320 像素一下窜出约 640 像素。

秒按检查的核心逻辑(从脚本简化):

// Read-only probe: count how many of 10 instant Space taps make the lantern leave the water.
async function countHops(page, taps = 10) {
  const y = () => page.evaluate(() => window.__game.getState().player.y);
  let hits = 0;
  for (let i = 0; i < taps; i++) {
    const y0 = await y();
    await page.keyboard.down('Space');
    await page.keyboard.up('Space');            // released before the next frame
    let minY = y0;
    for (let k = 0; k < 8; k++) {               // sample ~240 ms of flight
      await new Promise((r) => setTimeout(r, 30));
      minY = Math.min(minY, await y());
    }
    if (minY < y0 - 10) hits++;
    await new Promise((r) => setTimeout(r, 1100)); // wait to land
  }
  return hits;
}

修复后的 Lantern Drift 在无头 Chrome 中运行:灯笼正跳在半空,下方水花溅起,旁边有一颗红色火星,萤火虫在下落,HUD 显示 Score 10、Lives 3、Best 10

修复版在按下空格 230 毫秒后的画面:跳跃、水花和实时 HUD 全部来自 Argon 生成、我们没动过的文件(2026-10-14,2 倍截图)。

第一版哪里翻车了

18 项通过。循环稳定 60 fps,灯笼在 800 像素宽的画布上停在 x=20 和 780,暂停时帧计数和所有实体都冻住,2 秒卡顿后灯笼只挪了 21 像素而不是 640。生命 3、2、1、0 依次减少,最高分写进 localStorage,刷新后还在。没有任何报错或警告。

失败的那项:按住空格 100 毫秒每次都能跳,秒按 10 次一次没跳。换几个按住时长一试,原因就清楚了:0 毫秒 10 次跳 1 次,5 毫秒跳 3 次,30 毫秒和 100 毫秒都是 10 次全跳。代码只在 update() 里查 keys.has('Space'),按下又松开都发生在两帧之间的话,update 根本看不到。

正常人按键一般超过 16 毫秒,稳定 60 fps 时很少碰上。可一旦掉到 30 fps,一帧就是 33 毫秒,快速点按开始漏,而「偶尔不听使唤的跳跃」正是玩家最记仇的那种 bug。

写修复提示词时,我们顺手加了两条之前没测的约束。后来补测发现第一版两条都不满足:在标题页按空格开始游戏,第一帧还会顺带跳一下;按住空格不放会连续自动跳(2.4 秒跳了 3 次)。

一次修复

修复提示词是一份 bug 报告,不是补丁:哪些通过了、怎么复现(秒按 10 次 0 跳)、原因(轮询按键集合)、期望行为。游戏进行中每次空格 keydown,只要灯笼在水面上就跳;按住不自动连跳;标题页的空格只负责开始;「其他一律别动」。发送内容是原提示词、第一版文件(作为 assistant 回复)、再加这份报告。

第二次调用在 2026-10-14 19:05:11 UTC,耗时 57.3 秒,输入 9,429、输出 8,805 token,扣费 0.213816 美元。Argon 按要求整份重写,但和第一版 diff 一下,只改了约 10 行:加一个 jumpQueued 标记,在新的 keydown(忽略 e.repeat)时置位,在 update() 里消费,开局时清零。其余一行没碰。

Lantern Drift 测试结果表:v1 一句提示词,63.0 秒,输入 438、输出 8,762 token,0.1770 美元,19 项过 18 项,秒按失败;v2 一次修复,57.3 秒,输入 9,429、输出 8,805 token,0.2138 美元,19 项全过

测试脚本输出整理成的表:两版只差秒按这一项;耗时和费用来自两次调用及其 /v1/tasks/<id>/cost 记录。

第二版 19 项全过,秒按 10 次跳 10 次。补测也确认那两个小毛病没了:标题页按空格只开始不起跳,按住空格 2.4 秒不再连跳。

修复版 Lantern Drift 的结束画面:面板显示 GAME OVER、Your lantern light was extinguished、Final Score 30、Best Score 30、Press R to Restart,背景河面变暗,Lives 0

这个结束画面是真玩出来的,不是走捷径:测试脚本左右来回移动时生命耗尽,之后按 R,分数归 0、生命回到 3(2026-10-14)。

花了多少钱

调用耗时输入 / 输出 tokenSandBase 实扣按 Google 2 / 10 美元推广价
v1,一句提示词63.0 秒438 / 8,7620.176992 美元0.0885 美元
v2,修复提示词57.3 秒9,429 / 8,8050.213816 美元0.1069 美元
合计120.3 秒9,867 / 17,5670.390808 美元0.1954 美元

SandBase 上 Argon 的标价是每百万 token 输入 4 美元、输出 20 美元,也就是 Google 推广期(截至 2026 年 11 月 30 日)结束后的标准价,目前是 Google 直连推广价的两倍。第一版账单约 99% 是输出费。修复那次更贵,因为要把第一版整份文件当输入重发。缓存和 12 月 1 日调价的影响,见 Gemini 4 Argon 价格指南。

SandBase 上 Gemini 4 Argon 模型页:id 为 google/gemini-4-argon,输入 4.00 美元、输出 20.00 美元每百万 token,上下文 1M,最大输出 65.5K,生产线路 Live

SandBase 的 Gemini 4 Argon 模型页:4 / 20 美元的单价就是我们账单的依据;单次最大输出 65.5K,远高于这个游戏用掉的 8.8K(2026-10-14 UTC 截取)。

这个体量下,每多修一轮大约再花 0.21 美元,因为模型每次都整份重写。游戏大 5 倍,单次输出费也大致翻 5 倍;而且 SandBase 上单次回复最多 65.5K 输出 token。让模型只返回 diff 应该能省输出费,这一点我们没测。

做可玩游戏的提示词套路

这次之所以好测,靠的是提示词写法:

  1. 把状态列出来。 写明 title、playing、paused、gameover,拿到的就是状态机,而不是只知道「运行中」的循环。
  2. 逐个状态写清每个键的作用。 输入 bug 都藏在缝里,比如空格在标题页是「开始」、进了游戏是「跳」。
  3. 要求边沿触发。 写上「每次 keydown 恰好跳一次,即使在下一帧之前就松开」。我们没写,于是正好撞上这个 bug。
  4. 要求帧间隔钳制和 preventDefault。 Argon 第一版就做到了;缺了它们,切标签瞬移和页面乱滚通常是最先被吐槽的。
  5. 要一个只读测试钩子。 一个 getter,就能把「视频里看着没问题」变成「出问题会大声报错」的检查。
  6. 修复时写 bug 报告。 复现步骤、实际结果、期望结果、「其他别动」。这次换来的是 10 行 diff,而不是推倒重来。

想看从创作者公开提示词里总结的完整写法,见 Gemini 4 Argon 提示词指南。如果关心关卡推进和碰撞这类更难的逻辑,之前的 GPT-6 Astra 与 Claude Fable 5.1 3D 游戏实测 用的也是测试钩子思路。

常见问题

Gemini 4 Argon 一句提示词能做出可玩的游戏吗?

我们这次可以,但有个前提:第一版 19 项过 18 项,漏了快速点按空格;一次修复后 19 项全过。一个提示词、一种玩法、一次运行,只能当例子,不能当成功率。

用 Gemini 4 Argon 做一个游戏要花多少钱?

我们这个 23 KB 的 canvas 游戏在 SandBase 上首次 0.177 美元、修复 0.214 美元,合计 0.39 美元。创作者自报 1.16 到 54.41 美元,多数是在会反复重发上下文的 agent 工具里跑的,那是他们的数字。

第一版为什么会漏掉跳跃?

它每帧检查空格是否「正被按着」,按下和松开都发生在两帧之间的点按就永远看不到。修复办法是把每次 keydown 记成一次性事件,留到下一次 update 消费。

对比视频能说明哪个模型做游戏更强吗?

不能。每条都是某个创作者的一次运行,往往没有提示词,工具也不同,没人在同一套检查下把两个游戏都玩过。

怎么自动测试 AI 生成的游戏?

让模型提供只读的状态 getter,用 Playwright 在无头 Chrome 里打开,发真实按键,再对状态做断言。一定要加「秒按」和「主线程卡顿」两项,截图查不出的时序 bug 靠它们抓。

测试边界

一个提示词、一种 2D canvas 玩法、每版各跑一次、模型参数全默认,时间 2026-10-14 UTC。只在 Mac 上的无头 Chrome、60 fps 下测过:没测 Firefox、Safari、触屏、手柄、其他刷新率、音频和无障碍。这里的「可玩」只表示指定的操作和状态都正常,不代表好玩。创作者帖子均为自述,我们没有复现。Argon 在独立榜单上的位置,见 Gemini 4 Argon 跑分排名;各类别最受欢迎的作品,见 Gemini 4 Argon 作品精选。