ELF是一个用于游戏研究的应用广泛的(Extensive)、轻量级的(Lightweight)、灵活的(Flexible)平台,特别适用于实时战略(RTS)游戏。在C++方面,ELF采用C++线程来并发运行多个游戏。在Python方面,ELF可以一次性返回一批游戏状态,使其对现代RL(强化学习)非常友好。另一方面,在其他平台(例如OpenAI Gym)中,一个Python接口只能包含一个游戏实例。这使得游戏的并发运行有点复杂,而这又是许多现代强化学习算法的要求。
对于RTS游戏的研究,ELF配备了一个快速的RTS引擎,以及三个具体的实例环境:MiniRTS、抢旗帜和塔防。 MiniRTS具有实时战略游戏的所有关键特点,包括收集资源、建筑设施和部队、侦察可感知地区以外的未知地区、防御或攻击敌人。用户可以访问其内部表现形式,并可以随意更改游戏设置。
ELF具有以下几个特点:
elf
下的代码用于处理并发仿真,与游戏无关。atari
包含了游戏Atari(需要ALE)的Python包装器和模型。rts/engine
包含了RTS引擎。rts/game_MC
、 rts/game_CF
和 rts/game_TD
是基于此引擎构建的三个游戏。初始化代码如下所示:
主循环也很简单:
依赖
需要使用支持C++ 11的C++编译器(例如,gcc 4.9)。依赖以下库:
参考文献
在你使用ELF的时候,请参考arXiv的相关文章(https://arxiv.org/abs/1707.01067)。