PySC2 教程项目文档

PySC2 教程项目文档

pysc2-tutorialTutorials for building a PySC2 bot项目地址:https://gitcode.com/gh_mirrors/py/pysc2-tutorial

1、项目介绍

PySC2 是 DeepMind 开发的星际争霸Ⅱ学习环境(SC2LE)的 Python 组件。它封装了 Blizzard Entertainment 的星际争霸Ⅱ机器学习 API,提供了一个增强学习环境。pysc2-tutorial 项目是由社区成员维护的教程集合,旨在帮助开发者快速上手并构建自己的星际争霸Ⅱ机器人。

2、项目快速启动

安装依赖

首先,确保你已经安装了 Python 和 pip。然后,通过以下命令安装 PySC2 和 TensorFlow:

pip install pysc2
pip install tensorflow

克隆项目

克隆 pysc2-tutorial 项目到本地:

git clone https://github.com/skjb/pysc2-tutorial.git
cd pysc2-tutorial

运行示例

项目中包含多个示例,你可以通过以下命令运行一个基本的代理:

python run_agent.py

3、应用案例和最佳实践

构建基本代理

项目中的 Building a Basic Agent 模块展示了如何构建一个简单的星际争霸Ⅱ代理。通过学习这个模块,你可以了解如何与游戏环境交互,并执行基本的动作。

强化学习代理

Building a Simple Reinforcement Learning Agent 模块介绍了如何使用强化学习技术来训练你的代理。这个模块包含了如何设置奖励函数和训练循环的详细步骤。

智能攻击代理

Add Smart Attacking to Your Agent 模块展示了如何为你的代理添加智能攻击策略。通过学习这个模块,你可以让你的代理在战斗中更加智能和高效。

4、典型生态项目

OpenAI Baselines

OpenAI Baselines 是一个强化学习算法的高质量实现集合,可以与 PySC2 结合使用,提供更强大的训练工具和算法支持。

TensorFlow

TensorFlow 是一个广泛使用的机器学习框架,与 PySC2 结合可以实现复杂的神经网络模型,用于更高级的代理训练。

SC2LE

SC2LE(StarCraft II Learning Environment)是 DeepMind 和 Blizzard 合作开发的星际争霸Ⅱ学习环境,PySC2 是其核心组件之一,提供了丰富的 API 和工具,帮助开发者构建和测试他们的代理。

通过结合这些生态项目,你可以构建出更加强大和智能的星际争霸Ⅱ代理。

pysc2-tutorialTutorials for building a PySC2 bot项目地址:https://gitcode.com/gh_mirrors/py/pysc2-tutorial

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
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
发出的红包

打赏作者

金斐茉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值