我是一个非常技术性的游戏设计师,但不是工程师。我已经在游戏行业工作了大约15年(作为设计师或游戏总监)。我工作于一个大型发行商,所以我做的大部分工作都是因为我喜欢做它。然而,我无法将任何内容发布到世界上(即使是开源),因为它将属于发行商。然而,我对如何利用新技术来开发游戏很感兴趣。目前,我还没有涉足艺术方面,并且不确定是否会涉足。然而,我对使用LLM进行开发的潜力很感兴趣。

我的工作流程如下:

  1. 在Claude应用中输入提示
  2. 将PR提交到github并进行审查
  3. 在github上使用github Actions进行构建
  4. 在我的Steam Deck上运行一个脚本来下载构建
  5. 运行、测试、代码审查并返回到1

我尝试了以下几种方法:

  • Unity with MCP——感觉很笨拙,Unity做了很多奇怪和臃肿的事情,而且Unity本身就是一个臃肿的引擎,我不需要90%的功能,它们只会让我困扰。
  • Unreal with LLM——使用LLM编写C++代码,感觉很好,但我没有感觉到自己比使用自己的蓝图或与编辑器进行工作更快。
  • Godot——构建时间在2分钟之内,但最小的导出包大小为30MB,场景系统让LLM感到困惑。我可以通过GDScript获得很好的核心逻辑,但Claude无法很好地架构Godot的东西。它会对引擎的工作方式做出错误的假设。
  • Bevy——使用LLM在Bevy中工作感觉很舒适。我喜欢ECS范式,它可以打开一些有趣的创造性空间。当我们思考游戏时,它可以让我们想象出一些有趣的东西。我并不喜欢自己编写Rust代码,所以使用LLM编写它感觉很好。
  • Phaser, Three.js, Babylon.js——对于浏览器来说是可以的。我不打算将游戏发布到浏览器中。使用Babylon,我获得了很好的游戏体验,但在某个时候,它就不知道如何处理代码了。它变得很臃肿,我可能可以继续努力,但感觉很困难,而且我永远无法将游戏发布到Switch上。

我目前正在使用的方法是:

  • plain C11与Sokol(窗口/GPU/音频)和HandmadeMath。一个build.sh文件,没有CMake,没有包管理器。GitHub Actions在每次推送时都会构建一个Linux发行版,并在我的Steam Deck上使用一个小的zenity选择器来获取任何PR构建。二进制文件大小为300k,完整的构建时间小于30秒,CI到可玩的构建时间为几分钟。架构变得非常简单。早期版本使用了一个自定义的实体-组件系统和一个计划的JS脚本层,但LLM在两者中都感到迷惑。Claude没有对我的特定抽象进行训练数据,即使我完全文档了架构在CLAUDE.md中,它仍然会修复症状而不是解决根源问题,修复问题不断积累。因此,我将所有这些都砍掉了。现在是使用简单的结构和直接C编程,Claude处理得更好。

如果这个文本太长,请原谅我,我想与大家分享我的经验。之前,我在一些评论中提到我正在做的事情,被称为“重建轮子”。但是,我想解释我的经验,并且诚实地说,我现在不是寻找轮子。我正在寻找一种适合我与LLM一起工作的创造性工作流程,以及我想以什么方式工作来创造新颖而酷的东西。我很想听听大家的体验和工作流程,特别是作为开发机的Steam Deck。