ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

基于MCP协议实现AI助手与Godot引擎深度集成,打造自动化游戏开发工作流

基于MCP协议实现AI助手与Godot引擎深度集成,打造自动化游戏开发工作流 1. 项目概述当AI助手遇见游戏引擎最近在游戏开发圈子里一个话题的热度正在悄然攀升如何让AI助手真正“理解”并“操作”我们的游戏引擎而不仅仅是作为一个聊天机器人。我尝试了市面上各种方案从简单的代码片段生成到复杂的脚本解释总觉得隔靴搔痒。直到我开始捣鼓一个基于MCPModel Context Protocol服务器的方案将AI助手与Godot引擎进行深度集成才算是摸到了自动化游戏开发的门槛。这不仅仅是让AI写几行GDScript代码而是构建一个能让AI助手像资深开发者一样直接读取项目结构、实时预览场景、调试脚本甚至打包构建的“数字副驾驶”。这个方案的核心是解决一个根本性的效率瓶颈。传统的游戏开发中开发者需要频繁在引擎编辑器、代码编辑器、资源管理器、文档和调试器之间切换。一个简单的功能调整可能涉及打开场景树、定位节点、修改属性、编写脚本、运行测试、查看日志等多个步骤。而一个集成了MCP服务器的AI助手可以将这些离散的操作封装成一个个可被自然语言调用的“工具”。你可以直接告诉助手“在Main场景的Player节点下添加一个Sprite2D子节点并为其加载res://assets/hero.png纹理”助手便能理解你的意图通过MCP协议调用对应的Godot编辑器API或引擎命令自动完成这一系列操作。那么这个方案适合谁呢如果你是一名独立开发者或小型团队的成员正苦于重复性的引擎操作消耗了大量创意时间如果你希望将AI融入开发工作流但厌倦了复制粘贴AI生成的代码片段或者你单纯对游戏引擎与AI的深度结合感兴趣想探索下一代开发工具的可能性那么这个基于Godot的MCP服务器方案就是你接下来需要深入了解的内容。它本质上是一套桥梁协议和工具集的实现让通用的AI助手如Claude Desktop、Cursor等支持MCP的客户端能够安全、可控地与你的Godot编辑器及运行时环境进行双向交互。2. 核心架构与MCP协议解析2.1 为什么是MCP协议的优势与选择在决定采用MCPModel Context Protocol之前我评估过几种常见的AI集成方案。最简单的是让AI直接生成代码但这需要开发者手动复制、粘贴、调整上下文效率低下且容易出错。另一种是开发专用的IDE插件比如为VSCode的Copilot编写Godot扩展但这将能力绑定在特定编辑器上不够灵活。而MCP协议的出现提供了一种标准化的、与客户端无关的解决方案。MCP的核心思想是工具调用Tool Calling和资源提供Resource Providing。AI助手客户端通过标准化的JSON-RPC接口向MCP服务器查询可用的工具列表然后根据用户指令调用相应的工具。服务器则负责执行具体的操作比如读写文件、调用系统命令、查询数据库或者像我们这个项目一样与Godot编辑器通信。这种架构的优势非常明显解耦与标准化。任何支持MCP协议的AI客户端无论是桌面应用还是Web服务都可以连接到我们的Godot MCP服务器无需为每个客户端单独开发适配。同时服务器端可以专注于实现强大、稳定的引擎操作能力而无需关心客户端的UI或交互逻辑。从技术实现角度看MCP服务器通常是一个长期运行的后台进程通过标准输入输出stdio或HTTP与客户端通信。它需要维护一个工具清单每个工具都有明确的名称、描述、参数schema遵循JSON Schema标准。当客户端发送一个tools/call请求时服务器解析参数执行对应操作如调用Godot的编辑器脚本API然后将结果以结构化数据文本、图片、代码块等返回给客户端。对于Godot集成而言这意味着我们需要在服务器内部实现一个Godot编辑器的“遥控器”。2.2 Godot编辑器自动化接口深度挖掘要让MCP服务器控制Godot我们必须找到与引擎交互的入口。Godot本身提供了强大的自动化支持主要通过两条路径编辑器脚本EditorScript和Godot服务器Godot Server。编辑器脚本是Godot内置的自动化利器。你可以在编辑器中编写继承自EditorScript的GDScript或C#脚本这些脚本运行在编辑器环境下拥有几乎完整的编辑器API访问权限。你可以通过get_editor_interface()获取到EditorInterface单例这是所有操作的起点。通过它你可以获取当前编辑的场景get_edited_scene_root()。操作场景树添加/删除节点、修改节点属性、建立节点连接。操作文件系统导入资源、创建脚本、保存场景。运行游戏、停止游戏、切换运行模式。甚至修改编辑器布局和设置。一个典型的MCP服务器工具例如“创建Sprite2D节点”在底层可能就是执行了一段这样的GDScript编辑器脚本# 这是一个简化的示例实际MCP服务器会动态生成并执行此类脚本 extends EditorScript func _run(): var editor get_editor_interface() var scene_root editor.get_edited_scene_root() if scene_root: var new_sprite Sprite2D.new() new_sprite.name “MySprite” scene_root.add_child(new_sprite) new_sprite.owner scene_root editor.get_selection().clear() editor.get_selection().add_node(new_sprite) # 通知编辑器场景已修改 editor.get_resource_filesystem().scan()Godot服务器则是另一条路尤其适合需要与引擎运行时而非编辑器交互的场景。Godot引擎可以以--headless无头模式运行并作为一个本地服务器监听特定端口。外部程序如我们的MCP服务器可以通过TCP或HTTP向这个Godot服务器实例发送命令例如触发某个游戏内函数、查询游戏状态等。这对于自动化测试、批量数据处理或构建AI训练环境特别有用。在我们的MCP服务器方案中我主要采用“编辑器脚本”路径。因为大多数开发阶段的自动化需求场景搭建、资源分配、属性配置都发生在编辑时。服务器会维护一个Godot编辑器进程的连接或者通过进程间通信触发编辑器执行脚本将AI助手的自然语言指令翻译成一系列编辑器脚本的调用。注意直接执行任意编辑器脚本存在安全风险。我们的MCP服务器必须实现严格的沙箱机制对可执行的命令、可访问的文件路径进行白名单限制防止恶意指令破坏项目。例如禁止执行文件删除、系统命令调用等危险操作。2.3 系统架构设计与数据流理解了MCP和Godot的自动化基础后我们来勾勒整个系统的架构。这个Godot MCP服务器不是一个单一模块而是一个由多个协同工作的组件构成的系统。核心组件包括MCP协议适配层负责与AI客户端通信解析JSON-RPC请求封装响应。它维护着“工具清单”这个清单是AI助手了解服务器能力的“菜单”。指令翻译与调度器这是系统的“大脑”。它接收来自MCP层的具体工具调用请求例如{“tool”: “create_node”, “arguments”: {“type”: “Sprite2D”, “parent_path”: “/root/Main/Player”}}并将其翻译成具体的Godot操作指令序列。它需要理解Godot的节点类型、资源路径、属性系统等概念。Godot通信桥接器这是系统的“手”。它负责与Godot编辑器进程进行实际通信。实现方式有多种子进程调用MCP服务器启动一个Godot编辑器实例以--script参数运行一个临时生成的编辑器脚本。简单但每次调用都有启动开销。进程间通信IPCGodot编辑器启动时加载一个常驻插件该插件打开一个本地Socket服务器。MCP服务器通过Socket发送指令插件接收并执行。这种方式响应更快能保持编辑器状态。HTTP API通过Godot的WebSocket或HTTP服务器模块在编辑器中暴露一个轻量级API。MCP服务器通过HTTP请求调用。灵活性高便于跨网络虽然本地开发通常不需要。我推荐使用IPCSocket方式它在性能和易用性之间取得了很好的平衡。Godot插件可以稳定运行随时待命。上下文管理器为了让AI助手给出更准确的建议服务器需要向它提供项目上下文。这个组件负责收集信息例如当前打开的场景结构、项目文件列表、关键脚本的摘要、最近的控制台输出等并通过MCP的resources接口提供给AI客户端。这样AI在回答时就知道你项目里有个叫Player的CharacterBody2D节点它的脚本里有一个jump方法。完整的数据流如下用户在AI客户端如Claude Desktop中输入“给主角添加一个血条UI。”AI客户端将用户消息和当前上下文包含MCP服务器提供的项目资源信息发送给大语言模型LLM。LLM分析后认为需要调用MCP服务器的create_ui_element工具并生成调用参数{“element_type”: “ProgressBar”, “parent_path”: “/root/Main/HUD”, “name”: “HealthBar”, “settings”: {“min_value”: 0, “max_value”: 100, “value”: 100}}。AI客户端通过stdio向MCP服务器发送tools/call请求。MCP服务器的协议层接收请求交给调度器。调度器将“创建ProgressBar”的请求翻译成具体的Godot编辑器脚本命令。通信桥接器通过Socket将脚本命令发送给Godot编辑器内常驻的插件。Godot插件执行脚本在指定路径创建ProgressBar节点并设置其属性。插件将执行结果成功或失败信息、新节点的引用路径通过Socket返回给桥接器。桥接器将结果返回给调度器和协议层。MCP服务器将结构化的结果例如{“success”: true, “node_path”: “/root/Main/HUD/HealthBar”}通过JSON-RPC响应返回给AI客户端。AI客户端将结果呈现给用户“已在HUD下创建了名为HealthBar的血条进度条初始值为100。”这个流程实现了从自然语言到引擎操作的闭环将开发者从繁琐的点击和拖拽中解放出来。3. 核心工具集实现与实操要点3.1 场景与节点操作工具的实现细节这是最常用的一组工具目标是让AI能够像开发者一样“摆弄”场景树。实现这些工具的关键在于将模糊的自然语言描述精确映射到Godot的API调用。1. 节点创建工具 (create_node)参数设计node_type如Sprite2D,Button,Area2D、parent_path父节点路径如/root/Main、name可选节点名称、properties可选初始属性字典。实现逻辑服务器收到请求后生成一个编辑器脚本。该脚本首先通过get_node(parent_path)或从根场景递归查找目标父节点。然后使用ClassDB.instantiate(node_type)创建节点实例这是Godot 4.x的方式3.x是load(“res://”).instance()。设置名称和属性后调用add_child()并设置owner。这里有个坑如果父节点路径不存在需要决定是报错还是自动创建父节点链。我建议报错并让AI助手先创建父节点这样逻辑更清晰。实操心得对于复杂节点如AnimationPlayerproperties参数可以非常复杂。我们可以支持一种“智能默认值”机制。例如如果创建Camera2D自动将其current属性设为true创建Timer自动将其autostart设为false。这需要工具实现时内置一些领域知识。2. 节点查询与选择工具 (list_nodes,select_node)list_nodes返回当前场景树的简化结构。这对于提供上下文至关重要。实现时不要返回整个庞大的场景树而是返回一个摘要比如只包含节点名称、类型和路径的前两层或三层。可以通过MCP的resources功能以只读资源的形式提供。select_node通过路径选择节点。这涉及到调用editor.get_selection().clear()和editor.get_selection().add_node(node)。实现后AI助手可以帮用户快速定位并选中深藏在场景树中的某个节点后续的操作如修改属性就会作用于该选中节点。注意事项Godot编辑器的选择是单例的一次只能有一个“选中”上下文。如果通过MCP工具修改了选择可能会和用户手动点击产生冲突。一个好的实践是在执行任何修改节点的工具后自动将选中项设置为新创建或修改的节点并给出明确提示。3. 属性批量编辑工具 (set_properties)参数设计node_path目标节点路径、properties要设置的属性字典。实现逻辑遍历properties字典对每个键值对调用node.set(key, value)。这里最大的挑战是类型转换。AI助手传来的值通常是字符串如“100”,“Vector2(10, 20)”,“true”但Godot属性有严格的类型int, float, Vector2, bool等。我们需要一个类型转换器。类型转换器实现示例# 在MCP服务器Python实现示例中进行预处理 def parse_godot_value(value_str, hint_type): if hint_type “bool”: return value_str.lower() in (“true”, “1”, “yes”) elif hint_type “int”: return int(value_str) elif hint_type “float”: return float(value_str) elif hint_type.startswith(“Vector2”): # 匹配类似 “Vector2(100, 200)” 的字符串 import re match re.match(r”Vector2\(([^,]),\s*([^)])\)”, value_str) if match: return f”Vector2({float(match.group(1))}, {float(match.group(2))})” # 或者返回一个数组由Godot脚本侧解析 # … 其他类型处理 else: # 默认当作字符串或资源路径处理 if value_str.startswith(“res://”): return f’load(“{value_str}”)’ # 返回一个可被GDScript执行的加载语句 return value_str然后在生成的编辑器脚本中使用property_get()和property_set()或者直接对属性赋值。对于资源类型如纹理、声音需要将字符串路径“res://icon.png”转换为实际的Resource对象通常用load()或preload()。3.2 资源管理与脚本生成工具游戏开发离不开资源。让AI助手理解项目资源结构并能进行基本操作能极大提升效率。1. 项目资源浏览器 (list_resources)这个工具不直接修改项目而是作为一个resource提供器。它扫描res://目录下的特定类型文件.png,.tscn,.tres,.gd等生成一个结构化的列表包含文件名、路径、类型和关键元数据如图片尺寸、脚本类名。AI客户端在对话中就能引用这些资源例如“使用res://assets/characters/hero.png这个纹理”。实现技巧定期扫描整个项目目录开销很大。可以采用文件系统监听如Python的watchdog库或在Godot插件端使用ResourceFilesystem的信号只在资源变化时更新缓存。首次提供时可以只返回一个顶级目录的概览当AI助手需要查看具体目录时再深入扫描。2. 脚本创建与编辑 (create_script,edit_script)create_script根据模板创建新的GDScript或C#脚本。参数包括path保存路径、class_name可选、extends继承的类、template可选如空脚本、节点脚本。服务器需要内置几个常用的脚本模板。edit_script这是更具挑战性的功能。它不仅仅是插入代码片段而是要理解脚本的现有结构变量、方法。一种相对安全且实用的方法是实现“代码块插入”。例如AI助手可以请求“在Player.gd的_physics_process函数末尾添加受伤扣血逻辑”。服务器需要读取目标脚本文件。进行简单的语法分析不需要完整的编译器可以用正则表达式或简单解析器找到函数体的起止位置。在指定位置插入AI生成的代码块。写回文件。重要警告自动编辑现有脚本风险极高容易引入语法错误或破坏逻辑。务必在操作前备份原文件并且最好提供一个“预览”模式将修改后的内容先返回给用户确认再执行写入。对于复杂修改更安全的做法是让AI生成完整的代码块由开发者手动复制粘贴到合适位置。3. 场景文件操作 (load_scene,save_scene)这些工具相对直接调用editor.open_scene_from_path(path)和editor.save_scene()即可。但它们非常有用可以让AI助手帮你快速在不同场景间切换或者保存当前工作。3.3 运行、调试与构建集成开发流程的闭环离不开测试和发布。将这些功能集成进来能让AI助手真正参与从开发到验证的全过程。1. 运行与停止游戏 (play_project,stop_play)调用editor.play_current_scene()或editor.play_custom_scene()。这里的关键是捕获运行状态和输出。MCP服务器可以连接到Godot编辑器的运行实例捕获其标准输出和错误流Console并将这些实时日志作为resources流式传输给AI客户端。这样当游戏运行时出现错误AI助手能立即看到报错信息并据此提供修复建议。实现方式Godot编辑器启动游戏子进程时MCP服务器的Godot插件可以重定向子进程的输出到某个管道或Socket再由MCP服务器转发。2. 一键构建与导出 (build_project)这是自动化开发的终极目标之一。Godot可以通过命令行进行导出godot --headless --export-release “Android” [path_to_export_preset]。MCP服务器可以暴露一个build工具参数包括preset_name导出预设名、target平台如Windows Desktop,Android。服务器在后台调用Godot命令行并监控构建过程的输出。踩坑记录导出过程可能很长且需要处理各种依赖如Android SDK/NDK。MCP服务器需要异步执行构建命令必须在后台线程执行不能阻塞MCP主线程。状态反馈实时将构建日志编译进度、警告、错误推送给AI客户端。错误处理清晰识别构建失败的原因如证书错误、资源缺失并将友好的错误信息返回而不是一串晦涩的控制台输出。安全边界构建工具权限很高。必须在服务器配置中明确允许哪些导出预设可以被调用防止误操作覆盖了生产版本。4. 安全、性能与最佳实践4.1 安全沙箱与权限控制赋予AI助手直接操作引擎和文件系统的能力就像给了它一把锋利的刀。我们必须设计好刀鞘防止误伤。1. 操作白名单这是第一道防线。不是所有Godot API都应对AI开放。我们应该定义一个明确的、最小权限的“工具集”。例如允许创建/删除场景中的节点、修改节点属性、创建新脚本文件、导入图片资源。禁止/谨慎删除项目文件、执行任意系统命令、修改引擎核心设置、访问项目目录外的文件。 在MCP服务器的配置文件中明确列出所有可用的工具及其最大权限范围。2. 路径访问限制所有涉及文件路径的参数如parent_path,resource_path必须进行规范化并检查是否在项目目录res://内。任何试图访问res://之外的路径如C:\或/etc的请求都应立即拒绝并返回错误。可以使用os.path.commonpath等方法进行安全检查。3. 操作确认与审计对于高风险操作如保存场景、运行构建可以实现一个“二次确认”机制。当AI客户端调用此类工具时MCP服务器可以返回一个特殊的响应要求用户明确确认例如在客户端弹出一个确认对话框。同时服务器应记录所有工具调用的日志包括时间、用户会话、工具名、参数和结果便于事后审计和问题排查。4. 资源消耗限制防止AI助手无意中发起消耗大量资源的操作例如循环创建上万个节点。可以在工具实现中加入限制逻辑比如单次创建节点的数量上限或者脚本执行的时间上限。4.2 性能优化与响应式设计MCP服务器作为“中间人”其性能直接影响用户体验。如果每次工具调用都要等待Godot编辑器启动一个脚本延迟会让人无法忍受。1. 持久化连接与连接池如前所述采用Socket IPC方式让Godot编辑器插件常驻维持一个持久化的连接。MCP服务器可以维护一个到Godot插件的连接池避免频繁建立连接的开销。对于高频的简单查询如获取当前选中节点响应时间应控制在毫秒级。2. 上下文缓存与增量更新项目资源列表、场景树结构这些上下文信息不需要每次请求都重新收集。MCP服务器应建立缓存机制。当Godot编辑器触发scene_changed或filesystem_changed信号时插件主动通知MCP服务器更新缓存。对于AI客户端可以通过MCP的resources订阅notifications功能获取增量更新而不是每次都拉取全量数据。3. 异步与非阻塞处理所有可能耗时的操作如资源扫描、构建导出都必须设计为异步。MCP服务器在收到请求后应立即返回一个“任务已接收”的响应然后通过另一个resources通道或后续的notifications来推送任务进度和结果。这符合MCP协议的设计也避免了客户端长时间等待导致超时。4. 工具描述的优化MCP工具的描述description和参数模式schema是AI理解工具用途的关键。描述应尽可能清晰、具体包含示例。参数模式应使用enum约束可选值如node_type可以枚举出常用的Godot节点类型使用pattern约束字符串格式如资源路径必须匹配^res://.*$。这能极大地提高AI调用工具的准确率。4.3 开发与部署工作流建议如何将这套方案融入日常开发这里有一些实践建议。1. 分阶段引入不要试图一次性实现所有工具。从一个最痛点的场景开始。比如你的团队花大量时间在重复的场景搭建上那就优先实现create_node、set_properties、duplicate_nodes等场景操作工具。看到实效后再逐步扩展资源管理、脚本辅助等功能。2. 与版本控制协同任何自动化工具生成或修改的代码、场景文件都必须纳入版本控制如Git。在关键操作如保存场景、编辑脚本前MCP服务器可以提示用户“已修改文件请记得提交”。更好的做法是将AI助手视为一个团队成员为它的操作生成有意义的提交信息例如“AI: 根据指令添加了敌人出生点触发器”。3. 定制化与扩展开源一个基础的Godot MCP服务器实现是起点。每个团队、每个项目都有独特的需求。设计良好的MCP服务器应该支持插件化允许开发者用GDScript或Python轻松添加自定义工具。例如你的游戏有一套自定义的对话系统你就可以写一个create_dialogue_branch工具专门用于快速创建对话树节点。4. 提示工程Prompt EngineeringAI助手的能力上限很大程度上取决于你如何“调教”它。在AI客户端的系统提示词System Prompt中你需要清晰地定义它的角色“你是一个精通Godot游戏开发的助手可以通过MCP服务器直接操作Godot 4.2编辑器。以下是你可以使用的工具……”并详细说明Godot的一些特定概念如场景树、节点、信号、GDScript语法偏好等。提供一些优秀的交互示例能显著提升它的表现。5. 典型问题排查与效果评估5.1 常见问题与解决方案速查表在实际搭建和使用的过程中你肯定会遇到各种问题。下面是我踩过的一些坑和解决办法。问题现象可能原因排查步骤与解决方案AI助手无法识别或调用工具1. MCP服务器未启动或崩溃。2. 客户端配置的MCP服务器路径错误。3. 工具定义名称、参数不符合MCP规范。1. 检查服务器进程是否在运行查看日志有无报错。2. 核对客户端如Claude Desktop设置中MCP服务器的命令和参数是否正确。3. 使用mcp list-tools如果客户端支持或直接向服务器发送tools/list请求检查返回的工具列表是否完整。调用工具后Godot编辑器无反应1. Godot编辑器插件未加载或崩溃。2. IPC连接Socket失败。3. 生成的编辑器脚本有语法错误。1. 在Godot编辑器的“编辑器”-“插件”中确认插件已启用。2. 检查插件输出的日志Godot编辑器控制台看Socket是否成功监听有无连接信息。3. 在MCP服务器端将准备发送给Godot的GDScript命令打印出来复制到Godot的脚本编辑器里手动运行检查语法。节点创建成功但属性设置不正确1. 属性值类型转换错误。2. 节点路径错误属性设置到了错误的对象上。3. 属性名拼写错误或Godot版本不兼容。1. 检查MCP服务器的类型转换逻辑特别是Vector2、Color、Rect2等复杂类型的字符串解析。2. 在工具调用后让服务器返回操作节点的最终路径和关键属性值用于验证。3. 对照Godot官方文档确认属性名正确。注意Godot 3.x和4.x的API差异。资源加载失败如图片不显示1. 资源路径错误文件不存在。2. 资源尚未导入或导入失败。3. 在设置属性时资源路径未被正确转换为Resource对象。1. 使用list_resources工具确认资源路径是否正确。2. 检查Godot编辑器的“文件系统”面板该资源是否正常显示不是灰色。可能需要手动触发重新导入。3. 确保在生成的GDScript中对于texture这类属性使用的是load(“res://path.png”)或preload(“res://path.png”)而不是字符串路径。构建导出失败1. 导出预设配置错误。2. 缺少目标平台的依赖如Android SDK。3. 项目本身有错误无法通过导出验证。1. 先在Godot编辑器中手动使用同一预设导出一次确认配置无误。2. 查看MCP服务器捕获的Godot构建输出日志错误信息通常会明确指出缺失什么。3. 确保在构建前项目能正常在编辑器中运行无编译错误。AI助手理解指令但调用错误工具1. 工具描述不够清晰导致AI误解。2. 用户指令本身模糊。1. 优化工具的描述字段加入更具体的使用场景和示例。例如create_node的描述可以写为“在指定父节点路径下创建一个新的Godot引擎节点。常用于快速搭建场景结构。”2. 在对话中引导用户给出更精确的指令例如包含节点类型、父节点路径等关键信息。5.2 效果评估与迭代方向如何判断这个集成方案是否成功不能只看技术是否跑通更要看它是否真正提升了开发效率。量化指标操作步骤减少率对比完成一个特定任务如搭建一个简单的UI界面手动操作所需的点击/拖拽/输入步骤与通过AI助手自然语言指令所需的步骤。上下文切换次数统计在解决一个问题时需要在不同软件窗口间切换的次数是否减少。脚本编写速度对于简单的样板代码如信号连接、基础物理逻辑比较手动编写和AI生成并微调的时间。定性感受心流状态保持是否减少了因琐碎操作而打断深度思考的情况学习成本转移新手开发者是否可以通过询问AI更快地了解Godot的某个功能如何实现而不是反复查阅文档创意验证速度一个游戏机制的想法能否更快地通过AI辅助搭建出可运行的原型根据这些评估你可以决定下一步的迭代方向。如果发现团队最耗时的是调试那么可以加强日志捕获和错误分析工具甚至让AI根据报错日志直接推荐修复代码。如果发现资源管理混乱可以强化资源发现、重命名和批量处理工具。这个Godot MCP服务器方案不是一个一劳永逸的产品而是一个需要与你团队工作流共同演进的基础设施。它最大的价值不在于替代开发者而在于将开发者从重复、机械的操作中解放出来让我们能更专注于游戏设计本身那些有趣、富有创造性的挑战。开始搭建你的第一个工具从一个具体的痛点出发你会立刻感受到这种工作方式带来的不同。
返回列表