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

ELF是一个用于游戏研究的应用广泛的(Extensive)、轻量级的(Lightweight)、灵活的(Flexible)平台,特别适用于实时战略(RTS)游戏。在C++方面,ELF采用C++线程来并发运行多个游戏。在Python方面,ELF可以一次性返回一批游戏状态,使其对现代RL(强化学习)非常友好。另一方面,在其他平台(例如OpenAI Gym)中,一个Python接口只能包含一个游戏实例。这使得游戏的并发运行有点复杂,而这又是许多现代强化学习算法的要求。

对于RTS游戏的研究,ELF配备了一个快速的RTS引擎,以及三个具体的实例环境:MiniRTS、抢旗帜和塔防。 MiniRTS具有实时战略游戏的所有关键特点,包括收集资源、建筑设施和部队、侦察可感知地区以外的未知地区、防御或攻击敌人。用户可以访问其内部表现形式,并可以随意更改游戏设置。

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代码结构如下。

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

基本用法

下面是ELF的伪代码。

初始化代码如下所示:

主循环也很简单:

依赖

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

参考文献

在你使用ELF的时候,请参考arXiv的相关文章(https://arxiv.org/abs/1707.01067)

原文发布于微信公众号 - CSDN技术头条(CSDN_Tech)

原文发表时间:2017-07-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python中文社区

数据挖掘实战(一):Kaggle竞赛经典案例剖析

專 欄 ❈那只猫,Python中文社区专栏作者,Python中文社区新Logo设计者,现就读于英国剑桥大学。 ❈— Load Lib ? 在这边提一下为什么要...

34770
来自专栏二进制文集

思维导图学 Maven

14920
来自专栏华章科技

【PPT】企业级大数据平台实践之路

转载文章均来自公开网络,仅供学习使用,不会用于任何商业用途,如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜,联系邮箱:holly0801@163.c...

8820
来自专栏AI研习社

问答 | 请问有没有好的可以根据关键词提取文章摘要的开源项目?要支持中文的。

14830
来自专栏机器之心

教程 | 如何利用Google Colab免费训练StarCraft II

24770
来自专栏AI科技评论

开发 | 如何在Kaggle中高效搜索数据集?快吃下这枚安利

AI科技评论按:对于关注数据科学的同学来说,Kaggle上庞大的数据集是一个极好的资源池,但是这么多的数据,如何进行更精准的搜索?近日,Kaggle官方博客就刊...

39690
来自专栏华章科技

图说:我们产生的大数据在哪里

转载文章均来自公开网络,仅供学习使用,不会用于任何商业用途,如果出处有误或侵犯到原作者的权益,请与我们联系删除或授权事宜,联系邮箱:holly0801@163....

7720
来自专栏吉浦迅科技

DAY27:阅读多处理器

16330
来自专栏听雨堂

MapX5说明

把绘图功能嵌入到用户应用中的最简单、最经济的方法。 MAPINFO MAPX 是强大的ACTIVEX 组件 – 使用标准可视化程序工具可以很容易就整合到商业应...

21550
来自专栏BeJavaGod

公开课:分布式架构的演变过程

之前分享的一节公开课, 目前dubbo已经在录制中,预计本月底或下月初的样子会上 同时zookeeper也会同步推出 ?

399110

扫码关注云+社区

领取腾讯云代金券