## RagnarsRökare MobAILib ##MobAILib是一个库,可用于替换Valheim中角色内置的AI。目标是提供一系列AI类型和行为,供模组作者使用,以创造一个更生动的世界。
拉格纳毁灭者移动AI库MobAILib是一个可用于替换Valheim中角色内置AI的库。
目标是提供一系列AI类型和行为,供模组制作者使用,以创造一个更生动的世界。
用法首先在你的模组项目中添加对MobAILib的引用。
RagnarsRokare.MobAI.MobManager 用于注册和追踪受控制的生物。
它有一个可用的MobAI列表,用作生物的大脑并控制其行为。
每个MobAI都有自己的配置文件及设置:WorkerAIConfig和FixerAIConfig。
它们继承包含基础属性的MobAIBaseConfig:
警觉 - 通用感知,用于计算搜索范围和侦测敌人的能力
攻击性 - 攻击性决定战斗时的行为方式,以及何时放弃并逃跑
机动性 - 移动力用于决定生物移动的频率和距离
智力 - 通用智能,生物能记住多少
-工人AI
让角色四处走动,为熔炉、窑、壁炉和火把添加燃料。它会在地面和箱子中寻找物品。
受伤时会反击但容易放弃(攻击性低)。FeedDuration设置仅在游戏对象附加了可驯服组件时生效。
工人AI配置 public int FeedDuration = 1000;
public string[] IncludedContainers = new string[] { "piece_chest_wood" };
public int TimeBeforeAssignmentCanBeRepeated = 120;
public int TimeLimitOnAssignment = 60;
修复者AI
让角色去修理它发现的任何受损建筑。它会装备物品栏位置0的物品,如果存在锤子则装备锤子,并在修理时使用攻击动画。如果受到伤害会积极战斗(具有高攻击性等级)。
FeedDuration设置仅在gameObject附加了Tameable组件时生效。
修复者AI配置这些是默认值
public int PostTameFeedDuration = 1000;
public int TimeLimitOnAssignment = 30;
public string[] IncludedContainers = new string[] { "piece_chest_wood" };
注册怪物AI(怪物AI类型 类型)
用于注册自定义MobAI
mobAIType必须是一个继承MobAIBase并实现IMobAIType接口的类
示例 mobAI 实现请参阅 [GitHub](https://github.com/di98feja/RagnarsRokare/wiki) 上的 wiki。
注册怪物(角色 character, 字符串 uniqueId, 字符串 mobAIName, 字符串 configAsJson)
用于注册生物以使用MobAI。
- character 是怪物的 Character 组件
- uniqueId 是一个字符串,用于在所有其他生物中唯一标识该生物
- mobAIName 是要使用的 MobAI 类型。可用类型可通过 **``MobManager.GetRegisteredMobAIs()``** 查看
-configAsJson 是 MobAI 专用配置,以 JSON 格式序列化
注册怪物(角色 角色, 字符串 唯一标识, 字符串 怪物AI名称, 对象 配置)
用于注册生物以使用生物AI。
- character 是怪物的 Character 组件
-uniqueId 是一个字符串,用于在所有其他怪物中唯一标识该怪物
- mobAIName 是要使用的 MobAI 类型。可用类型可通过 **``MobManager.GetRegisteredMobAIs()``** 获取
- config 是 MobAI 专用配置
注销怪物(string uniqueId)
用于停止控制一个生物。
IsRegisteredMob(string uniqueId)
检查是否存在具有给定uniqueId的已注册生物。
IsAliveMob(string uniqueId)
检查是否存在具有给定 uniqueId 的活动怪物。
当生物AI被实例化并分配后,该生物即处于存活状态。
存活怪物字典
所有存活的怪物都保存在一个字典中,以其UniqueId作为键。
值是它的MobAI的基类,提供了对其CurrentAIState的访问权限
代码可在以下位置找到
GitHub该仓库中还有使用此库的SlaveGreylings模组。
在底层,我们使用(或者说可能滥用)了Stateless状态机(同样可在以下位置找到
GitHub)。
感谢无状态团队!
MobAILib仍在开发中,和所有业余爱好项目一样,无论我们觉得它多有趣,能投入的时间终究有限。
所以即使我们喜欢反馈,也无法满足每个人的愿望,至少不能立刻做到……
// 巴格和莫格
未来计划- 添加更多可供所有MobAI类使用的专用战斗行为
- 为战斗行为添加接口和策略模式,以便在运行时进行选择
- 更多内置的MobAI类
- 更常见的行为
更新日志
- 版本 0.3.9
生物现在在朝目标移动时只检测2D距离
分拣器无法访问容器时会丢下持有的物品
- 版本 0.3.8
错误修复
- 版本 0.3.7
错误修复
- 版本 0.3.6
已添加基础农耕行为
- 版本 0.3.5
为英灵神殿v0.206.5版本重新构建
- 版本 0.3.4
为炉火与家园更新
-版本 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
添加了注册自定义生物AI类的能力
- 版本 0.1.1
为RegisterMob添加了重载,将配置作为对象传入
- 版本 0.1.0
首次发布