人工智能辅助电子游戏设计研究与实现

发布时间:2024-01-16 13:02:53 浏览量:201次

前言

伴随着2021年以来元宇宙的异军突起,相关研究得到了学术界和工业界的广泛关注,迅速成为各界关注的焦点话题

作为游戏人工智能中不可缺少的一个环节,寻路已经成为影响游戏最终效果的一大重要因素。另一方面,在游戏的设计环节中,难度设置是否合理对于游戏的用户体验起着至关重要的作用。

蒙特卡洛树

蒙特卡洛方法是一种基于概率的数值计算方法,又被称作计算机随机模拟方法,强化学习是机器学习的一种重要方法,蒙特卡洛树搜索作为强化学习中一种常见算法。

它通过不断在决策空间中选取随机样本来构建和更新搜索树,选择:蒙特卡洛树在进行节点选择时利用UCB选取需要访问的节点。扩展:当访问节点为叶节点时,会判断当前节点是否已被访问过,如果已被访问过,则将当前节点接下来所有可能的动作列为当前节点的子节点。

在完成以上全部环节后,蒙特卡洛树会通过计算概率的方式判断节点的好坏,并在选择时优先选择胜率较高的节点。

2015年,DeepMind设计了基于MCTS和CNN的AlphaGo算法[35],随后在比赛中击败了人类顶级玩家。从逻辑上,蒙特卡洛搜索树的搜索过程十分简单,通过不断地模拟、反向传播来构建生成搜索树。

从游戏类型上,蒙特卡洛树适用于像围棋,迷宫这样的在有限步数内可以解决的问题,进行路径搜索,其中f(n)代表从路径起点到达路径终点的预计总消耗g(n)代表从路径起点到达人物当前位置的路径消耗,曼哈顿距离是标准A*算法中最常被使用到的距离表示方法之一。

假设地图中相邻两个网格的距离为1,曼哈顿距离规定。

在本文中,我们用欧氏距离来代表距离。人工势场法是一种基于势场的局部寻路算法,常用在机器人寻路及避障中。

人工势场法存在目标点不可达的问题。在人工势场中通常障碍物位置的分布并不均匀,可能会存在目标点的旁边分布有障碍物的情况。

针对这个问题,可以采用当游戏智能体接近目标点时,改变游戏智能体所受斥力函数,使智能体所受斥力小于引力的方式加以解决。

基于A*算法的改进版路径生成算法

A*寻路算法作为启发式寻路算法的代表虽然整体寻路效率相较以往传统的盲目式寻路得到了较大提升,对于OpenList列表的操作。寻路路径过于机械。

由于A*算法寻路的结果是以节点为单位的,由于A*寻路算法每轮访问时都需要遍历OpenList,从Openlist中选取F值最小的节点进行遍历并将该节点从中删除。A*寻路算法每轮选择需要遍历的节点时都要访问Openlist,在进行节点插入时,每次会根据插入节点值的大小从根节点开始向下寻找其应该处于的位置并插入该节点。

而在进行节点删除时,由于在使用Openlist时,我们仅需要距离值最小的节点作为每次访问节点,为了检验改进存储结构后的A*算法寻路效果,我们在一张由20*20个节点组成的地图上对其进行了验证。

针对上述寻路路径过于机械的问题,本文通过将A*算法同人工势场法结合的方式进行改进。将改进后的人工势场法同A*算法结合后,可以通过由A*算法事先计算所得的全局路径为其提供全局指引,由于A*算法在整体路径搜索过程中起到的作用是提供一条全局路径作为指引。

因此首先应用A*寻路算法进行全局寻路,在计算全局路径给寻路体带来的引力时,首先找到从当前节点到全局路径最近的位置,具体做法是从全局路径的初始节点开始迭代。

值得一提的是,上述算法在真实游戏环境中运行时不同于测试环境的重要一点在于,在测试环境中进行测试时,我们只会进行一次全局路径搜索并用此结果为寻路提供指引。

此外,在一些即时策略类游戏如皇室战争中,不同卡牌角色对于寻路的要求会有所不同,如像“巨人”角色一旦确定目标就不会改变。

此外,在一些即时策略类游戏如皇室战争中,不同卡牌角色对于寻路的要求会有所不同,如像“巨人”角色一旦确定目标就不会改变,标准A*算法以节点为单位进行寻路,其找到的路径虽然是所有节点路径中最快的一条。

