外链论坛

 找回密码
 立即注册
搜索
查看: 21|回复: 2

星际争霸传统AI设备人源码分析(1)——架构和规则

[复制链接]

2987

主题

182

回帖

9920万

积分

论坛元老

Rank: 8Rank: 8

积分
99209306
发表于 2024-10-10 19:07:26 | 显示全部楼层 |阅读模式

始终败兴,星际争霸等策略游戏AI都被视为游戏AI中实现难度最高的。其一,游戏规则较繁杂包括建造、资源收集、兵种协同、战斗微操非常多内容;其二,玩家需要运用区别的策略对抗区别敌人,策略很繁杂

星际争霸游戏画面

为何写这篇文案

写此篇文案重点有以下几点考量。其一,传统游戏AI基于规则实现,有的运用状态机、有的运用行径树、乃至有些运用搜索算法来寻找最优的动作,策略游戏常常综合运用多种技术,有必定科研价值;其二,尽管基于规则的传统AI没法和人类对抗,但它触及的程序抽象思想值得科研;其三,我之前写过几个AI关联的材料,一个是课程《各类型游戏人工智能算法》,它重点偏重于区别类型游戏AI的综述,另一个课程 《直观理解AI博弈原理》重点介绍象棋、围棋、王者荣耀的AI实现,更偏重于强化学习办法的演进,两者中间还缺乏一个综合实例,而星际争霸设备人UAlbertaBot刚好能够填补这一空白。本文重点参考UAlbertaBot的源码、Wiki,以及关联的几篇论文,咱们并不去关心程序怎么样安装和运行,而是关注它的设计和原理。

UAlbertaBot是什么

UAlbertaBot是一套开源的星际争霸AI,该程序自2010年起始参加各样星际AI的比赛,并且赢得2013年AIIDE星际争霸AI比赛的冠军。它的作者是David Churchill,纽芬兰纪念大学的计算机助理教授。UAlbertaBot的开源位置如下:

https://github.com/davechurchill/ualbertabot/

在2018年以前,运用强化学习办法的AI尚未成熟,UAlbertaBot等星际争霸设备作为游戏AI竞技的表率。尽管在2018年以后强化学习AI展现出很强的能力,但强化学习AI训练难度大且难以用规律暗示它的行径,游戏产业依然广泛的运用传统AI。

文案会分如下几篇

架构和规则,宏观介绍UAlbertaBot的原理建造次序搜索,介绍运用深度搜索算法去找到最优建造次序办法战斗模拟评定,介绍模拟队伍作战评定能否获胜的办法starterbot,一个最简单的设备人,从中理解最基本星际AI的写法策略制定,策略制定部分的代码分析建造实现,生产、建造关联系统的代码分析战斗实现,战斗关联代码分析寻路算法,地图关联代码的分析

代码结构

UAlbertaBot的代码运用C++编写,代码架构层次分明,整体如下图所示。咱们能够先有个大概印象,其中CombatCommander负责兵种战斗的规律、WorkerManager负责工人的规律、ProductionManager负责建造规律、StrategyManager负责整体策略,整体还是比较明晰。

代码层次结构

源码文件

程序从main起始运行,沿着UAIBertaBot、GameCommander逐层调用,最后分发到WorkerManager、ProductionManager等子系统,main、UAIBertaBot、GameCommander它们并不包括详细规律,仅仅是一层层的往下调用。

顶部的代码结构

各个子系统负责对应的规律实现,它们的重点功能如下。

各个子系统

ProductionManager 生产管理器

在程序中,策略管理器(StrategyManager)会负责选取合适的策略,而针对区别的策略需要生产区别的单位,StrategyManager会生成一个建造目的(build order goal ),包括要生产的内容,由ProductionManager去执行。因为建造单元有依赖关系,会消耗资源,必须恰当地安排生产的次序。ProductionManager会调用StarcraftBuildOrderSearch进行搜索,找到最恰当的建造次序(后续还会仔细介绍搜索的过程),形成建造列表(build order)根据优先级,建造队列(build order)里的单位。ProductionManager会调用BuildingManager来实现详细的建造过程,包含分配工人去建造、建造过程中工人被打死需要重新分配工人、管理建筑的状态(准备建、已分配工人、建造中、建造完成)。

CombatCommander 战斗管理器

倘若敌人来到我方霸占的区域,创建防御队伍(defense Squad)去防御。倘若存在攻击单位,根据如下次序进行攻击,a:已知的敌人基地;b:可见的敌人单元;c:已知的敌人建筑;d:进行探索,直到找到攻击目的CombatCommander会按照需要创建队伍,如需要防御时创建防御队伍,攻击时创建攻击队伍,分配单元到各个队伍(Squads),并且管理它们。其中Squads模块会调用CombatSimulation进行战斗模拟(后续仔细说明),倘若预估会胜利,则指示队伍去攻击敌人;倘若预估会失败,则撤退。Squads会调用各样MicroManager进行微观动作的操控。MicroManager是一个基类,派生出MeleeManager(混战)、RangedManager(范围攻击)、DetectorManager(侦查管理器),区别子类会实现一种特定行径掌控在合适时间,设置一个工人去侦查,以探索地图区域。CombatCommander会调用scoutManager,负责侦查规律,a:详细规律是寻找敌人基地并往敌人基地的方向行进;b:倘若在敌人基地内遇到敌方工人则攻击它;c:倘若敌方工人反击,则撤退。

WorkerManager 工人管理器

倘若有空闲工人,分配她们去收集矿产每一个提炼厂分配3个工人倘若发掘新的油矿,重新分配工人去挖矿倘若需要建造,分配有些工人去建造

其他系统诸如InformationManager会记录已发掘的敌人信息,MapGrid和MapTool会实现寻路辅助的功能。

下面又到广而告之的时间啦,倘若你想学习研发游戏,不妨看一看笔者写的《Unity3D网络游戏实战》和《百万在线:大型游戏服务端研发》,毕竟是花费数年时间编写,相信对大众理解游戏研发技术会有有些帮忙

作者的一系列游戏技术总结





上一篇:中文版网络分析仪运用手册全面解析
下一篇:Internet Download Manager 站点抓取器 《运用教程》
回复

使用道具 举报

3039

主题

3万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065878
发表于 2024-11-5 15:13:02 | 显示全部楼层
外链发布论坛学习网络优化SEO。
回复

使用道具 举报

3056

主题

3万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99138998
发表于 6 天前 | 显示全部楼层
一看到楼主的气势,我就觉得楼主同在社区里灌水。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-18 00:00 , Processed in 4.533870 second(s), 39 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.