请选择 进入手机版 | 继续访问电脑版

微信邦

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

返回列表 发新帖
查看: 450|回复: 0

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

[复制链接]
发表于 2018-5-10 09:35:01 | 显示全部楼层 |阅读模式
生活圈制作
来源 / 品质管理部
编辑 / Coding学院

| 导语 本文采用机器学习算法来定量分析游戏中角色最佳属性,从而在给定战力(或属性点)情况下得到该角色最强属性。在对20位角色的实验分析中发现,本方法能有效提升角色强度,使角色在相同战力情况下的平均胜率由56%提升至96%。本方法能为玩家提供角色推荐升级策略,降低了玩家的游戏成本,提升游戏体验。此外,本方法能明确给出不同属性对角色成长的重要性,能为策划对角色调整提供参考。最后,本方法还能作为一种角色定位验证机制,来检验角色在游戏中的具体表现是否与角色最初定位存在偏差,降低游戏开发成本。

1、引言

在大多数游戏中都涉及到对角色属性升级问题。如下图1所示:

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

图1.  几款游戏中角色属性提升界面(图片来自互联网,若不小心冒犯,请企业微信我啊)

玩家可以使用游戏中获得的战力(或属性点)对来对角色进行属性升级从而强化角色。然而,大多数玩家对游戏角色理解不够深刻,再加上游戏中不同角色所侧重的属性各不相同(如攻击型角色更倾向于获得高攻击和高敏捷,而防御型角色更适合高防御和高生命值),这导致玩家需要较长的游戏适应时间,增加了玩家的游戏成本,一定程度上影响游戏体验,甚至会导致新玩家大量流失。

对于游戏策划而言,角色属性设定往往需要一定的经验以及自身对角色定位的理解。目前基于人工试错的方法来设计角色属性不仅对策划要求较高,还具有较高的试错成本(需要将角色上线,并通过人工测试才能发现角色属性是否合理),影响游戏的设计和开发进度。

此外,角色在游戏中的真实定位可能会与其设计之初的定位存在一定偏差,而这中偏差需要通过大量用户数据才能表现出来,这使得其在游戏初期往往很难被发现。而角色定位的偏差会影响到游戏平衡,从而影响游戏体验。

为了解决上述三个方面的问题(即1.玩家对角色属性设置的迷茫,2. 角色属性设置影响游戏开发的进度,3.人工难以检测角色定位的偏差),本文采用机器学习算法分析角色模拟数据,从而确定角色属性的最佳配比以及该角色在游戏中的真实定位。本文方法不仅可以1)为玩家提供推荐角色属性设置;2)还可以为游戏策划提供角色属性的定量分析,方便策划快速调整角色数值设置,从而提升游戏开发效率;3)能检测角色定位是否存在偏差,提升游戏整体用户体验。

为了验证本方法的有效性,我们在一款MMORPG游戏中对20个角色进行属性分析,通过模拟对战发现本方法能显著提升角色强度,使角色的平均胜率从原来56%提升到96%。此外,本方法还成功检测出两位角色的定位偏差,从而帮助策划调整了该角色的定位。

本文后续章节安排如下:第2节将介绍本文要解决的问题;第3节将详细描述如何通过游戏SDK生成训练的数据;第4节将简要介绍本文采用的模型;第5节是实验结果与分析;最后第6节将对本文方法做相应总结。

2、问题描述

本文以一款MMORPG游戏(由于某些原因,游戏的具体信息不能透露,请各位见谅)的角色属性分析为例来阐述本方法。在游戏过程中,玩家会获得一定战力,用于升级角色属性来强化角色。战力对不同属性具有不同的转换系数,表1给出了战力与各属性的转换关系,其中最低占比和最高占比表示该属性最低和最高所能分配的战力百分比。表1中列出的数值(数据是我随便写的[emoji])只是为了方便说明,不是游戏的真实数值。从表中可以看出,各角色的主属性(Hp、Atk、Def和Agility)在角色强化过程中必须有一定的占比(至少占5%的战力)。而副属性则可以根据角色的定位来确定是否需要强化。表2给出了在20000战力情况下,角色属性的战力占比以及所能转换的属性值。

