EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1316|回复: 0

[应用] Facebook开源游戏平台ELF:一个用于实时战略游戏研究的轻量...

[复制链接]

28

主题

746

金钱

2923

积分

中级用户

发表于 2017-7-11 15:46:54 | 显示全部楼层 |阅读模式
ELF是一个用于游戏研究的应用广泛的(Extensive)、轻量级的(Lightweight)、灵活的(Flexible)平台,特别适用于实时战略(RTS)游戏。在C++方面,ELF采用C++线程来并发运行多个游戏。在Python方面,ELF可以一次性返回一批游戏状态,使其对现代RL(强化学习)非常友好。另一方面,在其他平台(例如OpenAI Gym)中,一个Python接口只能包含一个游戏实例。这使得游戏的并发运行有点复杂,而这又是许多现代强化学习算法的要求。
对于RTS游戏的研究,ELF配备了一个快速的RTS引擎,以及三个具体的实例环境:MiniRTS、抢旗帜和塔防。 MiniRTS具有实时战略游戏的所有关键特点,包括收集资源、建筑设施和部队、侦察可感知地区以外的未知地区、防御或攻击敌人。用户可以访问其内部表现形式,并可以随意更改游戏设置。

1.jpg

ELF具有以下几个特点:
  • 广泛性:任何具有C/C++接口的游戏都可以通过编写一个简单的包装器来嵌入到这个框架中来。例如,我们已经将Atari游戏结合到我们的框架中,并可以看到每个核心的模拟速度与单核版本相当,因此这比使用多处理器或Python多线程的实现要快得多。
  • 轻量级:ELF运行速度非常快,开销很小。基于RTS引擎的简单的游戏(MiniRTS)在MacBook Pro上运行的话,每个核可以跑出每秒40K帧的速度。如果是从头开始训练一个模型,则使用6个CPU和1个GPU需花费一天的时间。
  • 灵活性:环境和actor(演员,译者注:可以理解为执行某些固定操作的独立单元)之间的搭配非常灵活,例如,一个环境对应一个代理(例如Vanilla A3C)、一个环境对应多个代理(例如自动播放/MCTS)的,或多个环境对应一个actor的(例如, BatchA3C、GA3C)。此外,任何构建在RTS引擎顶层的游戏都可以完全访问其内部表示和动态。除了高效的模拟器,我们还提供了一个轻巧而又强大的强化学习框架。该框架可以承载大多数现有的RL算法。在这个开源版本中,我们提供了用PyTorch编写的最先进的Actor-Critic(演员-评判家)算法。

代码结构ELF代码结构如下。 2.jpg
  • 文件夹elf下的代码用于处理并发仿真,与游戏无关。
  • 文件夹atari包含了游戏Atari(需要ALE)的Python包装器和模型。
  • 文件夹rts/engine包含了RTS引擎。rts/game_MC、 rts/game_CF 和 rts/game_TD是基于此引擎构建的三个游戏。

基本用法下面是ELF的伪代码。
初始化代码如下所示: 3.png

主循环也很简单: 4.jpg

依赖
需要使用支持C++ 11的C++编译器(例如,gcc 4.9)。依赖以下库: 5.png


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

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 ) 

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表