当前位置: 首页 > 资讯

【原创】游戏打烦了?换AI打!10个有趣的AI游戏项目

论智       2017-11-06

刚刚结束的暴雪嘉年华,暴雪终于公了大家期待已久的魔兽世界官方怀旧服,宣布未来会为魔兽世界提供“怀旧”(Classic)选项。虽然说怀旧服目前还在开发中,具体上线时间和玩法未知,但是,好歹有个盼头了不是。


嘉年华上,暴雪CEO亲自公布了星际争霸2的更新:加入新的合作任务指挥官,以及美国时间11日15日免费开放,玩家可免费畅玩星际争霸2所有多人游戏、所有合作任务指挥官以及完整的第一个单人游戏战役故事。


这些重磅利好,不知道能不能吸引某些厌倦了魔兽和星际的AFK玩家回归呢?其实厌倦了的话,除了AFK,还可以换种打法——用AI来打游戏。


艾露恩之光


中国的晟一凭借作品《艾露恩之光》获得本届嘉年华Fanart冠军

暴雪为星际2提供了完善的API,可用于:


脚本机器人

基于机器学习的机器人

录像分析

游戏辅助工具

星际2API通过websocket通讯,使用为封装好的基于protobuf定义的协议。理论上,下载安装了平台对应的星际2客户端,就可以直接编写程序访问API协议,但一般大家还是使用暴雪官方的C++库或者第三方库:


Python Google的DeepMind团队出品的PySC2

C#/F#/VB.NET 基于.NET平台的s2client-dotnet

魔兽的官方怀旧服大家暂时还玩不到。不过,想怀旧的话,可以玩下星际争霸1:母巢之战,当然,也是用AI玩。BWAPI是一个第三方开发的星际1母巢之战C++框架,基于BWAPI可开发针对星际1的AI机器人。除了开发AI机器人,BWAPI还可以用于分析录像。BWAPI自带的样例比较简单,如果想了解下实际的项目是什么样的,可以看一下UAlbertaBot这个项目。UalbertaBot是基于BWAPI编写的AI机器人,曾在2010年度的AIIDE星际AI争霸赛中获得冠军。如果更习惯使用Java语言,那可以使用BWMirror,BWAPI的Java封装。


如果想同时玩星际1和星际2的话,可以看看CommandCenter。CommandCenter整合了BWAPI和暴雪官方星际2 API,允许开发者编写同时适用于星际1母巢之战和星际2的代码。


除了星际,其他即时战略类游戏也可以用AI玩。Facebook开源了主要针对即时战略游戏的ELF机器学习框架。ELF的名字取义 Extensive(可扩展),Lightweight (轻量)和 Flexible(灵活)。ELF的主要特色是并行支持。在C++层面,ELF使用C++线程同时运行多个游戏实例,在Python层面,ELF一次返回一组(batch)游戏状态,适合现代的增强学习。


除了并行支持以外,ELF的扩展性也很好。只需编写一个简单的封装程序,任何基于C/C++接口的游戏都可以接入ELF。比如,ELF团队已经并入了雅达利游戏。


机器学习领域对雅达利游戏的研究很多,其中经典的一篇论文是Google的DeepMind发表在Nature上的深度强化学习论文《Human-level control through deep reinforcement learning》。其中使用了基于Lua的深度强化学习框架DQN 3.0。这个框架DeepMind已经开源出来,感兴趣的可以看看。DQN代码量在2千行以下,比较简单,相比其他业界实际使用的框架,可读性更好。因此,除了用来重现DeepMind的论文以外,还可以用来入门深度强化学习框架的实现。


上面介绍了很多AI玩即时战略游戏的项目,其实AI玩其他类型的游戏也一样拿手。Gyroscope就用强化学习算法玩街霸,在面对街头霸王2的3星评定对手时胜率超过90%,而且不偏科,擅长所有角色。


最后,友情提醒,很多游戏需要强劲的显卡才带得动,深度学习也需要强劲的显卡哦。如果打算添置或升级显卡,可以参考深度学习入门该怎么选显卡。


机器人网原创文章,未经授权禁止转载。详情见转载须知

本文来自机器人网,如若转载,请注明出处:https://www.jqr.com/news/008475