我们还将改进后的算法同标准人工势场法进行了对比,我们同样在一张31*31的二维平面中进行实验,用蓝色线条代表改进后的算法路径,红色线条代表标准人工势场法的路径。

从上述实验结果可以发现,结合A*算法和人工势场法之后的算法相较单纯的A*算法和人工势场法寻路效果均得到了明显提升。

从上述实验结果可以发现,结合A*算法和人工势场法之后的算法相较单纯的A*算法和人工势场法寻路效果均得到了明显提升。在游戏未发布阶段由于要对游戏难度进行分析,往往需要提前预测难度。

鉴于机器学习在游戏领域的良好运用,我们以迷宫游戏为例对蒙特卡洛树在具体游戏中的应用加以分析。在迷宫类游戏中,寻路点到终点的距离是影响最终模拟效果的一大重要因素。

我们以迷宫游戏为例对蒙特卡洛树在具体游戏中的应用加以分析。在迷宫类游戏中,寻路点到终点的距离是影响最终模拟效果的一大重要因素,针对改进版蒙特卡洛算法,本文通过一个迷宫游戏验证其能否提高游戏智能体在模拟时的成功率。

第一阶段实验分为障碍物数量较多及较少两种情况进行。每次实验重新选择起点和终点然后分别在两种情况下各自进行实验并对比成功率。通过本阶段实验数据可以得到,在障碍物较少的情况下,UCB改进效果较好,有九次模拟成功率优于未改进之前。

通过本阶段实验可以得到,在寻路距离较近的情况下,UCB改进效果较好,有七次模拟成功率优于未改进之前。

实验结束后,我们对产生上述结果的原因进行了分析。从结论可以看出,改进后蒙特卡洛树的整体模拟效率相较改进之前有所提升,为验证改进MCTS后数据是否有效,本文将经上述过程得到的数据通过卷积神经网络进行了训练,其中黑色节点代表障碍物,黄色代表起点,绿色代表终点。

在使用训练集完成训练后,利用训练好的模型对预测集中图像进行预测。在制作训练集时,将同一张地图看作一个训练集。本章针对在游戏未发布阶段分析游戏难度过程中,采用卷积神经网络进行难度分析时,由MCTS模拟所得训练数据成功率较低。

三维游戏场景动态实现

闯关迷宫游戏是一款基于Unity3D引擎设计与实现的单机游戏,使用C#进行游戏开发,由于本游戏中玩家在不同关卡面对的游戏地图都不相同,因此在游戏开始之初需要对各关卡难度进行衡量,方便后续关卡设置。

玩家在游戏中的视角如下图所示,游戏界面由三部分构成,分别是墙体、障碍物以及普通地面,其中墙体中包含一个特殊的节点,为终点位置。游戏的规则是每轮游戏玩家需要从起点出发,在规定的时间内获得足够的积分并找到迷宫的出口方能取得胜利。

该迷宫游戏共分为两种模式,分别是传统模式及闯关模式。在传统模式中,玩家每局的积分都从零开始,玩家在一局比赛失败后可以选择重新开始本局游戏。

除以上常规设置外,本文还在游戏中设置了一些道具用于增加游戏的趣味性。游戏中设置了一些精美的工具,例如能量获取瓶可以增加玩家的血量,为了更好地提升游戏效果,本文在多处运用到了动画系统。在敌人动画上,敌人包括多个状态,在寻路方面,本迷宫游戏中共包含两种角色,玩家角色及敌人角色。

玩家角色通过玩家使用键盘控制前后左右移动,鼠标控制转向,P键及空格键控制下蹲及跳跃。

“迷宫闯关”游戏的游戏规则看似简单,但在游戏进入到高关卡阶段时往往会有很强大的boss出现,一旦玩家陷入到同boss的争斗中难以摆脱,本章使用Unity3D开发工具作为引擎,设计出一个适合检验改进后算法的迷宫游戏,对前两章提出的改进版A*寻路算法及难度分析算法加以使用。

总结

游戏难度的设置是否合理对于玩家的游戏体验起着至关重要的作用。过高或过低的难度设置很有可能会导致玩家在游戏过程中感到沮丧或是无聊,进而导致玩家因不好的用户体验而退出游戏。

作为游戏人工智能中不可缺少的一大重要环节,寻路已经成为影响游戏最终效果的一大重要因素,提出了一种基于传统A*算法的改进版游戏路径生成算法。

热门课程推荐

热门资讯

请绑定手机号

x

同学您好!

您已成功报名0元试学活动,老师会在第一时间与您取得联系,请保持电话畅通!
确定