骑砍战团MOD开发(31)-游戏AI系统

2024-02-12 09:40
文章标签 mod ai 系统 开发 游戏 31 战团

本文主要是介绍骑砍战团MOD开发(31)-游戏AI系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.骑砍单机模式下AI控制

    骑砍战团中野外战斗,训练场中小兵行为,城镇中行人行走, 士兵巡逻, 攻城时小兵冲锋统称为场景AI.乱舞水浒中单挑功能,5V5竞技比赛等功能通过场景AI设置实现.

    骑砍大地图中敌军追踪和遭遇追击统称为大地图AI.

二.骑砍场景AI

     <1.单个agent的AI控制(最细粒度)

     骑砍引擎通过header_mission_templates,py定制AI常量控制小兵位置,动作和朝向.可实现自定义阵型和攻击动作。

# Agent AI Simple Behaviors
aisb_hold = 0
aisb_go_to_pos = 1
aisb_mount = 2
aisb_dismount = 3
aisb_melee = 4
aisb_ranged = 5
aisb_ranged_horseback = 6
aisb_charge_horseback = 7
aisb_maneuver_horseback = 8
aisb_flock = 9
aisb_race = 10
aisb_patrol = 11
aisb_no_enemies = 12
aisb_horse_hold = 13
aisb_horse_run_away = 14#设置攻击动作,四向攻击方向,挥舞动作
agent_set_attack_action                  = 1745  # (agent_set_attack_action, <agent_id>, <direction_value>, <action_value>),
#设置格挡动作
agent_set_defend_action                  = 1746  # (agent_set_defend_action, <agent_id>, <value>, <duration-in-1/1000-seconds>),
#控制小兵阵型和位置
agent_set_scripted_destination           = 1730  # (agent_set_scripted_destination, <agent_id>, <position>, [auto_set_z_to_ground_level], [no_rethink]),
#控制小兵AI强度
agent_ai_set_aggressiveness              = 1753  # (agent_ai_set_aggressiveness, <agent_id>, <value>),

     <2.引擎内置AI仇恨值系统(team_no)

     骑砍引擎内置在初始化agent完成之后(调用spawn_agent)会根据agent的team_no计算仇恨值和仇恨数量,也就是我们经常看到野外战斗中友军,玩家,敌军之间相互攻击行为。

     将敌方和友方士兵agent通过team_no进行标识,通过设置team之间的关系实现敌军和友军

     例如野外战斗模式下,引擎默认将玩家team设置为0,敌方team设置为1,通过设置team0和team1之间关系实现敌军/友军划分和士兵攻击AI设定。

#通过设置agent team实现友军和敌军划分
agent_set_team  = 1771  # (agent_set_team, <agent_id>, <value>),team_set_relation  = 1796  # (team_set_relation, <team_no>, <team_no_2>, <value>),

    <3.引擎内置同一team下的分组division

      骑砍引擎内置将同一team下的agent进行division划分,便于实现冲锋,坚守,撤退等团队命令,如常见的F1/F3冲锋操作就是对玩家team中某一个division的命令,division内置提供9组,分别为步兵,弓箭手,骑兵等.

#分组小兵AI控制
team_give_order = 1790  # (team_give_order, <team_no>, <division>, <order_id>),
team_set_order_position = 1791  # (team_set_order_position, <team_no>, <division>, <position>),
team_set_order_listener = 1795  # (team_set_order_listener, <team_no>, <division>, [add_to_listeners]),#小组内弓箭手/成员
grc_infantry = 0
grc_archers  = 1
grc_cavalry  = 2
grc_heroes   = 3
grc_everyone = 9#小组攻击命令 
mordr_hold				= 0 坚守 
mordr_follow			= 1 跟随
mordr_charge			= 2 冲锋
mordr_mount				= 3 上马
mordr_dismount			= 4
mordr_advance			= 5
mordr_fall_back			= 6
mordr_stand_closer		= 7
mordr_spread_out		= 8
mordr_use_blunt_weapons = 9
mordr_use_any_weapon    = 10
mordr_stand_ground      = 11
mordr_hold_fire         = 12
mordr_fire_at_will      = 13
mordr_retreat           = 14
mordr_use_melee_weapons	= 15
mordr_use_ranged_weapons= 16
mordr_fire_at_my_command= 17
mordr_all_fire_now		= 18
mordr_left_fire_now		= 19
mordr_middle_fire_now	= 20
mordr_right_fire_now	= 21
mordr_form_1_row		= 22
mordr_form_2_row		= 23
mordr_form_3_row		= 24
mordr_form_4_row		= 25
mordr_form_5_row		= 26rordr_free				= 0
rordr_mount				= 1
rordr_dismount			= 2wordr_use_any_weapon	= 0
wordr_use_blunt_weapons	= 1
wordr_use_melee_weapons	= 2
wordr_use_ranged_weapons= 3aordr_fire_at_will      = 0
aordr_hold_your_fire    = 1

     <4.城镇士兵,村名巡逻AI脚本

     通过module_scripts.py中战团内置函数实现,通过产生随机目标点position,然后调用agent_set_scripted_destination实现行人随机游走。

