法亚史诗吧 关注:12,746贴子:270,604
  • 16回复贴,共1

优化法亚战斗ai的思路雏形

只看楼主收藏回复

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


IP属地:陕西1楼2025-05-12 23:25回复
    我看完以后的第一感觉是觉得:这个ai有潜力做得拟人化和增添不少随机性的乐趣,不妨可以仔细构思怎么把局势判断的算法逻辑与战术等级以及领主性格的相关值做合理。
    比如战术水平高的领主对战局局势的判断更敏锐(局势判定频率更高),甚至可以通过判断敌我训练度和士气值来调整优势劣势的判断算法以达到准确判断的效果。性格激进的统帅会在优势时更倾向全面进攻。
    这样子做的好处是能够给ai主帅对阵时会添加趣味和随机性。打个比方就是在不同兵种比例的战斗中,某些时候战术普通但性格沉稳的统帅在某些时候说不定能打赢战术强但急躁的统帅;但某些时候战术普通但急躁的一方又有可能通过大胆的突袭打赢战术强且沉稳的另一方。


    IP属地:重庆来自Android客户端2楼2025-05-13 03:30
    回复
      2025-08-14 00:30:49
      广告
      不感兴趣
      开通SVIP免广告
      大佬牛掰


      IP属地:上海来自Android客户端3楼2025-05-13 03:39
      回复
        可以可以,大佬的思路简洁明了又非常有用,期待


        IP属地:山西4楼2025-05-13 08:50
        回复
          支持,但是弓骑也算进骑兵里吗


          IP属地:湖南来自iPhone客户端5楼2025-05-13 09:31
          收起回复
            大佬厉害。不过得优化下战场速度,不然打起来时间就更长了。期待


            IP属地:广东6楼2025-05-13 09:34
            回复
              支持一下。
              另外,射手会自行判断地形吗,万一是平原地形放在步兵后面岂不是干瞪眼,放两翼就无所谓了。
              还有骑兵,AI能不能让它优先去切后排或者断中路


              IP属地:湖北来自Android客户端7楼2025-05-13 09:45
              收起回复
                支持下


                IP属地:云南来自Android客户端8楼2025-05-13 09:52
                回复
                  2025-08-14 00:24:49
                  广告
                  不感兴趣
                  开通SVIP免广告
                  牛逼,但是这样会有一个疑问,就是需要改变战场宽度,现在骑砍1的战场,可以不够宽,会导致骑兵卡地图边缘吧?


                  IP属地:浙江来自Android客户端9楼2025-05-13 13:52
                  收起回复
                    不错


                    IP属地:广东来自Android客户端10楼2025-05-13 20:16
                    回复
                      可以可以,


                      IP属地:浙江来自Android客户端11楼2025-05-15 10:24
                      回复
                        大佬强啊,这可比ai无脑冲锋带感多了


                        IP属地:河北12楼2025-05-23 06:34
                        回复
                          6


                          IP属地:云南来自iPhone客户端13楼2025-05-24 01:40
                          回复