前言

3月末,我去了一趟上海,参加TapTap组织的“聚光灯”24H线下Jam活动,来回花了我1千多。
image.png
我之所以大费周章地跑到上海也算是追随自己的初心:想做游戏已经快7年了,17年开始我就有过这种摇摆的想法,到了19年做完核聚变的志愿者最终确认了下来,再到21年参加了人生第一次GameJam,路不平坦,但是走的挺有滋有味,唯一遗憾的终究不是游戏开发相关专业,7年来只想办法挤出了参与寥寥几场Jam的时间,而且有几场的结果不怎么愉快。

工作后,我本以为自己会有更多时间去接触Jam,不过一年半下来糟心事不少,只是想办法做了两个可运行的原型,一个桌游规则,以及一个游戏mod——mod倒是挺受欢迎的,快1年下来累积了不少订阅量,查看/订阅比来到了50%。不过剩下的就不咋地了。
image.png
image.png

一个人,特别想成为一个什么,但始终没有成为一个什么,那么这个什么也就成了他一辈子都魂牵梦绕的什么“ 初读莫言这段话,只是觉得他境界高,能用大白话写出这么这么有深度的文字,现在回看,却感觉像在照镜子。但是我是不会让做游戏这个“什么”只是魂牵梦绕我一辈子的,所以今年我打算把工作重心放一放,学校里的事情偶尔摆一段时间也是不成问题,工作总得来说是比读书要舒服点的,至少能随时请假。因此,在3月份的周末,我坐上了12小时的火车,又一次启航追逐梦想去。

就算没这么多狗屁的过往情怀,简单算下来,包上食宿,2k块钱买个快乐的周末,外加重新点燃自己,值得,感觉生活又有了方向。

电子游戏可不会自己长出来——哪怕有了AI加成也是,这次去心动公司,我用过TapTapMaker以后,惊觉我已经离AI的第一线离了很长一段距离:现在最新的AI产品竟然已经如此成熟!游戏是真做出来了,不过回去之后我有了个新目标:在这个AI的时代,对接最新的开发工具已不是为了图新鲜就赶时髦,而是实打实的开发效率提升。因此,为了能更好地为后续的Jam活动做准备,有必要为自己准备一个Godot版本的TapTapMaker——或者说,集成化AI智能体开发环境。
image.png

架构

架构很简单:Godot——Godot MCP插件——OpenCode——大模型(我用的GLM 5),本质是只是用MCP服务器和OpenCode搭建一个Godot与大模型之间的沟通桥梁。

至于为什么不直接跳过这两者,让大模型原地生成GDScript:其实在这之前我还试过用VScode打开工程根目录后用Claude Code生成内容,它虽然能正常生成,但是没法主动打开游戏调试。

我认为,原生大模型由于不会主动确认Godot的版本号的,容易在生成时弄混4.x和3.x的部分语法格式,因此需要一个MCP通过提供类似的约束,或者至少告诉它当前是什么版本;另外如果没有MCP服务器,单纯有一个Coding Agent的前端没法做到自己打开游戏测试功能这种高端操作;并且Godot MCP还提供了更为稳定的在场景中布置节点的工具,据说是比直接写文件要稳定一些,不容易出现奇奇怪怪的bug。

安装MCP插件

由于Godot是个开源引擎,截止到现在,Asset Lib里已经有至少5个MCP插件了,有些需要npm配置,有一些还是要收费的,我这里以可以解包即用的tomyud 的 Godot AI Assistant tools MCP为例,从GitHub下载源码压缩包后,直接把内部的addon文件夹整个复制黏贴到Godot工程的目录下(其实就是最常见的Godot插件安装方式)
image.png
image.png|697
打开godot上方菜单栏项目——项目设置——插件,勾选启用
image.png
如果右上方能看到MCP:Connecting,说明插件已经安装成功了
image.png

使OpenCode识别MCP

点开设置连接自己的提供商,要注意Zhipu 和 Zhipu Coding Plan的区别,一个是直接用钱包里的,一个才是使用订阅计划的额度。
image.png
API密钥倒是可以用同一个,估计是请求地址的区别
确认OpenCode可以接入大模型之后,再开始配置MCP

OpenCode有多种方式配置MCP(见OpenCode 官方文档),为了防止OpenCode会在多开时调用错误的Godot工程项目,我采取了保守方法,直接在Godot的项目根目录下创建opencode.json,让它在打开环境时识别。
image.png
json代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{

  "$schema": "https://opencode.ai/config.json",

  "mcp": {

    "godot": {

      "type": "local",

      "command": [

        "npx.cmd",

        "-y",

        "godot-mcp-server"

      ],

      "enabled": true

    }

  }

}

另一种办法是直接在C:\Users\LEGION\.config中创建opencode.json以配置OpenCode,这种就是全局配置,如果有在上一步使用智谱一键安装助手的话,应该能直接看到这个文件。

这样就行了,我使用的是OpenCode Desktop客户端,配置完以后,只要用OpenCode重新打开应该就会识别并运行
image.png
image.png

我倒是有过另一个想法:先用TapTapMaker来做个原型出来,然后基于源码让AI移植成基于Godot引擎的版本,现在TapTapMaker是允许将源代码上传到GitHub的(只要你给它提供你的仓库令牌就行),也就是意味着源代码并没有想象的那么闭锁。

这招理论上可行。但是实际测试起来,在转Godot上遇到了困难:也许是我不熟悉Lua的UrhoX引擎,和上下文过长的缘故,导致有些东西不明不白的没法在Godot上实现,尝试修复也无果

也许需要专门炼一个skill出来,我感觉有点像以前的编码解释器