Godot-MCP:基于MCP协议实现AI智能体与游戏引擎的深度集成

发布时间:2026/7/10 6:46:04

Godot-MCP:基于MCP协议实现AI智能体与游戏引擎的深度集成 1. 项目概述当AI助手遇见Godot引擎如果你是一名Godot开发者或者对这款开源的2D/3D游戏引擎感兴趣那么最近几个月你可能已经感受到了社区里一股新的热潮。这股热潮的核心就是如何将大语言模型LLM的智能直接注入到我们的游戏开发工作流中。不再是简单地让AI生成几行代码片段而是让它能“看见”并“操作”我们正在编辑的整个Godot项目——实时地创建场景节点、修改脚本、调整材质参数甚至运行测试。这听起来像是科幻小说里的场景但Godot-MCP通常指godot-ai这个开源项目已经将它变成了触手可及的现实。简单来说Godot-MCP是一个基于模型上下文协议Model Context Protocol, MCP的桥梁。它的一端连接着你的Godot 4.5编辑器另一端连接着你喜爱的AI编程助手比如Claude Code、Cursor、Codex等。通过这个桥梁AI助手不再是一个孤立的聊天窗口而是获得了超过120种操作Godot编辑器的“工具”能力。你可以直接对它说“在根节点下创建一个名为Player的CharacterBody3D并为其添加一个碰撞形状和网格实例”几秒钟后你就能在编辑器的场景树中看到这个节点被准确地创建出来。这种“对话即开发”的体验正在重新定义我们与游戏引擎交互的方式。我最初接触这个项目时也是抱着怀疑的态度。毕竟游戏开发涉及复杂的逻辑、艺术资产和引擎特有的APIAI真的能理解吗但在深度使用了几周后我的看法彻底改变了。它并非要取代开发者而是成为一个极其强大的“副驾驶”。它能帮你快速搭建原型、执行繁琐的重复性操作比如批量重命名节点、配置UI锚点、搜索项目资源甚至基于你的描述生成相对复杂的游戏机制脚本。对于独立开发者和小团队来说这无疑是一个巨大的生产力倍增器。接下来我将带你从零开始深入Godot-MCP的实战世界。我们会拆解它的核心架构手把手完成安装与配置探索那些强大的工具能做什么并分享我在实际项目中积累的一系列高效工作流和避坑经验。无论你是想探索AI辅助开发的新边界还是单纯想提升Godot的开发效率这篇文章都将为你提供一份详尽的指南。2. 核心架构与工作原理深度解析在开始动手之前理解Godot-MCP是如何工作的至关重要。这不仅能帮助你在出现问题时进行排查也能让你更有效地利用它的能力。整个系统的架构可以看作一个精心设计的三层通信管道。2.1 MCP协议智能体与工具对话的通用语言首先我们需要理解基石——模型上下文协议MCP。你可以把它想象成AI世界里的“USB协议”。在MCP出现之前每个AI助手Claude、GPT等想要连接外部工具如文件系统、数据库、编辑器都需要定制化的插件或API造成了巨大的碎片化。MCP由Anthropic提出并开源旨在定义一个标准化的协议让任何兼容MCP的AI客户端Client都能发现、调用任何兼容MCP的服务端Server提供的工具Tools和资源Resources。在Godot-MCP的语境下MCP客户端就是你日常使用的AI编程助手如Claude Desktop App、Cursor的内置AI、VS Code with Continue等。它们内置了MCP客户端功能知道如何按照协议发送请求和解析响应。MCP服务端就是godot-ai项目提供的核心。它是一个独立的Python服务器基于FastMCP框架扮演着“翻译官”和“调度员”的角色。工具是服务端暴露的一个个具体能力例如create_scene_node、edit_script、run_current_scene。每个工具都有明确的名称、描述、参数格式JSON Schema。当AI客户端收到用户的指令如“创建一个按钮”它会分析指令从已注册的工具列表中匹配合适的工具并按照格式生成调用请求。这种设计的精妙之处在于解耦。Godot编辑器本身不需要为每个AI客户端开发插件AI客户端也无需为Godot做特殊适配。只要双方都遵循MCP协议就能无缝对接。godot-ai项目做的就是为Godot引擎实现了一个功能丰富的MCP服务端。2.2 数据流从指令到编辑器响应的全过程让我们追踪一个典型指令“在场景根节点下添加一个Sprite2D节点”的完整旅程指令输入你在AI客户端的聊天框中输入上述自然语言指令。意图识别与工具选择AI客户端如Claude Code理解你的意图是“创建节点”。它会查询已配置的MCP服务器即godot-ai提供了哪些工具。发现有一个名为nodes_create的工具其描述是“在指定父节点路径下创建节点”。参数构造AI客户端根据工具定义的JSON Schema将你的自然语言转化为结构化参数。例如{“parent_path”: “/root”, “node_type”: “Sprite2D”, “name”: “Sprite2D”}。这个过程体现了AI的“思考”能力它需要理解“场景根节点”对应Godot的/root路径。HTTP请求AI客户端通过HTTP POST请求将工具调用和参数发送到godot-ai服务器默认地址http://127.0.0.1:8000。Python服务器处理godot-ai的Python服务端FastMCP收到请求解析参数并准备执行对应的操作。但关键来了Python服务器本身并不能直接操作Godot编辑器。WebSocket桥接Python服务器通过一个持久的WebSocket连接与Godot编辑器内的插件进行通信。这个连接在插件启动时建立。服务器将“创建Sprite2D节点”这个动作指令通过WebSocket发送给Godot插件。Godot插件执行插件收到指令后利用Godot Editor的EditorInterface和SceneTree等API在编辑器中执行实际的操作var new_sprite Sprite2D.new(); get_tree().edited_scene_root.add_child(new_sprite); new_sprite.owner get_tree().edited_scene_root。结果返回操作执行成功或失败Godot插件将结果如新节点的路径/root/Sprite2D通过WebSocket返回给Python服务器。HTTP响应Python服务器将结果封装成MCP标准格式通过HTTP响应返回给AI客户端。结果呈现AI客户端收到响应将其转化为自然语言反馈给你“已在根节点下创建了一个名为‘Sprite2D’的Sprite2D节点”。同时你的Godot编辑器界面已经实时更新看到了新节点。这个过程通常在几秒内完成实现了从自然语言到编辑器图形化操作的无缝转换。其中WebSocket连接是低延迟、全双工通信的关键确保了操作的实时性。2.3 安全与边界设计一个直接的问题是让AI直接操作我的编辑器安全吗godot-ai在设计上考虑了多个安全层面本地环路默认MCP服务器默认绑定在127.0.0.1本地回环地址外部网络无法访问。操作范围限制所有操作都通过Godot Editor API进行与手动操作在权限上没有区别。AI无法访问编辑器沙箱之外的文件系统除非通过特定的文件工具。远程访问可控如果你需要让同一局域网内的另一台机器比如专门运行AI的服务器访问可以启动服务器时使用--allow-host 192.168.1.0/24参数来指定可信的IP段。此时服务器会严格校验请求来源IP。无代码执行逃逸AI生成的脚本是通过Godot的GDScript或C#脚本编辑器接口注入的其执行仍然受Godot运行时沙箱的限制。理解这个架构后你就会明白Godot-MCP不是一个“黑箱魔法”而是一个构建在开放协议和标准API之上的、设计精巧的增效工具。它放大了AI在理解上下文和生成结构化指令方面的优势并将其精准地映射到Godot引擎的具体操作上。3. 从零开始环境搭建与插件配置实战理论清晰了现在让我们进入实战环节。我将以在Windows 11系统上使用Godot 4.7稳定版和Claude Desktop客户端为例展示完整的配置流程。其他操作系统和客户端的步骤大同小异。3.1 基础环境准备首先确保你的系统满足以下条件Godot 4.5 或更高版本强烈推荐4.7以获得最佳兼容性和性能。从Godot官网下载并安装。Python 环境管理工具 uv这是godot-ai推荐的依赖管理工具比传统的pip更快速、更可靠。它用于启动和管理后端的Python MCP服务器。安装uv 打开终端PowerShell、CMD或系统自带的终端。Windows (PowerShell)推荐使用以下命令它更安全避免了直接执行远程脚本# 先下载安装脚本检查后再执行 Invoke-WebRequest -Uri https://astral.sh/uv/install.ps1 -OutFile install_uv.ps1 # 查看一下脚本内容可选 Get-Content install_uv.ps1 # 执行安装 .\install_uv.ps1安装完成后重启你的终端运行uv --version验证是否成功。macOS / Linuxcurl -LsSf https://astral.sh/uv/install.sh | sh同样安装后重启终端用uv --version验证。通过包管理器更推荐macOS (Homebrew):brew install uvUbuntu/Debian:sudo apt install uvArch:sudo pacman -S uv注意如果你遇到网络问题uv的安装脚本可能下载缓慢。可以考虑使用包管理器或者设置科学的上网环境。再次强调本文及项目本身绝不涉及任何违规的网络访问工具或方法请通过正规网络渠道解决问题。3.2 安装Godot AI插件你有三种主要方式安装插件我推荐第一种以获得最新特性。方法一从GitHub源码安装推荐打开终端导航到你希望存放克隆仓库的目录。执行克隆命令git clone https://github.com/hi-godot/godot-ai.git打开你的Godot项目文件夹。如果你还没有项目先创建一个新项目。在你的Godot项目根目录下找到或创建addons/文件夹。将克隆得到的godot-ai/plugin/addons/godot_ai整个文件夹复制到你的项目addons/目录下。 最终路径应类似于你的项目/addons/godot_ai/。方法二通过Godot资源库安装最简单但可能非最新打开Godot编辑器在右侧面板中找到“AssetLib”资源库选项卡。在搜索框中输入 “Godot AI”。找到插件后点击“Download”下载完成后点击“Install”。安装时确保安装路径是res://addons/。这种方法非常便捷但Godot资源库的更新可能有延迟无法第一时间获得最新功能和修复。方法三下载Release压缩包前往项目的 GitHub Releases页面 。下载最新版本的Source code (zip)。解压后找到plugin/addons/godot_ai文件夹将其复制到你的项目addons/目录下。3.3 在Godot中启用插件并连接AI客户端安装好插件文件后需要在Godot编辑器中启用它。启用插件打开你的Godot项目。点击顶部菜单栏的“项目” - “项目设置”。在左侧列表中找到“插件”选项卡。你应该能在列表中找到“Godot AI”。点击其右侧的“状态”列选择“启用”。如果一切顺利你会在Godot编辑器底部或侧边取决于你的布局看到一个名为“Godot AI”的新停靠面板。理解Godot AI面板 打开Godot AI面板你会看到一个清晰的界面。顶部显示了MCP服务器的状态应为“Running”以及HTTP和WebSocket的地址与端口。下方是一个客户端列表显示了众多支持的AI客户端如Claude Code, Cursor, Codex等及其配置状态。绿色圆点表示该客户端已正确配置并连接。黄色圆点/横幅表示配置存在“漂移”例如旧版本配置缺少新的环境变量建议重新配置。灰色圆点表示未配置。一键配置AI客户端以Claude Desktop为例确保你的Claude Desktop应用已经关闭。在Godot AI面板的客户端列表中找到“Claude Desktop”。点击其右侧的“Configure”按钮。插件会自动向Claude Desktop的配置文件通常位于~/.config/Claude/claude_desktop_config.json写入正确的MCP服务器配置。这个过程包含了解决Windows下文件锁问题的关键环境变量UV_LINK_MODEcopy。配置完成后重新启动Claude Desktop应用。验证连接启动Claude Desktop。在Godot AI面板中“Claude Desktop”旁边的状态点应该很快变为绿色。在Claude Desktop中新建一个对话你应该能在输入框上方或侧边栏看到已连接的MCP工具提示。尝试输入一个简单指令如“列出当前场景的所有节点”。如果AI能正确回应并列出节点说明连接成功实操心得第一次配置时最容易出问题的是uv环境或客户端配置文件权限。如果点击“Configure”后状态未变绿可以尝试手动配置。在Godot AI面板中点击对应客户端的“展开”箭头会显示“Run this manually”面板里面提供了可复制的命令行或配置文件片段手动粘贴到对应位置即可。4. 核心功能与MCP工具集实战探索连接成功后才是乐趣的开始。Godot-MCP通过约41个工具组暴露了超过120个具体操作。我们不可能逐一讲解但可以按领域分类通过典型场景来感受其强大之处。4.1 场景与节点管理从蓝图到实体的快速构建这是最常用也是最直观的功能。AI可以直接操作场景树。典型指令与效果“在当前场景的根节点下创建一个名为‘Player’的CharacterBody3D节点。”AI行动调用nodes_create工具创建节点并可能自动为其添加一个CollisionShape3D子节点作为占位符。“将选中的Sprite2D节点重命名为‘Hero’。”AI行动调用nodes_rename工具。你需要先手动在Godot编辑器中选择节点。‘在‘Player’节点下添加一个MeshInstance3D子节点并为其加载res://assets/player.glb模型。’AI行动调用nodes_create创建MeshInstance3D然后调用resource_set或属性设置工具将其mesh属性设置为指定的资源路径。“删除‘EnemySpawner’节点及其所有子节点。”AI行动调用nodes_remove工具。谨慎操作AI执行删除不会经过Godot的二次确认。高级场景构造示例 你可以描述一个复杂的UI场景“创建一个名为‘HUD’的Control节点作为根节点的子节点。在HUD下顶部创建一个MarginContainer里面放一个Label显示‘Score: 0’。底部创建一个HBoxContainer里面放三个TextureButton图标暂用默认图标。” AI会逐步调用工具创建出完整的节点树并设置好锚点、边距等基础布局属性。这比手动拖拽和设置要快得多尤其适合原型设计阶段。4.2 脚本编写与编辑从意图到可运行代码让AI编写Godot脚本并不新鲜但结合上下文后能力发生了质变。带上下文的脚本创作指令“为刚才创建的‘Player’节点附加一个脚本实现使用WASD键控制移动速度是5。”AI行动首先它可能通过files_search工具确认Player节点的存在和路径。然后调用script_create工具在Player节点上创建一个新的GDScript文件如player.gd。接着调用script_edit工具向该脚本中插入代码。生成的代码会非常精准extends CharacterBody3D export var speed: float 5.0 func _physics_process(delta): var input_dir Input.get_vector(“move_left”, “move_right”, “move_forward”, “move_back”) var direction (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() if direction: velocity.x direction.x * speed velocity.z direction.z * speed else: velocity.x move_toward(velocity.x, 0, speed) velocity.z move_toward(velocity.z, 0, speed) move_and_slide()代码不仅符合Godot 4的语法还直接使用了该CharacterBody3D节点的上下文。现有脚本的智能修改指令“在player.gd的_physics_process函数开头添加一个调试打印输出当前速度。”AI行动调用script_edit定位到函数插入print(“Current velocity: ”, velocity)。它理解代码结构能进行精准的插入、替换或删除。信号连接指令“将‘StartButton’节点的‘pressed’信号连接到‘GameManager’节点的‘on_game_start’方法。”AI行动调用signals_connect工具。这避免了在编辑器里手动寻找和拖拽信号线的繁琐。4.3 资源与项目管理你的智能项目助理AI可以帮你管理项目中的各种资源进行搜索和基础操作。资源搜索“帮我找一下项目中所有扩展名为‘.tres’的资源文件。” AI使用files_search工具快速返回文件路径列表。场景操作“运行当前打开的场景。” AI调用scene_run工具效果等同于按下F5。项目构建“构建一个Windows平台的导出模板。” AI可以调用project_build相关工具如果项目配置了导出预设自动化构建流程。依赖检查“检查当前项目的GDScript是否有语法错误。” AI调用script_check工具返回错误和警告信息。4.4 材质、着色器与视觉调整对于美术和效果调试AI也能提供帮助。指令“给‘Water’网格实例的材质增加一些波纹效果。”AI行动它可能会先获取当前材质的属性然后建议或直接创建一个简单的着色器代码片段通过shader_create或material_edit工具应用到材质上修改shader参数或添加一个NoiseTexture来模拟波纹。4.5 测试与调试辅助运行测试“运行‘test_player_movement.gd’这个测试脚本。” AI调用test_run工具。查看日志“显示最近10条控制台输出。” AI调用log_read工具。性能快照“获取当前场景的性能监视器数据。” AI可以调用performance_get工具将数据以表格形式返回给你分析。通过组合这些工具你可以构建出高度自动化的工作流。例如你可以要求AI“基于‘Enemy’场景在当前位置随机生成5个敌人实例并为它们每个都附加一个朝玩家移动的简单AI脚本。” AI会依次完成场景实例化、节点添加、脚本创建和编辑等一系列操作。5. 高效工作流与进阶使用技巧掌握了基础操作后如何将Godot-MCP融入你的日常开发实现效率最大化以下是我在实践中总结的一些模式和技巧。5.1 迭代式原型开发快速验证游戏想法当你有一个新的游戏机制想法时传统的做法是创建节点、写脚本、调试、修改……循环往复。现在你可以与AI进行“对话式迭代”。搭建基础框架“创建一个2D平台游戏场景包含一个可移动的‘Player’角色使用CharacterBody2D一个‘Ground’静态物体以及一个‘Camera2D’跟随玩家。”添加机制“让玩家可以跳跃。按下空格键时给一个向上的速度。”细化手感“跳跃感觉有点飘增加一个重力加速度并设置一个最大下落速度。”丰富内容“在场景中随机位置生成10个‘Coin’Area2D。当玩家碰到Coin时Coin消失并在屏幕左上角的‘ScoreLabel’上分数加1。”调试与优化“玩家有时会卡在墙角。给Player的CollisionShape2D增加一个微小的‘skin’偏移试试看。”整个过程中你只需要用自然语言描述你想要的效果AI负责实现具体的引擎操作。你的思维可以更集中在游戏设计本身而不是引擎API的细节上。5.2 批量处理与重构告别重复劳动游戏开发中充满了重复性工作AI处理这些任务得心应手。批量重命名“将场景中所有‘Enemy_’开头的节点后缀改为‘_V2’。”批量修改属性“选中所有‘Tree’网格实例将它们的材质albedo颜色调暗一些。”代码重构“将项目中所有使用get_node(“../Player”)这种硬编码路径的地方改为使用onready var player $”../Player”的形式。” AI可以通过搜索和替换工具安全地进行批量修改。5.3 结合自定义工具与脚本Godot-MCP的潜力不仅限于它自带的工具。你可以通过编写自定义的Godot插件或脚本将其功能进一步扩展然后通过MCP暴露给AI。例如你为你的游戏写了一个专门用于生成特定类型地牢的编辑器插件。你可以按照MCP的规范为你插件的核心功能如generate_dungeon(seed, size)创建一个MCP工具包装器。这样你就可以直接对AI说“用种子12345生成一个大小为10x10的地牢。” AI会调用你的自定义工具瞬间完成复杂的地牢生成。社区已经在探索将Tiled地图导入、Aseprite动画同步等第三方工具集成到MCP工作流中。这打开了无限的自动化可能性。5.4 提示词工程让AI更懂你虽然AI已经足够智能但清晰的指令能获得更准确的结果。以下是一些提示词技巧明确上下文在开始一系列相关操作前先告诉AI当前焦点。例如“我们现在正在编辑res://levels/level_01.tscn这个场景。”指定节点路径尽量使用完整或相对路径。不要说“那个按钮”而说“HUD/MarginContainer/StartButton这个按钮”。分步复杂任务对于非常复杂的任务拆分成多个指令。先让AI创建节点结构再让它添加脚本最后配置属性。这比一个超长的指令更容易成功。利用AI的反馈如果AI执行的结果不是你想要的不要直接给新指令。可以先问“你刚才做了什么”或者“为什么选择这样实现”理解AI的“思考过程”后再给出更精确的修正指令比如“不我的意思是希望它用Tween来实现淡入效果而不是直接修改modulate.a。”6. 常见问题、故障排查与避坑指南即使是最优秀的工具在实际使用中也会遇到各种问题。下面是我和社区成员遇到过的一些典型问题及其解决方案。6.1 连接与配置问题问题1Godot AI面板显示服务器未运行状态非“Running”可能原因uv未正确安装或Python依赖安装失败。排查步骤在终端输入uv --version确认uv可用。查看Godot编辑器底部的“输出”面板通常会有插件启动的日志。寻找红色错误信息。尝试手动启动服务器。在项目目录下打开终端运行uv run godot-ai。观察报错信息。常见错误是网络问题导致Python包下载失败。解决方案确保网络通畅或为uv配置镜像源。可以尝试手动安装核心依赖uv pip install fastmcp。问题2AI客户端状态始终为灰色未连接可能原因客户端配置文件未正确写入或客户端未重启。排查步骤确认在Godot AI面板点击“Configure”后没有错误提示。检查对应客户端的配置文件是否存在且内容正确。例如对于Claude Desktop检查~/.config/Claude/claude_desktop_config.json其中应包含godot-ai的MCP服务器配置块。最关键的一步完全关闭并重新启动AI客户端应用。许多客户端只在启动时读取一次配置。解决方案手动复制Godot AI面板中“Run this manually”下的配置片段到你的客户端配置文件中然后彻底重启客户端。问题3Windows系统下出现“pywin32安装失败”或文件锁错误这是Windows上的一个经典问题。原因在于uv的硬链接机制与Windows DLL/PDB文件锁冲突。解决方案Godot AI插件的新版本v2.8已经在自动配置时为uvx类客户端如Claude Desktop添加了“env”: { “UV_LINK_MODE”: “copy” }环境变量强制复制而非硬链接。如果你遇到此问题在Godot AI面板中找到对应的客户端如Claude Desktop点击其右侧的“Configure”按钮。这会用新的配置包含环境变量重写客户端的配置文件。关闭并重新启动该AI客户端。如果问题依旧可能需要手动清理uv的缓存目录删除%LOCALAPPDATA%\uv\cache\builds-v0\.tmp*下的所有临时文件夹请先关闭所有可能使用uv的进程。6.2 操作执行问题问题4AI执行了操作但Godot编辑器里没变化可能原因操作的对象路径不对操作在后台运行但未刷新编辑器界面操作的是非当前编辑场景。排查步骤让AI“列出当前场景的根节点”确认它看到的场景是否是你正在编辑的。检查Godot编辑器的“输出”面板看是否有GDScript错误。AI插入的脚本如果有语法错误节点可能不会按预期工作。尝试手动在编辑器里做一个小改动如移动一个节点然后保存场景。有时可以触发界面刷新。解决方案确保指令中的节点路径绝对准确。对于脚本问题让AI“检查xxx.gd脚本的语法错误”。问题5AI不理解我的指令或执行了错误操作可能原因指令模糊AI选择了错误的工具当前上下文信息不足。解决方案更精确的描述使用Godot特有的术语。例如说“创建一个ColorRect节点”而不是“创建一个彩色矩形”。提供上下文先让AI“描述当前场景”让它了解现状。分步指导对于复杂操作拆分成“创建节点”、“设置属性”、“添加脚本”等多个简单指令。纠正与反馈直接告诉AI“不对撤销上一步”或“我的意思是……”。好的AI客户端如Claude能从对话历史中学习你的意图。6.3 性能与稳定性问题6操作响应变慢或Godot编辑器卡顿可能原因频繁进行大量节点操作如生成上百个实例可能阻塞主线程WebSocket连接不稳定。解决方案对于批量生成可以考虑让AI编写一个生成脚本在游戏运行时动态实例化而不是在编辑器中直接创建大量节点。定期保存项目。虽然AI操作一般很安全但任何编辑器插件都有极小概率导致不稳定。如果卡顿严重尝试在Godot AI面板点击“Restart Server”重启MCP服务器。问题7插件更新后出现兼容性问题解决方案关注项目的GitHub Issues页面看是否有其他人遇到相同问题。尝试清理插件缓存禁用Godot AI插件关闭Godot删除项目中的.godot/目录注意这会清空编辑器视图设置等缓存然后重新启用插件。回退到之前稳定的插件版本。6.4 安全与隐私考量远程访问除非你明确知道在做什么否则不要使用--allow-host参数将服务器暴露给局域网。如果确实需要请将其限制在可信的IP段并考虑使用SSH隧道进行端口转发这是更安全的做法。项目安全该插件不会将你的项目代码或资源发送到远程服务器。所有AI处理都在本地或你配置的AI服务端如Claude、GPT的API进行。MCP服务器只传递操作指令和结果。操作不可逆像“删除节点”这类操作AI会直接执行不会经过Godot的回收站。对于重要场景操作前请手动保存CtrlS。最后保持耐心和探索精神。Godot-MCP是一个正在快速发展的工具它将AI的创造力与Godot引擎的强大能力结合创造了一种全新的开发范式。它可能不会一次性完美地生成整个游戏但它绝对能成为你开发过程中最得力的助手帮你把想法更快、更轻松地变成可交互的现实。从今天开始尝试用对话的方式来构建你的下一个Godot项目吧你会发现游戏开发从未如此有趣和高效。

相关新闻