MobAILib

面向 Valheim 模组开发者的 AI 库,可替换游戏角色的内置 AI,并提供可复用的 AI 类型与行为。包含工人和修理者 AI、注册与管理接口及配置说明。

0浏览
0下载点击
0点赞
0收藏

关于这个 Mod

RagnarsRökare MobAILib

MobAILib 是一个可用于替换 Valheim 中角色内置 AI 的库,旨在提供多种 AI 类型和行为,供模组作者用于打造更有生气的世界。

使用方法

在模组项目中添加对 MobAILib 的引用。RagnarsRokare.MobAI.MobManager 用于注册和跟踪受控生物,并维护可用的 MobAI 列表,作为生物的“脑”并控制其行动。

每种 MobAI 都有自己的配置文件,例如 WorkerAIConfig 和 FixerAIConfig。它们继承自 MobAIBaseConfig,其中包含以下基础属性:

  • Awareness(感知):用于计算搜索范围和发现敌人的能力。
  • Agressiveness(攻击性):决定战斗时的行为,以及何时放弃并逃跑。
  • Mobility(机动性):决定生物移动的频率和距离。
  • Intelligence(智能):生物能够记住多少信息。

WorkerAI

使角色在周围走动,并为冶炼炉、木炭窑、壁炉和火把补充物资。它会搜索地面物品和箱子。受伤时会战斗,但容易放弃(攻击性较低)。只有游戏对象附有 Tameable 组件时,FeedDuration 设置才适用。

WorkerAIConfig 默认值:

public int FeedDuration = 1000;
public string[] IncludedContainers = new string[] { "piece_chest_wood" };
public int TimeBeforeAssignmentCanBeRepeated = 120;
public int TimeLimitOnAssignment = 60;

FixerAI

使角色前往修理发现的受损建筑。它会装备库存位置 0 的物品;如果有锤子,则装备锤子,并在修理时使用攻击动画。受伤时会积极战斗(攻击性较高)。只有游戏对象附有 Tameable 组件时,FeedDuration 设置才适用。

FixerAIConfig 默认值:

public int PostTameFeedDuration = 1000;
public int TimeLimitOnAssignment = 30;
public string[] IncludedContainers = new string[] { "piece_chest_wood" };

API

RegisterMobAI(Type mobAIType)

注册自定义 MobAI。mobAIType 必须是继承 MobAIBase 并实现 IMobAIType 接口的类。实现示例见 GitHub Wiki。

RegisterMob(Character character, string uniqueId, string mobAIName, string configAsJson)

注册一个使用 MobAI 的生物:

  • character:生物的 Character 组件。
  • uniqueId:用于在所有生物中唯一标识该生物的字符串。
  • mobAIName:要使用的 MobAI 类型。可通过 MobManager.GetRegisteredMobAIs() 查看可用类型。
  • configAsJson:序列化为 JSON 的特定 MobAI 配置。
RegisterMob(Character character, string uniqueId, string mobAIName, object config)

使用对象配置注册生物,参数含义同上,config 为特定 MobAI 配置对象。

UnregisterMob(string uniqueId)

停止控制指定生物。

IsRegisteredMob(string uniqueId)

检查指定 uniqueId 是否对应已注册生物。

IsAliveMob(string uniqueId)

检查指定 uniqueId 是否对应活动生物。MobAI 已实例化并分配给生物时,该生物被视为活动状态。

Dictionary<string, MobAIBase> AliveMobs

所有活动生物保存在字典中,键为其 UniqueId。值是其 MobAI 的基类,可用于访问 CurrentAIState。

代码与说明

代码仓库:GitHub。仓库中也包含使用此库的 SlaveGreylings 模组。底层使用(或可能是不恰当地使用)Stateless 状态机:GitHub。作者感谢 Stateless 团队。

MobAILib 仍在开发中。作者表示这是业余项目,可投入的时间有限;欢迎反馈,但不一定能立即满足所有需求。

未来计划

  • 为所有 MobAI 类增加更多专用战斗行为。
  • 增加界面与策略模式,以便运行时选择战斗行为。
  • 增加更多内置 MobAI 类和通用行为。

更新记录

  • 0.3.10:针对 Valheim v0.208.1 重新构建。
  • 0.3.9:生物向目标移动时现在只检查二维距离;如果 Sorter 无法访问容器,会丢下手持物品。
  • 0.3.8:错误修复。
  • 0.3.7:错误修复。
  • 0.3.6:新增 BasicFarmingBehaviour。
  • 0.3.5:针对 Valheim v0.206.5 重新构建。
  • 0.3.4:更新以适配 Hearth & Home。
  • 0.3.3:错误修复。
  • 0.3.1:向后兼容 v0.2。
  • 0.3.0:为生物添加地图标记;进行多项调整和稳定性改进。RoamingAI 默认禁用:单人游戏和专用服务器上只有自己时运行良好,多人游戏仍需改进。
  • 0.2.1:移除 [BepInProcess("valheim.exe")],以兼容专用服务器。
  • 0.2.0:新增控制行为的生物基础属性;容器和任务需要视线;新增 FeedingBehaviour,不再需要 Tameable 组件;重做状态机树;弃用部分配置值。
  • 0.1.3:为 FixerAI 和 WorkerAI 添加基础战斗行为;修复没有生物跟随时向壁炉添加燃料报错的问题。
  • 0.1.2:支持注册自定义 MobAI 类。
  • 0.1.1:为 RegisterMob 添加接收配置对象的重载。
  • 0.1.0:首次发布。

**版本:**0.3.10

**作者:**RagnarsRokare

来源与文件

  • 原作者:RagnarsRokare
  • 原项目:MobAILib
  • 文件:MobAILib.v0310.zip(ID:8531)
  • 来源上传者:di98feja

文件说明

  • Version 0.3.10

Rebuilt for Valheim v0.208.1

前往 N 网打开所选文件。安装与下载要求以原作者及平台说明为准。

<!-- aoe-mods-source:nexusmods:valheim:1188 -->