
作者 | Stepan Parunashvili 编译 | 苏宓
出品 | 优快云(ID:优快云news)
我们距离“一人造一家公司”、亦或者“仅凭自然语言就能开发出一款完整的应用甚至游戏”还有多远?
为了测试现阶段大模型的真实能力,一位名为 Stepan Parunashvili 的开发者做了一项有趣的实验。
他挑选了近期刚更新过的大模型:Google 的 Gemini 3 Pro、OpenAI 的 GPT-5.1-Codex-Max 和 Anthropic 的 Claude Opus 4.5,还“斥巨资”订阅了每家公司的顶级套餐,让它们分别制作一款基础版游戏,主题是——“使用 Three.js 构建一个浏览器版本的《反恐精英》。”
除此之外,Stepan Parunashvili 还给出了一些限制条件:游戏必须采用 3D 用户界面,并且支持多人联机,也就是明确了前端和后端的开发要求。
经过大约七轮连续提示,三款模型终于产出了各自的成品,以下为试玩地址和界面:
Codex Max 5.1:https://cscodex.vercel.app/

Claude Opus 4.5:https://csclaude.vercel.app/

Gemini 3 Pro:https://csgemini.vercel.app/

可就在 Parunashvili 将自己尝试的经过与 AI 生成的代码开源出来后,争议也随之而来。

首先,我们先来看看 Parunashvili 从模型生成前端到游戏搭建的全过程。

准备工作
在这次实验中,Parunashvili 除了订阅了每款模型最高等级的服务之外,也使用了各自默认的命令行界面(CLI)设置:Codex 使用的是 GPT-5.1 版本的 codex-max,Claude 则是 Opus 4.5,Gemini 选择了 3 Pro。
接着,他给每个模型连续发送了大约七个提示词,这些提示词分为两类:
前端任务:最初的阶段,模型只需要处理游戏机制,包括场景设计、敌人设置、射击逻辑以及一些音效。
后端任务:当前端搭建完成后,这些模型需要将游戏扩展为多人模式,包括房间选择功能,玩家可以加入房间并开始射击。
那么,这些模型的表现如何?

第一步:设计一张拥有第一人称视角的地图
Parunashvili 称,让大模型制作游戏的第一个目标是搭建游戏的物理引擎。模型需要设计出一张带有第一人称视角的地图,并实现可以射击敌人的功能。
Parunashvili 写的提示词也非常简单:
“我希望你用 Three.js 创建一个浏览器版的《反恐精英》。
目前先只做本地版本,不用考虑后端、即时功能或其他复杂设置。
第一个版本中,主角采用第一人称视角,并带有瞄准的准星。敌人随机出现,每个敌人有生命值,可以被射击并击杀。击杀后敌人会重生。
一切元素都用简单的多边形表示——比如矩形。”
简单的几句话之后,各个模型给出了以下结果:
Codex:

Claude:

Gemini:

不难看出,在视觉效果上,Claude 生成的地图稍微丰富一些,其中包含了障碍物、色彩鲜艳的地面,而且整体视野清晰。
Gemini 做的效果也还行。
相较之下。Codex 生成的地图在视觉上最不吸引人,它的整体风格偏暗,没有障碍物,地面也不易分辨。Parunashvili 还透露,“Codex 在首次运行时出现了一个错误(调用了未导入的函数)”,好在后续提醒它之后,自己很快就修复了。

角色设计
在有了地图和简单多边形障碍物等元素之后,Parunashvili 继续让模型开始为游戏里面的角色设计样式。
提示词如下:
“我希望你把敌人设计得看起来更像人。用多个方形以及多边形来表示一个人物,也可以加一把小枪。”
基于此,三款模型根据这一提示生成的角色效果各有不同:

通过上图,我们发现,Claude 的表现依然最佳,生成的角色看起来挺像人的,对于这一输出结果,Parunashvili 评价道,“它几乎达到了类似《Minecraft》的设计水平”。
Gemini 的表现也不错,而 Codex 虽然改进了角色形象,但所有角色都只有单一颜色,相比之下显得逊色不少,而且依然有些看不清楚。

视野中的武器
紧接着,Parunashvili 让模型在第一人称视角中加入武器,并希望射击时有后坐力动画效果。
提示词如下:
“我希望在我的视野中也能看到一把枪。射击时,枪会有后坐力。”
很快,三款模型便给出了各自的输出结果。
Codex:

