python-sc2 星际争霸2接口的运行-随笔_人工智能


为了开始编写我的智能体(Agent),我决定先从资料比较多的星际争霸2来入手。

下载游戏

由于我弄的时候网易暴雪还没复合,我是通过下载国服程序+注册国际服账号登入的(其实好像用不上,sc2py是打开地图编辑器形式单机运行……我还想让我写的ai代替我与我的高中同学对战呢,但貌似不行)

下载代码、地图

  代码源:

 google-deepmind/pysc2: StarCraft II Learning Environment (github.com)

python-sc2 星际争霸2接口的运行-随笔_github_02

 https://github.com/google-deepmind/pysc2

地图源:

 Blizzard/s2client-proto: StarCraft II Client - protocol definitions used to communicate with StarCraft II. (github.com)

python-sc2 星际争霸2接口的运行-随笔_github_02

 https://github.com/Blizzard/s2client-proto#downloads

配置环境

安装sc2包
$ pip install pysc2
  • 1.
放置地图

把上面“地图源”的地图下载并解压到星际的Maps文件夹即可被sc2包找到(密码在声明里写了,是iagreetotheeula)

不同的样例代码中使用的地图名是不一样的(对于不同地图你的策略编写也是不同的)。比如bot_vs_bot.py 这个脚本,用的就是"AcropolisLE"地图,星际2的Maps文件夹中没有就会报错。(碎碎念:Maps文件夹……想起了自己高中玩魔兽地图编辑器的时候……)

def main_old():
    result: List[Result] = run_game(
        maps.get("AcropolisLE"),
        [
            Bot(Race.Protoss, WarpGateBot()),
            Bot(Race.Zerg, ZergRushBot()),
        ],
        realtime=False,
......
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

运行

直接用vscode执行代码会报错

No module named 'examples'

File "F:\games\Battle.net\Agent\python-sc2-develop\examples\bot_vs_bot.py", line 11, in <module> from examples.protoss.warpgate_push import WarpGateBot ModuleNotFoundError: No module named 'examples'

python-sc2 星际争霸2接口的运行-随笔_人工智能_04

说白了就是python包的路径没找对,我上面注释的那两行解开注释就行了,就是把代码的根目录加上,作为寻找的路径

import sys
sys.path.append('F:/games/Battle.net/Agent/python-sc2-develop')
  • 1.
  • 2.

 然后就能看见星际2的窗口化执行了。