把骑兵,步兵,射手分别设为三个小队,然后分别根据局势给予命令
主要是给ai用的
采取先总体,再分类的形式,先是根据局势判断整个军队阵型的中心点,接着再细分各个小队的阵型中心点
局势计算方式:通过双方伤亡比计算局势,先计算一段时间内我方伤亡和对方伤亡的比值,假设大于1.5则为我方劣势,小于0.66则为我方优势(在数值设定上可以看出我方优势时则对方必定劣势,我方劣势时则对方必定优势)
局势用处:局势劣势方则边打边往后撤以保证支援速度更快
局势是每隔一段时间计算一次,然后储存,目前我打算在每场战斗结束有一个战后总结界面,在总结界面可以查看这场战斗的宏观数据,比如可以绘制一个局势—时间函数图(局势为纵轴,时间为横轴),让玩家建立起对这场战斗局势变化的认识。除此之外还可以有别的图表,不过我暂时没继续想,大家如果有想法的话可以提一些建议。目的的话主要就是建立起玩家对战场的宏观认知,以更好地产生一种作为指挥官的代入感。
局势的计算是分段的,所以会出现一开始局势不好,然后后撤后局势变好的情况。当军队撤退到一个点时局势变好则停止后撤。若下一次局势计算又是劣势,则继续后撤。大概就是这样的计算思路。
接着是各小队的阵型中心计算思路
步兵小队:只有冲锋和坚守阵地两个指令,射手小队和骑兵小队都是根据步兵小队的阵型中心决定自身位置,所以可以看作步兵小队的阵型中心就是整个军队的阵型中心。一开始都是冲锋,在局势不佳时撤退到某一个点坚守阵地,再冲锋。
射手小队:射手小队默认在步兵小队后方的一个点坚守阵地,保证射手小队在步兵小队的一定范围内。计算射手小队一段时间内的射箭数量与射手总人数的比值,若低于某个值,则开始检测各个射手这段时间消耗的箭数,然后选择其中消耗箭数最多的几个射手,将这几个射手的位置的平均值设置为射手小队的阵地中心,保证射手尽可能获取良好的输出位置。
若射手一段时间内伤亡比过高,则计算步兵小队阵地中心点和射手小队阵地中心点,再取两个中心点的中心,让步兵小队和射手小队相互靠近在那个中心汇合,避免射手被过快地处理。
骑兵小队:设置为坚守在步兵的左方或右方跟着步兵一起前进,当双方步兵开始交战时再冲锋入场(设定阵型中心为步兵左边或右边一段距离,双方开始出现一定伤亡时再冲锋),因为骑兵速度更快,所以撤退时骑兵会更快撤退组织队形,之后再重新进场冲击敌方阵型
骑兵小队分为两种指令,一是冲锋,二是退回到特定地点整理队形
目前打算设置一个快捷键,战场上按下快捷键则让ai接管玩家军队的指挥,而不是等到玩家死后才接管,这样也可以让不想指挥的玩家玩得轻松一点。当玩家把指挥交给ai后,npc不会被划分进任何小队,而是作为自由人,玩家也可以单独指挥npc小队,去影响战斗局势。
以上便是关于优化法亚战斗ai的思路雏形,简单有效,没什么计算量,只是每隔一段时间给予军队命令。但可以更大程度上发挥出骑兵,射手和援军的作用。
先提前说一下,我在0.65出来,并且游玩一段时间后才会开始写代码做功能,所以在0.65出来前我什么也不会做,主要是分享一些思路。之所以这么做,有一个很重要的理由——我更想以玩家的立场去游玩法亚,而不是以创作者的立场去游玩法亚。当一个人开始习惯写代码做功能,把自己框定在创作者的立场,就很难再作为一个普通的玩家去游玩这个游戏了,我更希望自己作为一个玩家,获取到玩法亚的快乐,在游玩结束后,再作为一个创作者,获取到创作的快乐。
猫猫镇楼