表1.  战力所能转换的属性值,以及各属性所能分配的最高和最低战力占比(表格中的数值只是为了方便说明,并非游戏的真实数值)

表2.  在战力为20000时,各属性对应属性值(当然,具体数值也我造的)

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

基于以上描述,我们可以将确定角色最佳属性问题转换成确定角色各属性的战力占比。本方法具体流程如图2所示,模型分析阶段通过机器学习算法来分析角色的对战数据(在第3节会具体讲如何生成对战数据),并确定属性的最佳战力占比。在模型应用阶段,根据给定的战力以及最佳战力占比来计算出该角色的最佳属性值。因此,我们可以将问题描述为如下形式:

根据某角色的对战数据训练模型,通过模型分析该角色各属性战力占比对它胜率的影响,从而确定各属性的最佳战力占比。

假设角色的对战数据位X,对战结果为t,则各属性对应的最佳战力占比w*可以由如下公式确定:

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

L(X, t; w)表示损失函数,w为模型参数。在战力位n时,属性值v可表示为:


腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性


图2.  角色属性分析总体流程,蓝色框为模型训练阶段,黑色框中为模型应用阶段。

3、数据生成

本节将介绍如何生成角色的对战数据,具体流程如图3所示。为了更好衡量角色属性强弱,我们采用固定阵容的5v5模式(即攻方和守方中对应位置设置相同角色,双方均只有一个角色不同)来对比同一角色在相同战力、不同属性值情况下的强弱。阵容如图4所示,固定阵容的5v5模式是将攻方和守方的pos1、pos2、pos3、和pos4对应位置上放置相同角色,即 攻pos1=守pos1、攻pos2=守pos2、攻pos3=守pos3、攻pos4=守pos4。最后,在pos5上可以放置要对抗的两个角色,来比较pos5上两个角色的强弱。

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

图3.  角色对战数据生成流程

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性


图4.  5v5对抗阵容站位图,其中攻方和守方的pos1、pos2、pos3和pos4的角色相同。pos5用于放置要对抗的角色。

例如:1)角色A在战力为20000时,通过随机分配各属性的战力占比得到A1、A2、A3三个角色(它们具有相同的技能);2)构造3对攻-守对抗角色,即(A1-A2, A3-A1, A3-A2,攻守方角色是随机确定的);3)通过将pos5中放置相应角色,通过5v5对抗来确定攻、守方角色战斗胜负。

最后得到的战斗数据如表3所示(表3中值记录了pos5的角色信息)。由于我们目标是研究角色最佳战力占比,因此表3中记录的是角色对应属性的战力占比。

表3.  角色各属性战力占比(%)与对战结果数据实例表(表中数据也是我造的,仅为展示),其中1-攻方、0-守方,1-胜、0-负

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

4、模型简介

由于我们目标是确定各属性战力占比与角色胜负(二分类问题)的关系,本文采用LogisticRegression算法[1]来确定各属性战力占比的权值。KM中已经有很多关于LR的介绍,大家可以参考[2] [3] [4],或者自行Google以一下,这里就不再赘述了。下面主要介绍如何根据训练好的LR来确定各属性的战力占比。LR的结构如图5所示,其中LR输入为表3中各属性的战力占比,目标t是表3中的胜负。LR的目标函数L(t, y)为:

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性


图5.  LogisticRegression结构图

在训练模型之前,我们采用min-max对输入数据进行归一化。通过训练完模型可得到各属性战力占比对应的权值。权值大于0,则该属性与胜率成正相关;小于0,则该属性与胜率成负相关。因此,为了得到最佳属性(即最高胜率),我们需尽可能增加正相关属性,同时减小负相关属性。由于各属性战力占比不得小于0,我们将负相关属性战力占比设为0。对于正相关属性,我们采用权值归一化方式来确定其战力占比,如下式所示:

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