# script_tick_town_walkers 城镇行人行走AI 可实现士兵巡逻等AI功能
# Input: none
# Output: none# script_set_town_walker_destination 随机产生AI目标点,调用set_scripted_destination实现游走
# Input: arg1 = agent_no
# Output: none("set_town_walker_destination",[(store_script_param_1, ":agent_no"),(assign, reg0, 9),(assign, reg1, 10),(assign, reg2, 12),(assign, reg3, 32),(assign, reg4, 33),(assign, reg5, 34),(assign, reg6, 35),(assign, reg7, 36),(assign, reg8, 37),(assign, reg9, 38),(assign, reg10, 39),(try_for_agents, ":cur_agent"),(agent_get_troop_id, ":cur_troop", ":cur_agent"),(is_between, ":cur_troop", walkers_begin, walkers_end),(agent_get_slot, ":target_entry_point", ":cur_agent", 0),(try_begin),(eq, ":target_entry_point", 9),(assign, reg0, 0),(else_try),(eq, ":target_entry_point", 10),(assign, reg1, 0),(else_try),(eq, ":target_entry_point", 12),(assign, reg2, 0),(else_try),(eq, ":target_entry_point", 32),(assign, reg3, 0),(else_try),(eq, ":target_entry_point", 33),(assign, reg4, 0),(else_try),(eq, ":target_entry_point", 34),(assign, reg5, 0),(else_try),(eq, ":target_entry_point", 35),(assign, reg6, 0),(else_try),(eq, ":target_entry_point", 36),(assign, reg7, 0),(else_try),(eq, ":target_entry_point", 37),(assign, reg8, 0),(else_try),(eq, ":target_entry_point", 38),(assign, reg9, 0),(else_try),(eq, ":target_entry_point", 39),(assign, reg10, 0),(try_end),(try_end),(assign, ":try_limit", 100),(assign, ":target_entry_point", 0),(try_for_range, ":unused", 0, ":try_limit"),(shuffle_range, 0, 11),(gt, reg0, 0),(assign, ":target_entry_point", reg0),(assign, ":try_limit", 0),(try_end),(try_begin),(gt, ":target_entry_point", 0),(agent_set_slot, ":agent_no", 0, ":target_entry_point"),(entry_point_get_position, pos1, ":target_entry_point"),(try_begin),(lt, ":target_entry_point", 32),(init_position, pos2),(position_set_y, pos2, 250),(position_transform_position_to_parent, pos1, pos1, pos2),(try_end),(agent_set_scripted_destination, ":agent_no", pos1, 0), #设置AI目标位置(agent_set_speed_limit, ":agent_no", 5),(try_end),]),

三.骑砍场景AI网格

    骑砍引擎通过在场景物中添加AI网格静态模型实现AI行走路线控制,根据小兵当前位置pos1和scripted_destination目标位置pos2选择AI行走路线.

    例如东方1135中攻城小兵选择行走路线就提前通过AI网格进行设置(Ctrl+E,AI网格编辑),这样小兵就不会从河道行走而会选择从桥上向城门进发。

四.骑砍大地图AI

     骑砍引擎通过header_parties.py定制AI常量控制城镇和军团状态,实现大地图军团的追踪和攻击。可实现大地图护卫队(乱舞水浒功能),军团阵型等功能

ai_bhvr_hold            = 0 中立
ai_bhvr_travel_to_party = 1
ai_bhvr_patrol_location = 2
ai_bhvr_patrol_party    = 3
ai_bhvr_track_party     = 4 
ai_bhvr_attack_party    = 4
ai_bhvr_avoid_party     = 5
ai_bhvr_travel_to_point = 6 前往某个位置
ai_bhvr_negotiate_party = 7
ai_bhvr_in_town         = 8 围城
ai_bhvr_travel_to_ship  = 9
ai_bhvr_escort_party    = 10
ai_bhvr_driven_by_party = 11party_set_marshall                    = 1604  # (party_set_marshall, <party_id>, <value>),
party_set_flags                       = 1603  # (party_set_flags, <party_id>, <flag>, <clear_or_set>),
party_set_aggressiveness              = 1606  # (party_set_aggressiveness, <party_id>, <number>),
party_set_courage                     = 1607  # (party_set_courage, <party_id>, <number>),
party_set_ai_initiative               = 1639  # (party_set_ai_initiative, <party_id>, <value>),
party_set_ai_behavior                 = 1640  # (party_set_ai_behavior, <party_id>, <ai_bhvr>),
party_set_ai_object                   = 1641  # (party_set_ai_object, <party_id>, <object_party_id>),
party_set_ai_target_position          = 1642  # (party_set_ai_target_position, <party_id>, <position>),
party_set_ai_patrol_radius            = 1643  # (party_set_ai_patrol_radius, <party_id>, <radius_in_km>),
party_ignore_player                   = 1644  # (party_ignore_player, <party_id>, <duration_in_hours>),
party_set_bandit_attraction           = 1645  # (party_set_bandit_attraction, <party_id>, <attaraction>),

这篇关于骑砍战团MOD开发(31)-游戏AI系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/702300

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G