我是一名经验丰富的Unity游戏程序员,但在这个项目中我几乎没有手动写代码。
大约在6月18日我开始构建一个类似PUBG的游戏模式,并于九月初上线——大约两个半月后。在此期间,我完成了500多次提交。
这可不是小型游戏创作马拉松的原型。该项目包括:
- 第三人称移动与射击
- 跳伞与着陆
- 多武器、换弹、瞄准、近战攻击和手雷
- 物品栏、装备、战利品和自动拾取
- 治疗、护甲、击倒、复活与死亡
- 队伍与队友标记
- AI控制的玩家
- 一个日益缩小的安全区
- 小地图和全屏地图
- 移动操作与战斗界面
- 多人游戏状态同步
- 真实服务器与假服务器后端
- 运行时调试与性能工具
- 针对远程玩家、战利品和大型环境的优化
几乎所有的实现都是由人工智能生成的。我负责决定要构建什么、定义架构、审查关键边界、测试结果并修正方向。
我并不完全理解代码的每一行
如果让我把自己归类到以下几类之一:
- 我理解每一个功能和系列。
- 我了解整体结构和职责。
- 我完全不知道代码具体做什么。
我完全属于第2类。
我知道玩家状态存储在哪里。我知道角色状态机的工作原理,武器和技能的组织方式,UI如何与游戏数据分离,消息如何在客户端和服务器之间流通,以及哪个系统负责各项责任。
但我记不清每个功能或每一句话。
我认为对于如此规模的项目来说,这并不是一个有价值的目标。即使程序员手动编写所有内容,他们通常也不会把整个实现都记在脑子里。重要的是要足够了解架构、合同、所有权和不变量,以便在必要时定位并调查问题。
我与人工智能的关系类似于领导开发团队。我定义了结构和要求,审查了重要决策,并核实了结果。区别在于,AI通常比人类开发者更能一致地遵循约定的计划。
生成第一个版本是最简单的部分
人们常常用AI编程快速生成原型来评判它。我觉得这并不能证明太多。
真正的考验开始于:
- 需求变化
- 旧系统必须重构
- 修复会破坏另一个功能
- 网络消息的到达顺序出乎意料
- 资源异步加载
- 假服务器的行为与真实服务器不同
- 移动端输入会暴露编辑器中从未出现的问题
- 游戏必须被打包、集成并发布
项目经历了所有这些阶段。
例如,我用多个负责身份、库存、装备和战斗的管理者取代了一个大型玩家数据结构。我把真服务器和假服务器分开在一个通用的后端接口后面。我把战斗界面重新整理成独立的模块。我还为远程玩家和战利品引入了代表性等级,让客户端可以选择无代表、代理、简化版本或完整对象。
那不是一次性的几代。这些都是对现有互联系统的变化,同时项目还在继续推进。
这就是为什么我认为这个项目是人工智能编码的有意义证据。它不仅生成了演示。它经历了数百次后续的改动。
我最可靠的工作流程是:
- 讨论AI的问题。
- 让它检查现有代码。
- 在原因、架构和风险上达成一致。
- 做一个小改动。
- 运行游戏,观察实际行为。
- 记录有用的运行时信息。
- 根据证据进行修正或重构。
当AI反复误解系统时,我停止无限期地试图改进提示。相反,我改变了架构,使责任更加明确。
如果两个系统都能修改同一个状态,我就引入单一所有者。如果调试依赖于读取大量日志,我就添加结构化的运行时记录。如果真实服务器阻碍了开发,我就搭建一个假服务器路径。如果对象创建导致帧尖峰,我会将逻辑存在与视觉表现分离,之后创建模型。
换句话说,我不仅仅是要求人工智能解决问题。我试图重塑项目,让人类和人工智能都更少误解它。
可观察性比阅读所有内容更重要
因为我没有手动写每一行,运行时的可见性变得极其重要。
对于复杂的同步问题,我记录了如下事实:
- 事件名称
- 时间和帧
- 玩家标识符
- 网络路径
- 当前武器和弹药
- 服务器数据是否已到达
- 角色身体是否存在
- 当前初始化阶段
这往往比阅读许多文件并猜测更有用。
我可以问:“为什么玩家在服务器上有正确的弹药,但HUD仍显示为零?”此时AI可以追踪记录的序列,而不是从静态代码中编造解释。
对于AI辅助开发,良好的诊断不是可选的。它们是架构的一部分。
结果稳定,但这并不意味着完美
游戏上线后,前三天内未收到任何错误报告。
这并不证明没有任何错误。玩家数量、游玩时长和报告行为都会影响。但它表明,由AI编写的复杂游戏模块可以达到商业可接受的稳定性,而非在发布后立即崩溃。
该项目也存在弱点。
有一位同事觉得射击手感很差。这批评可能是公正的。
AI帮助我非常快速地实现系统,但良好的游戏手感仍需要品味、反复试玩、强动画和音频、精细调节以及明确的参考。完成一个技术上复杂的游戏模式并不等同于让每个部分都感觉出色。
这也是一个重要教训:AI 大幅降低了实现成本,但并未消除对游戏设计的需求。
我认为人类需要负责的部分
在这套流程中,人类仍需决定:
- 需要构建什么
- 哪些责任应由谁负责
- 哪些权衡是可接受的
- 当前行为是否真正感觉正确
- 何时补丁、何时重构
- 在称 something 为已修复前需要什么证据
- 当一个功能足够完整可以发布时
AI 可以比我打字快得多地生成代码。但速度也带来新的问题:它可能生成功能的速度快于我思考其设计的速度。
瓶颈从编码转移到了判断。
我的结论
这个项目让我确信,复杂的商业游戏模块几乎可以完全由 AI 实现,并且能够经受住变更需求、调试、集成和发布的考验。
但 “AI 写了代码” 不等于 “AI 自己做了整个游戏”。
我的角色向上提升。与其亲自实现每个功能,我专注于意图、架构、约束、验证和产品决策。
最有价值的技能不再是打字写代码,而是让问题足够清晰、架构足够稳固、反馈循环足够强大,使 AI 能够在不破坏项目的前提下继续贡献。
生成代码很容易。
保持 AI 编写的项目在 500 之后的提交中保持可理解、可变更和可发布,才是真正的挑战。
评论 (0)