主要是给ai用的
采取先总体,再分类的形式,先是根据局势判断整个军队阵型的中心点,接着再细分各个小队的阵型中心点
局势计算方式:通过双方伤亡比计算局势,先计算一段时间内我方伤亡和对方伤亡的比值,假设大于1.5则为我方劣势,小于0.66则为我方优势(在数值设定上可以看出我方优势时则对方必定劣势,我方劣势时则对方必定优势)
局势用处:局势劣势方则边打边往后撤以保证支援速度更快
局势是每隔一段时间计算一次,然后储存,目前我打算在每场战斗结束有一个战后总结界面,在总结界面可以查看这场战斗的宏观数据,比如可以绘制一个局势—时间函数图(局势为纵轴,时间为横轴),让玩家建立起对这场战斗局势变化的认识。除此之外还可以有别的图表,不过我暂时没继续想,大家如果有想法的话可以提一些建议。目的的话主要就是建立起玩家对战场的宏观认知,以更好地产生一种作为指挥官的代入感。
局势的计算是分段的,所以会出现一开始局势不好,然后后撤后局势变好的情况。当军队撤退到一个点时局势变好则停止后撤。若下一次局势计算又是劣势,则继续后撤。大概就是这样的计算思路。
接着是各小队的阵型中心计算思路
步兵小队:只有冲锋和坚守阵地两个指令,射手小队和骑兵小队都是根据步兵小队的阵型中心决定自身位置,所以可以看作步兵小队的阵型中心就是整个军队的阵型中心。一开始都是冲锋,在局势不佳时撤退到某一个点坚守阵地,再冲锋。
射手小队:射手小队默认在步兵小队后方的一个点坚守阵地,保证射手小队在步兵小队的一定范围内。计算射手小队一段时间内的射箭数量与射手总人数的比值,若低于某个值,则开始检测各个射手这段时间消耗的箭数,然后选择其中消耗箭数最多的几个射手,将这几个射手的位置的平均值设置为射手小队的阵地中心,保证射手尽可能获取良好的输出位置。
若射手一段时间内伤亡比过高,则计算步兵小队阵地中心点和射手小队阵地中心点,再取两个中心点的中心,让步兵小队和射手小队相互靠近在那个中心汇合,避免射手被过快地处理。
骑兵小队:设置为坚守在步兵的左方或右方跟着步兵一起前进,当双方步兵开始交战时再冲锋入场(设定阵型中心为步兵左边或右边一段距离,双方开始出现一定伤亡时再冲锋),因为骑兵速度更快,所以撤退时骑兵会更快撤退组织队形,之后再重新进场冲击敌方阵型
骑兵小队分为两种指令,一是冲锋,二是退回到特定地点整理队形
目前打算设置一个快捷键,战场上按下快捷键则让ai接管玩家军队的指挥,而不是等到玩家死后才接管,这样也可以让不想指挥的玩家玩得轻松一点。当玩家把指挥交给ai后,npc不会被划分进任何小队,而是作为自由人,玩家也可以单独指挥npc小队,去影响战斗局势。
以上便是关于优化法亚战斗ai的思路雏形,简单有效,没什么计算量,只是每隔一段时间给予军队命令。但可以更大程度上发挥出骑兵,射手和援军的作用。
先提前说一下,我在0.65出来,并且游玩一段时间后才会开始写代码做功能,所以在0.65出来前我什么也不会做,主要是分享一些思路。之所以这么做,有一个很重要的理由——我更想以玩家的立场去游玩法亚,而不是以创作者的立场去游玩法亚。当一个人开始习惯写代码做功能,把自己框定在创作者的立场,就很难再作为一个普通的玩家去游玩这个游戏了,我更希望自己作为一个玩家,获取到玩法亚的快乐,在游玩结束后,再作为一个创作者,获取到创作的快乐。
猫猫镇楼
