【Pysc2】Deepmind Pysc2 环境配置及其踩坑记录

1. 下载星际争霸II游戏

  可以直接下暴雪战网,然后在战网内下载。

2. 下载Pysc2

cmd后在命令行输入 

pip install pysc2

3. 下载sc2

cmd后在命令行输入 

pip install sc2

4. 下载地图

https://github.com/ClausewitzCPU0/SC2AI

解压密码: iagreetotheeula (表示自己同意最终用户许可协议)

解压在Maps的文件夹,我是使用的暴雪战网下载的游戏,发现游戏文件夹里并没有Maps, 需要自己手动创建。

如图:

5. 添加环境变量

将星际争霸II游戏的路径添加进环境变量,如图:

6. 测试一下

几个简单的测试指令: 

python -m pysc2.bin.agent –map Simple64 

 加载后效果:

 

踩坑记录:

1. pip install 下载超时

解决办法: pypi源默认为国外源,经常被墙导致不可用,所以安装软件时pip源最好更换为国内资源 

                   pip install -i https://pypi.tuna.tsinghua.edu.cn/simple + 包名

2. 没有找到Maps 文件夹

解决办法: 手动创建,PS: 录像文件——replay是在文档下的Starcraft 和游戏的安装目录不是一个, 一开始我弄错了,不过发现文档里是需要用户名的,就知道不是这个文件夹了。

3. 没有下载pygame

解决办法:这个pysc2似乎是基于pygame的 所以下载之前先要确保安装了pygame 否则就不行。

转载于:https://www.cnblogs.com/tao-zhu-forever/p/11305152.html

Pysc2是一个用于创建人工智能星际争霸2(StarCraft II)理程序的Python库。它允许您通过Python代码与StarCraft II进行交互,并使用Python编写的算法来控制游戏单位。以下是一个简单的Pysc2示例,展示如何使用Pysc2库来控制星际争霸2游戏单位: ```python import numpy as np import cv2 import time import pysc2 from pysc2 import maps from pysc2.lib import actions from pysc2.lib import features # 加载StarCraft II地图 pysc2.maps.get("Simple64") # 定义动作和特征 FUNCTIONS = actions.FUNCTIONS FEATURES = features.features_from_game_version(game_version=pysc2.maps.get("Simple64").game_version) # 定义代理类 class SimpleAgent(pysc2.agents.Agent): def __init__(self): super(SimpleAgent, self).__init__() self.attack_coordinates = None def step(self, obs): super(SimpleAgent, self).step(obs) # 如果没有准备好攻击坐标,则选择一个 if self.attack_coordinates is None: player_relative = obs.observation["screen"][features.SCREEN_FEATURES.player_relative.index] x, y = (player_relative == features.PlayerRelative.ENEMY).nonzero() target = [x.mean(), y.mean()] self.attack_coordinates = target # 如果可以攻击,则攻击 if FUNCTIONS.Attack_screen.id in obs.observation["available_actions"]: player_relative = obs.observation["screen"][features.SCREEN_FEATURES.player_relative.index] x, y = (player_relative == features.PlayerRelative.ENEMY).nonzero() if not y.any(): return FUNCTIONS.no_op() target = [x[0], y[0]] return FUNCTIONS.Attack_screen("now", target) # 如果无法攻击,则移动到攻击坐标 player_relative = obs.observation["screen"][features.SCREEN_FEATURES.player_relative.index] x, y = (player_relative == features.PlayerRelative.SELF).nonzero() if not x.any(): return FUNCTIONS.no_op() player = [int(x.mean()), int(y.mean())] if self.attack_coordinates is not None: return FUNCTIONS.Move_screen("now", self.attack_coordinates) return FUNCTIONS.no_op() # 运行代理 agent = SimpleAgent() try: while True: with sc2_env.SC2Env( map_name="Simple64", players=[sc2_env.Agent(sc2_env.Race.terran)], agent_interface_format=features.AgentInterfaceFormat( feature_dimensions=features.Dimensions(screen=84, minimap=64), use_feature_units=True), step_mul=16, game_steps_per_episode=0, visualize=True) as env: # 运行一局游戏 agent.setup(env.observation_spec(), env.action_spec()) # 重置游戏环境 timesteps = env.reset() agent.reset() # 运行游戏 while True: step_actions = [agent.step(timesteps[0])] if timesteps[0].last(): break timesteps = env.step(step_actions) except KeyboardInterrupt: pass ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值