Claude:

Gemini:

在实验中,Claude 和 Codex 一次就成功让武器在画面中显示出来。
而 Gemini 模型在把枪固定到摄像机(玩家视角)上时遇到了问题。Parunashvili 提醒 Gemini 之后,这款模型也警醒了反复的尝试,后来才发现,问题的原因是枪是透明的,所以看起来好像没“固定”上去。

添加音效和动画
至此,前端工作几乎完成,最后一步是加入音效。
Parunashvili 给出的提示是:
“我希望你用 chiptune 风格来表现射击的声音,同时希望为角色死亡添加动画。”
Parunashvili 表示,给游戏加声音对三个模型来说都挺容易的,它们也都生成了动画。整体来看,还是 Claude 生成的动画最有趣、最有活力。


共享位置
在前端搭建完成后,Parunashvili 继续让模型开始实现多人模式。这一阶段还不涉及射击功能,首要目标是共享玩家位置。
提示词如下:
“我希望你使用 Instant Presence。
不要将任何内容保存到数据库中,只需使用 presence 和 topics。 你可以查阅相关文档。
只需要一个房间即可。
不再需要随机放置敌人,只有玩家的位置需要被设置。
目前先不考虑射击功能,只需要让玩家的位置能够被共享。”
在这一环节中,Gemini 一次就完成了目标,而 Codex 和 Claude 则需要稍加引导才能达成预期效果。

在博文中,Parunashvili 分享了自己在观察各模型解决问题时的一些看法,其中:
Codex 依赖大量自我检查。它会不断查看 TypeScript 库和可用函数,但似乎不太参考文档。
Claude 则完全相反,它频繁查阅文档,反复阅读关于 Presence 的说明,但很少像 Codex 那样对库本身进行深度分析。
Gemini 则兼顾了两者。它既查看文档,又在不断运行构建步骤的过程中,发现并修复 TypeScript 错误。
在这一环节,Gemini 的进展最快,但实际上只要 Parunashvili 将错误信息反馈给模型,三者最终都能完成任务。

实现射击功能
接下来,就是让模型开始实现射击功能。
提示词如下:
“现在让射击生效。当我开火时,将射击信息发送为 topic,并影响目标的生命值。当目标生命值归零时,角色死亡并重新生成。”

其中,Claude 一次就完成了射击功能,而 Gemini 和 Codex 虽然遇到了一些问题,但只要将错误信息反馈给它们,很快也能解决。

多地图支持
在单房间功能完成后,Parunashvili 继续让这三款模型开始去开发支持多个房间功能。
让大模型做这一款任务,其实存在两层的挑战:一是模型如何应对新的 API(持久化功能),二是它们如何处理为支持多房间所需的重构工作。
这里用到的提示词是:
“现在让首页显示一个地图列表。由于我们的 UI 使用了大量多边形元素,风格也请偏向多边形风格。
让界面像老版《反恐精英》的地图选择界面。我希望将这些地图保存到数据库中,每张地图都有名称。用脚本生成 5 张随机地图并起有趣的名字。
同时设置权限,让任何人都能查看地图,但不能创建或编辑。
当加入地图时,可以直接用地图 ID 作为 Presence 的房间 ID。”
最终,在地图界面设计上,三款模型都表现出色,生成的 UI 效果都很不错。
Codex:

Claude:

Gemini:

持久化功能
Parunashvili 表示,整个过程中,各个大模型的持久化运行得很顺利。三款模型都按要求创建了地图的数据库结构、执行了迁移操作,并生成了 5 张示例地图。
重构阶段
不过,在进行多房间支持所需的重构时,事情就变得复杂起来。

在多房间重构阶段,Gemini 一次就完成了任务。它还选择将地图 ID 保留在 URL 中,这让玩家使用起来更加方便。
而 Codex 起初是遇到一次查询错误,随后,又通过一次交互解决了自身的代码 Bug。
相比之下,Claude 的表现不佳,代码出现了严重问题。通过排查,Parunashvili 发现主要根源出在 React Hooks 上。由于 useEffect 可能会多次执行,Claude 最终出现了一些非常微妙的 bug,例如生成了两个 canvas 对象而不是一个,同时有多个动画引用同时运行。
此时,想要让 Claude 模型自行修复这些问题,似乎不太可能。为此,Parunashvili 只能亲自查看代码,才能帮助 Claude 继续下一步的测试。

