Doom枪战游戏ai制作 深度强化学习项目(1)环境、建立对象及随机动作展示

DOOM游戏强化学习训练项目

本文开一个新坑,讲一个很火的强化学习训练游戏的训练环境游戏DOOM。
其他强化学习项目:超级马里奥ai



前言

本文将讲述DOOM库的安装和镜像文件的安装,以及项目实体对象的建立和初始化操作。


一、环境安装

1.库安装

pip install vizdoom

注意,也需要pytorch、gym等常用库,不清楚可以查看库安装参考1库安装参考2

2.镜像文件安装

要使用doom,我们需要安装镜像包ViZDoom。
打开网址doom安装链接
Alt
按照图示方法下载ZIP并解压,注意,请记住路径。

二、设置对象和初始化

1.部分镜像信息介绍

代码如下(示例):

在这里插入图片描述打开镜像文件scenarios中的basic.cfg,可以看到如下代码

available_buttons =
	{
		MOVE_LEFT
		MOVE_RIGHT
		ATTACK
	}

这实际上就是用矩阵来控制人物动作,比如:0 0 1攻击 1 0 0 向左移动,后续的代码需要有这个理解基础。

2.库导入和初始代码

1)基本环境设置

from vizdoom import *
import time
game = vizdoom.DoomGame()
game.init()
time.sleep(100)

有error,但不妨碍运行,运行结果如下

Alt

2)解决1中的error问题

如果你是强迫症,你就会知道为什么能跑我还想把这个error去掉。我们发现error为未解析的引用 'vizdoom',这是为什么呢?
我们去vizdoom官网找,官方文档是这么写的

import vizdoom as vzd
game = vzd.DoomGame()

那么我们按以下这么写就没问题了。

import vizdoom
game = vizdoom.DoomGame()

3)初始化设置与随机操作展示

a)镜像导入

我们先要载入之前展示过的basic文件
请自己输入自己的镜像文件地址

VizDoom_basic_cfg = r"C:/Users/tttiger/Desktop/ViZDoom-master/ViZDoom-master/scenarios/basic.cfg"
game = vizdoom.DoomGame()
game.load_config(VizDoom_basic_cfg)
game.init()

这样可以加载我们的场景和动作。

b)设置动作矩阵

我们上面说到,在Doom中,动作是用0001这样的矩阵控制的,我们可以这样初始化。

actions = numpy.identity(3,dtype=numpy.uint8)

numpy的identity函数是用于创建对角矩阵,dtype是指矩阵中元素的类型。
因此我们有了矩阵
1 0 0
0 1 0
0 0 1
然后我们就可以使用random.choice(actions)实现随机动作了。

c)完整代码
from vizdoom import *
import vizdoom
import random
import time
import numpy
VizDoom_basic_cfg = r"C:/Users/tttiger/Desktop/ViZDoom-master/ViZDoom-master/scenarios/basic.cfg"
game = vizdoom.DoomGame()
game.load_config(VizDoom_basic_cfg)
game.init()

actions = numpy.identity(3,dtype=numpy.uint8)

episodes = 10
for episode in range(episodes):
    game.new_episode()
    while not game.is_episode_finished():

        reward = game.make_action(random.choice(actions),4)
        time.sleep(0.02)
    time.sleep(2)
game.close()    

在这里插入图片描述
就能有如上的效果。下一篇将讲述如何训练强化学习ai进行游戏。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值