TL;DR: 我的第一个游戏是Inselnova,是一个浏览器策略游戏,使用AI开发,已经在实时环境中运行三个月。AI快速开发,但也快速地将错误推向生产环境。因此,真正的工作不是让AI编写代码,而是围绕它构建一个防止它错误地推送代码的“笼子”。这个笼子是通过记录我已经犯下的错误,转化为防止我再次犯相同错误的门户。

我的第一个游戏

Inselnova是我的第一个游戏。我已经编写软件30年,建立了公司,领导团队,但从未制作过游戏。 我使用AI来看看工作流程的远景。

它是一个浏览器策略游戏。你在岛上定居,袭击邻居,防御,排队建造,登出,回来后。三个月后,它已经在实时环境中运行,超过500人注册,几十名玩家每天登录。 我审查每个变更,并且几乎没有类型任何代码,这在这个子论坛中可能会让人惊讶。

Inselnova在移动设备上可用

防止错误的笼子

AI快速开发。压缩三个月的工作成几天。然而,经常被忽视的是它快速地将错误推向生产环境。它会编写一个自信的,结构良好的变更,静静地在三系统之外打破了什么,并且不会犹豫。 问题会随时间而恶化。

因此,真正的工作不是让AI编写代码,而是围绕它构建一个防止它错误地推送代码的“笼子”。这个笼子是我的变更所经过的每个门户:一套技能,一堆脚本和一个带有每个步骤门户的发布管道。

笼子是通过记录我已经犯下的错误,转化为防止我再次犯相同错误的门户而增长的。早期代码使用一个数据库日期函数,开发环境中运行良好(用于快速测试),但在生产环境中,Postgres数据库上却静静地做了错误的事情。它碰了我好几次。现在,一个检查在每个变更中扫描该模式,并在发现一个后停止构建。错误不再被允许存在。

将这一过程重复,三月的错误数量,你会得到笼子。

捕捉错误的技能

有三个技能存在于防止错误变成代码。

grill 在我编写任何代码之前就运行了。 我载入一个票,解释我想要什么,然后触发它。它首先读取相关代码,然后向我提问最多五个问题,只有答案会改变实现的。它不是一个调查。每个问题都带有推荐值。它结束时打印一个简短的工作协议:目标、方法、超出范围的内容。然后它停止。没有任何代码被编写,直到计划是明确的。 我从“grill me”提示模式中借鉴了这个想法并将其加强。

impact-check 在任何变更前都会运行。变更是对游戏规则、公式、成本、平衡数字的变更。 AI很高兴地将谷物产量降为一半。 impact-check使其停止并将所有变更触及的内容浮现出来:读取值的代码、手册页、设计文档、测试等。然后它要求我在口头上确认交易。 那个技能的变更看起来像一个一行的战斗调整,允许袭击主建筑。它会编译良好。它也会静静地崩溃区别于快速袭击和慢速昂贵的占领领土的区别。代码是高兴的。游戏会变差。

reconcile 在之后运行。 它会对生产环境中的游戏进行审计,检查手册是源真实的游戏是如何运作的。 它捕捉两种方向:代码从手册中漂移,手册中描述的机制从未存在。 它不会静静地修复任何一方。 它会将冲突呈现给我,我决定哪一方是错误的。

到达实时环境

一旦变更被编写,它就会通过一个固定的路径,每个步骤都是门户。

没有任何变更会发生,没有一个票。 我载入一个问题,从Helm中载入一个问题,然后会话会被锁定到它。 玩家bug报告直接进入同一追踪器。笼子拒绝将工作推向生产环境中,除非它与一个票相关。

commit 不仅仅是提交。 它只提交了从会话中载入的文件。 它没有一次性提交所有内容。 它将变更排序为变更日志条目,玩家可见和技术说明分开。 它运行质量门户:类型检查、翻译密钥检查,如果有玩家可见的文本移动了,一个scoped的后端测试。 如果任何检查失败,它会停止。 然后它会写入一个提交,附带票号,并将票号向前移动。

release 是最后和最严格的门户。 它不会运行,除非在同一天审查整个发布都是绿色的。 它会验证分支,更新版本,推广变更日志,打开一个pull请求到GitHub。 这个pull请求是最终触发CI的东西。

CI在GitHub Actions中运行,花费时间。 它会类型检查代码库中的每个部分,静态检查一个批次,工作出变更会影响哪些部分并运行测试套件,运行后端测试套件,分成六个并行分片,构建每个工作区,并在浏览器中两次运行烟雾测试以捕捉易碎的测试。 只有当所有检查都是绿色时,发布才会合并。 合并会再次运行一次烟雾测试,最后会触发Render上的发布。

慢到实时,减少了热修复

将所有这些加起来,一个曾经在秒级内到达实时环境的变更现在需要10分钟。

我认为这是一个正确的交易,需要我一段时间才能相信。 10分钟似乎很慢,尤其是在你习惯于即时的速度时。但是,实时速度从来不是我应该优化的东西。真正伤害我的是如何经常需要停止工作并在实时环境中修复一个游戏。 玩家在它中。

这个数字已经降到了接近零。笼子现在捕捉错误,门户之前。更慢的发布,减少了火灾,特别是在晚上。

还没有解决的问题

笼子是我的信心所在。 两个问题我还没有解决。

第一个是接收。发布任何AI编写的内容,会有人称之为垃圾。 这是一个公平的默认值,很多AI编写的游戏都是薄的。 我唯一的答案是游戏在有人实际玩它时仍然保持稳定。 引入玩家是最难的部分。

第二个是我的设计决策。 我加快了游戏的速度,因为慢速的早期游戏会失去第一天的玩家,这个部分是有效的。 但是,中期的游戏依赖于其他玩家,联盟的形成,战争的开始,需要有人与你交易,需要有人让你害怕。 这需要一个拥挤的地图。 几十名玩家中,中期可能会感到空虚。 我加快了速度之前,没有人口来填充它。

笼子的真正本质

三个月后,作为一个第一个游戏,它是一个真正的东西,拥有真正的玩家。

我会传授的教训是乏味的。 AI编写代码从来不是难题。 构建一个笼子,防止它错误地推送代码,是难题。 这个笼子是我的错误的记录,转化为防止我再次犯相同错误的门户。

如果你正在使用AI开发游戏,我想知道你的笼子里有什么。 什么曾经发生过,什么门户你添加了,以便它不能再次发生?

构建你的笼子,如果你不确定如何,问你的AI代理。 我不相信你可以从货架上拿下它,但你可以问你的代理找到一个现有的技能来激发它。

https://preview.redd.it/6o61nng5o03h1.png?width=1900&format=png&auto=webp&s=e24cc5c47ad9c557bfe8e642c2beb579627e66dc

Inselnova是免费的,如果你想看看什么会从另一边出来:https://inselnova.com