对比三大模型的能力
最终,所有模型都成功做出了真正能玩的多人 FPS 游戏,Parunashvili 透露,这其中一行手写代码都没有!
其总结道,整体来看,在前端设计方面,Claude Opus 4.5 延续了 Anthropic 系列模型的一贯优势。它制作的地图更精美,角色和武器设计更出色,总体场景也从一开始就更符合预期。
前端完成后,Gemini 3 Pro 在后端表现更胜一筹。它在添加多人模式和数据持久化时出错情况较少,总体上在逻辑处理方面比其他模型更稳健,而不仅仅是视觉效果。
Codex Max 5.1 则更像一个“中间派”,无论前端还是后端都表现得比较均衡。它在前端和后端都算合理,但没有明显的亮点,相比其他模型显得更平稳。
基于以上,Parunashvili 也整理了详细的评分表,对各模型在不同环节的表现做了量化记录:


最后
不得不说,这些能够依靠 CLI 对自身生成的代码进行反复迭代,也会参考一些文档。不过,这距离人类工程师“完全不需要查看代码”也就是“仅用自然语言开发游戏”的愿景,还有很长的路要走。
对此,Parunashvili 坦言,「这次实验总共大概花了 2 个小时。最后确实需要一些“手把手”指导大模型,我不认为一个非程序员能顺利完成这些步骤。」
为了让更多的开发者了解整个经过,Parunashvili 还制作了一段完整视频(https://www.youtube.com/watch?v=fm-OoCWQlmc)记录了从模型生成到游戏搭建的全过程。同时,他也将 AI 生成的项目代码在 GitHub 上开源出来:
Codex:https://github.com/stopachka/cscodex
Gemini:https://github.com/stopachka/csgemini
Claude:https://github.com/stopachka/csclaude
这也引发了不少网友的兴趣,可就在查阅项目代码之后,一些争议也出现了。
一位名为 BearOso 的网友称:
我试着找一些没被压缩过的代码,好评估一下它的质量,结果在 gemini 版本里发现了关于天空渲染的 shader 代码。整段 shader 看起来就像是被原封不动地吐了出来一样。按许可证要求来看,这肯定站不住脚。下面是其中一段:
// wavelength of used primaries, according to preethamconst vec3 lambda = vec3( 680E-9, 550E-9, 450E-9 );// this pre-calcuation replaces older TotalRayleigh(vec3 lambda) function:// (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn))
Preetham 是谁?大概是这段代码的版权持有人之一。
另一位开发者也指出,“大模型的训练数据里包含了大量并没有合法授权的代码,居然还有人在一直用它,而它还会随随便便把整段代码原样吐出来,完全违背使用条款。”
此外,还有网友觉得:“这让我感到沮丧。大模型会把我工作中最有趣的部分夺走,而我将被困在审查或修修补补它们那堆‘能编译就行’的代码里。”

对此,你怎么看?
来源:https://www.instantdb.com/essays/agents_building_counterstrike#user-content-fn-1
https://news.ycombinator.com/item?id=46080835
推荐阅读:
C++之父亲临北京,AI 原生时代最值得参加的系统软件技术大会日程发布
“逃离GitHub!”开发者接连出走后怒批:前端不友好、体验直线下降、内部工程文化已“烂掉”
Linus现身亲手组装“理想Linux PC”,谈Linux未来:若有人更适合,我愿退位!
【活动分享】2025 年是 C++ 正式发布以来的 40 周年,也是全球 C++ 及系统软件技术大会举办 20 周年。这一次,C++ 之父 Bjarne Stroustrup 将再次亲临「2025 全球 C++及系统软件技术大会」现场,与全球顶尖的系统软件工程师、编译器专家、AI 基础设施研究者同台对话。
本次大会共设立现代 C++ 最佳实践、架构与设计演化、软件质量建设、安全与可靠、研发效能、大模型驱动的软件开发、AI 算力与优化、异构计算、高性能与低时延、并发与并行、系统级软件、嵌入式系统十二大主题,共同构建了一个全面而立体的知识体系,确保每一位参会者——无论是语言爱好者、系统架构师、性能优化工程师,还是技术管理者——都能在这里找到自己的坐标,收获深刻的洞见与启发。详情参考官网:https://cpp-summit.org/

2098

被折叠的 条评论
为什么被折叠?



