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

25 阅读2分钟

DOOM游戏强化学习训练项目

本文开一个新坑,讲一个很火的强化学习训练游戏的训练环境游戏DOOM。


前言

本文将讲述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进行游戏。