其中,W +为与角色胜率正相关的权值。


表4所示,权向量为模型最终确定的各属性的权值;第3列将所有与胜率负相关的属性权值设为0;第4列是采用如下公式归一化的结果:

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

其中W_3为表4中第3列的数值。

由于各属性会有最小和最大占比限制,因此需对归一化权值做区间调整。例如Def最小占比为5%,而表4中归一化权值后Def占比为0%,因此Def经过区间调整后为0.05。最后,将剩余战力占比(100-5(Def)-5(Agility)=90)按归一化权值分配至其他属性中。最后,便可得到各属性对应的战力占比(如表4中最后一列所示)。

表4.  模型对应的权值向量与最终战力占比(数据是随机生成的,只为了说明如何重权向量转换成对应战力占比)

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

5、实验分析

下面我们通过对我公司正在开发阶段得一款MMORPOG游戏中得20位角色得属性分析来验证本方法的有效性。

表5给出了20位角色(战力均为28000)在最佳属性和随机属性下的战斗胜率。从表中可以看出,本方法得到的最佳属性能有效提升角色的胜率。因此能在相同战力情况下,给出对应角色最优的属性,从而有效提升角色的强度。在随机属性情况下,角色平均胜率只有55%左右,这说明通过随机的方法无法有效强化角色,从而导致属性点的浪费(当然对于超级RMB玩家来说,就另当别论了,毕竟有钱可以为所欲为)。因此,对于大多数玩家来说,给出合理化的角色强化推荐能简化玩家游戏成本,提升游戏体验。

表5.  20位角色在随机属性和最佳属性下的对战胜率,其中第2行为最佳属性的胜率,第3行为随机属性下的胜率(由于某些原因无法给出具体角色名称)

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

此外,为了进一步分析不同角色类型角色对各属性的倾向性,表6给出了前7位角色(为了方便展示,这里只展示7位角色)的各属性值以及它们在游戏中的角色定位。从表中可以看出,对于不同定位的角色,各属性倾向不尽相同。如攻击型角色更倾向于增加Atk和Agility,而防御型角色攻倾向高Hp和Def。因此,通过对角色属性分析可以进一步验证角色在游戏中真实表现与其设计时的定位是否有偏差。此外,本方法能快速给出角色的属性分析,能在角色数值设置阶段提供重要参考,降低试错成本,提升开发效率。

表6.  部分角色模型给出的最佳属性值,其中角色定位为角色在设计时的定位(数据仅为说明,并非最终数值)


6、总结

本文采用LogisticRegression算法对游戏中角色属性配比进行分析,从而确定对应角色的最佳战力配比。本文从数据生成、数据处理、模型训练、属性战力配比计算等方面介绍我们的方法。在对20位角色的实验分析中发现,本文方法能有效提升角色强度,使角色在相同战力情况下的平均胜率由56%提升至96%。本方法可以为游戏玩家提供角色一键强化功能,从而降低玩家游戏成本,提升游戏体验。此外,本方法还可以在设计阶段快速提供角色属性的定量分析,为策划对角色调整提供参考,加快游戏开发进度。最后,本方法还能作为一种角色定位验证机制,来检验角色在游戏中的具体表现是否与角色最初定位存在偏差,降低游戏开发成本。


腾讯课堂Coding学院:用AI分析游戏角色的最佳属性

腾讯课堂Coding学院:用AI分析游戏角色的最佳属性
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



QQ|Archiver|手机版|小黑屋|微信邦 ( 鲁ICP备13013993号-5

GMT+8, 2018-5-24 16:17 , Processed in 0.146862 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Wxuse Inc. | Style by ytl QQ:1400069288

快速回复 返回顶部 返回列表