Install
openclaw skills install @thcjp/game-ai-tool-freeopenclaw skills install @thcjp/game-ai-tool-free本工具为独立游戏开发者与学生提供游戏 AI 开发指南与代码模板,涵盖有限状态机 (FSM)、行为树 (Behavior Tree)、A* 寻路、效用 AI、感知系统、群体行为等主流 AI 架构。每种架构都配有完整的可运行代码示例,适合学习、原型验证与 Game Jam 使用。
免费版聚焦个人学习与原型开发,适合独立开发者与学生使用。
| 能力模块 | 描述 | 免费版支持 |
|---|---|---|
| 有限状态机 (FSM) | 简单敌人与 Boss 阶段 AI | 支持 |
| 行为树 (BT) | 复杂 NPC 与战术 AI | 支持 |
| A* 寻路 | 标准寻路算法 | 支持 |
| 效用 AI | 智能决策系统 | 支持 |
| 感知系统 | 视觉、听觉感知 | 支持 |
| 群体行为 (Boids) | 鸟群、鱼群模拟 | 支持 |
| GOAP | 目标导向行动规划 | 不支持 (升级 PRO) |
| 机器学习 AI | 强化学习集成 | 不支持 (升级 PRO) |
| 多 AI 协作 | 团队战术 AI | 不支持 (升级 PRO) |
| AI 调试工具 | 可视化调试器 | 基础 |
用input_params参数进行配置。
输入: 用户提供核心功能执行所需的指令和必要参数。 处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志。
input_params参数,支持创建/查询/导出操作用config_options参数进行配置。
输入: 用户提供参数配置与调用所需的指令和必要参数。 处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志。
config_options参数,支持修改/重置/导入操作用output_format参数进行配置。
输入: 用户提供结果处理与输出所需的指令和必要参数。 处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志。
output_format参数,支持导出/保存/转换操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:开发指南、寻路与决策系统的、代码实现、面向独立游戏开发、者与学生的游戏、开发指南与代码模、核心能力、适用场景、独立游戏开发、游戏开发学习、原型验证、Game、Jam、差异化、免费版聚焦个人学、习与原型开发、提供主流、架构的代码模板、适用关键词等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。为游戏中的敌人实现基础 AI 行为。
详细代码示例已移至
references/detail.md
为 NPC 实现模块化、可复用的复杂行为。
实现 A* 寻路与鸟群模拟。
// A* 寻路核心
public class AStar
{
private readonly Grid _grid;
# ...
public List<Point> FindPath(Point start, Point end)
{
var openSet = new PriorityQueue<Point>();
var cameFrom = new Dictionary<Point, Point>();
var gScore = new Dictionary<Point, float>();
var fScore = new Dictionary<Point, float>();
# ...
openSet.Enqueue(start, 0);
gScore[start] = 0;
fScore[start] = Heuristic(start, end);
# ...
while (openSet.Count > 0)
{
var current = openSet.Dequeue();
if (current == end) return ReconstructPath(cameFrom, current);
# ...
foreach (var neighbor in _grid.GetNeighbors(current))
{
float tentativeGScore = gScore[current] + _grid.GetCost(current, neighbor);
if (!gScore.ContainsKey(neighbor) || tentativeGScore < gScore[neighbor])
{
cameFrom[neighbor] = current;
gScore[neighbor] = tentativeGScore;
fScore[neighbor] = gScore[neighbor] + Heuristic(neighbor, end);
if (!openSet.Contains(neighbor))
openSet.Enqueue(neighbor, fScore[neighbor]);
}
}
}
return null;
}
# ...
private float Heuristic(Point a, Point b) =>
Math.Abs(a.X - b.X) + Math.Abs(a.Y - b.Y); // 曼哈顿距离
}
# ...
// Boids 群体行为
public class Boid : Node2D
{
private Vector2 _velocity;
# ...
public override void _Process(double delta)
{
var separation = CalculateSeparation();
var alignment = CalculateAlignment();
var cohesion = CalculateCohesion();
# ...
var acceleration = separation * 1.5f + alignment * 1.0f + cohesion * 1.0f;
_velocity += acceleration * (float)delta;
_velocity = _velocity.LimitLength(MaxSpeed);
Position += _velocity * (float)delta;
}
}
以下场景游戏AI工具免费版不适合处理:
需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于非本工具能力范围的需求。
根据游戏复杂度选择合适的 AI 架构。
架构选择指南:
有限状态机 (FSM):
适用: 简单敌人、Boss 阶段切换
优点: 简单直观、易调试
缺点: 状态多时难维护
# ...
行为树 (BT):
适用: 复杂 NPC、战术 AI
优点: 模块化、可复用、易扩展
缺点: 需要框架支持
# ...
效用 AI:
适用: 模拟人生类、策略游戏
优点: 灵活、智能决策
缺点: 参数调节困难
// 在 Godot 中集成 AI
public partial class Enemy : CharacterBody2D
{
private EnemyFSM _fsm;
# ...
public override void _Ready()
{
_fsm = new EnemyFSM();
AddChild(_fsm);
}
# ...
public override void _PhysicsProcess(double delta)
{
// FSM 自动处理移动逻辑
}
}
响应解析: 完成完成后,查看输出响应确认任务状态。成功时输出包含解析摘要和响应数据;失败时根据错误信息排查问题,查阅错误解析章节获取恢复步骤。
enemy_types:
basic:
fsm:
states: [idle, patrol, chase, attack]
detection_range: 200
attack_range: 50
attack_damage: 10
speed: 100
# ...
elite:
behavior_tree:
priorities: [attack, chase, patrol, flee]
sight_range: 300
hearing_range: 150
team_coordination: false # 免费版不支持
boss:
phases:
- name: "phase_1"
health_threshold: 0.75
patterns: [sweep_attack, projectile_burst]
- name: "phase_2"
health_threshold: 0.5
patterns: [enrage, summon_adds]
public class UtilityAI
{
private readonly List<UtilityAction> _actions = new();
# ...
public UtilityAction ChooseBestAction()
{
float bestScore = float.MinValue;
UtilityAction bestAction = null;
# ...
foreach (var action in _actions)
{
float score = action.CalculateScore();
score += GD.Randf() * 0.1f; // 添加随机性
if (score > bestScore)
{
bestScore = score;
bestAction = action;
}
}
return bestAction;
}
}
# ...
public class AttackAction : UtilityAction
{
private readonly Enemy _enemy;
# ...
public override float CalculateScore()
{
float score = 0f;
float distance = _enemy.DistanceToPlayer();
score += Mathf.Clamp(1.0f - distance / 200.0f, 0, 1) * 0.5f;
score += _enemy.HasAmmo ? 0.3f : 0.0f;
score += _enemy.HealthPercent * 0.2f;
return score;
}
# ...
public override void Execute() => _enemy.Attack();
}
// 添加调试可视化
public override void _Draw()
{
DrawArc(Vector2.Zero, ViewDistance, -ViewAngle / 2, ViewAngle / 2, 32, Colors.Yellow, 1.0f);
}
# ...
// 状态切换日志
public void ChangeState(EnemyState newState)
{
GD.Print($"State: {_currentState} -> {newState}");
_states[_currentState]?.Exit();
_currentState = newState;
_states[_currentState]?.Enter();
}
// 避免每帧调用 GetFirstNodeInGroup
private Node2D _playerCache;
# ...
public override void _Ready()
{
_playerCache = GetTree().GetFirstNodeInGroup("player") as Node2D;
}
# ...
// 限制 AI 计算频率
private float _aiUpdateTimer = 0f;
public override void _Process(double delta)
{
_aiUpdateTimer += (float)delta;
if (_aiUpdateTimer >= 0.1f) // 10 FPS 更新 AI
{
UpdateAI();
_aiUpdateTimer = 0f;
}
}
// 从配置文件加载 AI 参数
public class AIConfig
{
public float DetectionRange { get; set; }
public float AttackRange { get; set; }
public float Speed { get; set; }
}
# ...
// 配置与逻辑分离,便于平衡调整
简单游戏用 FSM (3-5 个状态足够),复杂 NPC 用行为树 (模块化易扩展)。两者也可混合使用。
使用 NavigationAgent (引擎内置)、限制寻路频率、简化网格、避免每帧重算路径。
提供基础调试 (状态日志、视野可视化)。完整可视化调试器需要 PRO 版本。
代码示例以 Godot C# 为主,概念适用于 Unity、Unreal、Cocos 等主流引擎。
免费版不包含。需要强化学习、神经网络等高级 AI,请升级 PRO 版本。
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | 推理服务 | 必需 | 由 Agent 内置 LLM 提供 |
| Godot 4.x | 游戏引擎 | 推荐 | godotengine.org 下载 |
| .NET 8 SDK | 运行时 | 可选 | dot.net 下载 (C# 支持) |
export GAME_AI_ENGINE="godot"
export GAME_AI_LANGUAGE="csharp"
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
输入:用户提供操作指令和必要参数
输出:返回执行结果,包含操作状态和输出数据
用户: 执行核心功能
Skill: 正在执行核心功能...
Skill: 执行完成,结果如下: 操作成功
{
"success": true,
"data": {
"result": "游戏AI工具免费版处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "game ai"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}