本篇文章13657字,读完约34分钟

雷锋。(公开号码:雷锋。这篇文章的原作者是洪圣和杜克。原文包含在作者的智能单元专栏中。雷锋。com被授权发布。

1前言

2017年8月10日,深度思维和暴雪发布了星际争霸2的人工智能研究环境sc2le,使得人工智能的研究进入了一个新的阶段。这次,研究人工智能的朋友可以边玩游戏边做研究。

《星际争霸2》人工智能研究环境 SC2LE 初体验

为了让更多的朋友了解sc2le的研究环境,我们在第一时间对其进行了安装和测试,并分析了deepmind发布的pysc2代码,初步了解了基于pysc2的rl开发方法。我们将逐一介绍他们。

《星际争霸2》人工智能研究环境 SC2LE 初体验

2使用macbook pro 13inch (macos sierra)进行测试

alienware英寸(ubuntu 14.04)

3安装方法3.1在媒体访问控制环境下安装

(1)安装pysc2

pip安装pysc2

如果权限不够,请添加sudo:

sudopipinstallpysc2

该程序会自动安装各种依赖项:

installingcollectedpackages:Google-apputils,pygame,future,pysc2

successfulyinstalledfuture-0 . 16 . 0 Google-apputils-0 . 4 . 2文件名-1 . 9 . 3 sys C2-1.0

(2)然后下载星际争霸客户端的mac版本:战网/账号/下载/,mac版本,然后安装30 G,版本3.16.1。

(3)下载后,你可以运行游戏,然后确定

(4)下载地图包、迷你游戏和重播:暴雪/S2客户端-原型、Github/Deepmind/Pysc2/发布/下载/1.0/迷你游戏

(5)进入星际争霸2目录

(6)创建地图文件夹

(7)将地图包和迷你游戏压缩包提取到地图目录中,密码为iagreetotheeula

打开终端,输入python-m py sc2 . bin . agent-mapsimple 64进行测试。

以下是示意图:

amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;img src= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;static.leiphone/uploads/new/article/pic/201708/4df0d743f23353e59fd6c2a9c0b7ba79.jpg amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; data-rawwidth= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;1600 amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; data-rawheight= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;1000 amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; >

amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;img src= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;static.leiphone/uploads/new/article/pic/201708/6749d6caff9c0d2c67f362969c90738c.png amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; data-rawwidth= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;768 amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; data-rawheight= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;480 amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; >

大家可以看到在mac下既显示了原始的游戏画面,又显示了feature的画面。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。lt。img src= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。static . leiphone/uploads/new/article/pic/201708/4df 0d 743 f 23353 e 59 FD 6 C2 a9 c 0 b 7 ba 79 . jpg amp;amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。数据-rawwidth= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。1600安培。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。数据-rawheight= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。1000安培。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。> amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。lt。img src= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。static . leiphone/uploads/new/article/pic/201708/6749 D6 caff 9 c 0 d2c 67 f 362969 c 90738 c . png amp;amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。数据-rawwidth= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。768安培。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。数据-rawheight= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。480安培。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。您可以看到原始游戏图片和功能图片都显示在mac下。

《星际争霸2》人工智能研究环境 SC2LE 初体验

Ubuntu环境下的安装

(1)安装pysc2(与mac相同)

sudopipinstallpysc2

(2)下载星际争霸2的linux版本:暴雪/S2客户端-原型,并在主目录中提取它,然后提取密码:iagreetotheeula

(3)下载地图包,迷你游戏:暴雪/s2client-proto,github/deep mind/py sc2/releases/download/v 1.0/mini _ games . zip .解压文件到~/starcraft2/maps。

打开终端,输入python-m py sc2 . bin . agent-mapsimple 64进行测试。

以下是两张不同地图的示意图:

linux下没有原始的游戏屏幕。

amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;img src= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;static.leiphone/uploads/new/article/pic/201708/c8cfdb2d09c4d35239670c675a3ca989.png amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; data-rawwidth= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;1440 amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; data-rawheight= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;707 amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; >

amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;img src= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;static.leiphone/uploads/new/article/pic/201708/168e6acf055f54f0a3623ea05119bb08.png amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; data-rawwidth= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;1440 amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; data-rawheight= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;707 amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; >

4 测试(1)基本测试amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。lt。img src= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。static . leiphone/uploads/new/article/pic/201708/c8 cfdb 2d 09 C4 d 35239670 c 675 a3 ca 989 . png amp;amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。数据-rawwidth= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。1440安培。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。数据-rawheight= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。707安培。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。> amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。lt。img src= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。static . leiphone/uploads/new/article/pic/201708/168 E6 ACF 055 f 54 f 0a 3623 ea 05119 bb 08 . png amp;amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。数据-rawwidth= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。1440安培。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。数据-rawheight= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。707安培。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。> 4项测试(1)基本测试

《星际争霸2》人工智能研究环境 SC2LE 初体验

python-mpysc 2 . bin . agent-mapsimple 64

(2)改变地图,如使用梯子的地图

python-mpysc 2 . bin . agent-mapabysalick

注意地图上没有勒梯的名字!

(3)不要使用代理,用手玩!

python-mpysc 2 . bin . play-mapmovetobacon

(4)使用特定的代理进行游戏(例如移动到一个游戏的迷你游戏)

python-mpysc 2 . bin . AGENT-mapmovetobacon-AGENTpysc2 . AGENTs . scripted _ AGENT . movetobacon

(5)播放重播

python - mpysc2.bin.play - replay

5如何开发rl只是在安装之前,这里是关键。要知道如何开发rl,我们必须首先知道pysc2的代码是如何运行的。

在最后的总结测试中,我们看到可以指定第四种代理。因此,我们可以自己编写一个代理文件,这样环境就可以运行我们自己的代理:

python-mpysc 2 . bin . agent-map-agent

那么如何编写这个代理呢?

为什么一个基本代理是用pysc2代码构建的?我们只需要在基本代理的基础上建立一个新的代理类,然后在里面的步骤函数中实现我们的rl算法。

基本的程序架构如下:

从_未来_导入绝对_导入

从__未来_ _导入部门

从__未来_ _导入打印函数

导入号码

从pysc2 .代理导入基本代理

从pysc2.lib导入操作

从pysc2.lib导入功能

类ouragent(base_agent.baseagent):

定义步骤(自身、obs):

超级(我们的绅士,自我)。步骤(obs)

# - #

这里是rl算法

# - #

回复作用

Obs包含所有观察信息,包括特征图、奖励和可执行动作。函数步骤的目标是向环境输出操作以供执行。Rl算法需要处理obs,然后输出动作。

让我们来看看pysc2提供的movetobeacon的非智能算法:

从_未来_导入绝对_导入

从__未来_ _导入部门

从__未来_ _导入打印函数

导入号码

从pysc2 .代理导入基本代理

从pysc2.lib导入操作

从pysc2.lib导入功能

_player_relative =功能. screen _ features . player _ relative . index

_玩家友好= 1

_玩家_中立= 3 #灯塔/矿物

_玩家_敌对= 4

_ no _ op = actions . functions . no _ op . id

_ move _ screen = actions . functions . move _ screen . id

_攻击_屏幕=动作.功能.攻击_屏幕. id

_ select _ army = actions . functions . select _ army . id

_未排队= [0]

_select_all = [0]

类movetobacon(base _ agent . base agent):

" " "一个专门负责解决movetobeacon映射的代理。"""

定义步骤(自身、obs):

super(movetobacon,self)。步骤(obs)

OBS . OBS中的if _move_screen观察["available_actions"]:

player _ relative = OBS . OBS . observation[" screen "][_ player _ relative]

中立_y,中立_x =(玩家_相对= = _玩家_中立)。非零()

如果不是中性_y.any():

返回actions.functioncall(_no_op,[])

target = [int(neutral_x.mean()),int(neutral_y.mean())]

return actions . functioncall(_ move _ screen,[_not_queued,target])

否则:

返回操作.函数调用(_select_army,[_select_all])

如我们所见,上面的代码直接获取信标的位置信息(neutral_y,neutral_x),从而直接给出动作。但是为了使用rl算法,我们需要得到特征图的图像信息。然后我发现上面代码中的player_relative是图像信息,可以通过opencv或plt输出直接显示。下图中最右边的显示:

《星际争霸2》人工智能研究环境 SC2LE 初体验

amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;img src= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;static.leiphone/uploads/new/article/pic/201708/9f2384ee97925fe9ef6ef71e2493993e.png amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; data-rawwidth= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;1835 amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; data-rawheight= amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;708 amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; >

下面总结一下state , action, reward的获取方式:amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。lt。img src= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。static . leiphone/uploads/new/article/pic/201708/9f 2384 ee 97925 Fe 9 ef 6 ef 71 e 2493993 e . png amp;amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。数据-rawwidth= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。1835安培。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。数据-rawheight= amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。708安培。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。amp。quot。>下面总结了状态、动作、奖励的获取方法:

《星际争霸2》人工智能研究环境 SC2LE 初体验

(1)状态,即各种特征图,通过OBS获得。观察[“屏幕”][特征图名称]

(2)可使用的动作通过OBS获得。观察[“可用的动作”]

(3)通过obs.reward获得的报酬。

知道了rl的关键信息,我们就可以编写rl代码来玩星际争霸2的小任务了。

值得注意的是,《星际争霸2》的动作非常复杂,pysc2将这些动作封装成带参数的函数。例如,上面的移动动作需要目标位置的二维参数。因此,如果输出动作是一个复杂的问题。在官方文件中,使用了从回归到自回归的方法,即先输出运动动作,然后在此基础上输出目标,从而形成一个完整的动作,最后输出。

《星际争霸2》人工智能研究环境 SC2LE 初体验

5.本文给出了sc2le的初步经验,包括rl开发的安装、测试和代码研究。总的来说,深度思维和暴雪在编码方面做得很好。sc2le具有以下优势:

api被很好地打包,所以开发rl非常方便

特征图信息是直接提供的,以便于使用卷积神经网络。

跨平台支持,特别是对于linux平台,对于深入学习的开发者来说非常方便。

提供回放数据库和回放界面为模仿学习的研究提供了极大的便利。

提供迷你游戏,方便每个人从简单开始。

提供阶梯图是为了满足每个人挑战困难的愿望!

总的来说,sc2le确实是一个非常友好的研究平台,值得大家研究。我也相信未来会有越来越多的人工智能玩星际争霸2的成果问世!

雷锋文章版权所有。严禁擅自转载。详情请参考转载说明。

标题:《星际争霸2》人工智能研究环境 SC2LE 初体验

地址:http://www.hcsbodzyz.com/hcxw/5712.html