掌桥专利:专业的专利平台
掌桥专利
首页

检查游戏程序用的系统、方法、程序、机器学习辅助装置和数据结构

文献发布时间:2023-06-19 09:24:30


检查游戏程序用的系统、方法、程序、机器学习辅助装置和数据结构

技术领域

本发明涉及用于检查游戏程序的系统、方法、程序、机器学习辅助装置和数据结构。

背景技术

最近,享受在线游戏的玩家的数量越来越多,其中多个玩家可以经由网络参与在线游戏。例如,这样的游戏通过诸如智能电话等的便携式终端装置与游戏管理员的服务器装置进行通信的游戏系统来实现,这样使得操作便携式终端装置的玩家可以与其他玩家进行对战。

在提供游戏之前,游戏管理员必须检查游戏程序以检测错误(bug)。通常,用于提高这样的检查的效率的技术被称为质量保证(QA)技术。

QA技术的现有示例是自动执行不涉及程序执行的静态检查的静态代码分析。利用静态代码分析,通过分析待验证的程序的源代码的格式和内容来检测潜在的问题和与规范的差异。从很早以前就已经在UNIX(注册商标)系统上提供了诸如lint等的用于确认程序的格式的工具,并且coverity是众所周知的商用产品(非专利文献1和2)。然而,由于难以从源代码详尽地验证执行时的行为,因此已需要组合地采用动态分析。

动态分析是被称为试玩(test play)的涉及程序执行的动态检查,并且已经在很长时间就作为QA处理的一部分被执行。试玩是被称为调试人员或测试人员的特殊工程师实际玩游戏以发现问题的方法,其中利用该方法,可以预期明显的效果。在进行这样的QA时,由于游戏中的玩家动作的组合数量巨大,因此游戏管理员必须通过在按执行概率的降序选择组合的情况下运行游戏程序,来检测错误。

非专利文献1:Darwin,Ian F.Checking C Programs with Lint.ISBN0-937175-30-7

非专利文献2:Synopsys,Inc.Coverity,https://www.synopsys.com/software-integrity.html

发明内容

进行QA所针对的游戏的示例是被称为数字卡牌收集游戏(DCCG)的卡牌游戏类型,其中在该卡牌游戏中,根据卡牌、角色等的组合(以下称为“卡牌组合(cardcombination)”)来执行各种动作。尽管卡牌组合极大地提高了游戏的战略可能性,但要验证的情形的数量爆炸性地增加。例如,在通过将手中的卡牌放在游戏场(台)上来进行对战的卡牌对战游戏中,如果存在1000张卡牌并且进行平均由八轮组成的对战,则将卡牌放在台(stage)上约十六次。在这种情况下,定义台上的情形的模式的组合的数量为1000

本发明是为了解决上述问题而作出的,并且本发明的主要目的是提供使得可以在推断用户更可能执行的动作的情况下检查游戏程序的系统等。

为了实现上述目的,根据本发明的方面的系统是一种用于检查游戏的游戏程序的系统,所述游戏在用户从被配置为包括多个媒体的自有媒体集中选择媒体并将该媒体放在游戏场上时进展,所述系统的特征在于包括:游戏日志获得单元,用于从用于存储游戏日志的游戏服务器获得游戏日志,所述游戏日志是根据用户操作所创建的、并且包括与所述媒体有关的媒体信息,所述媒体信息包括在被配置为包括所述游戏场和所述自有媒体集的游戏状态中;张量数据创建单元,用于通过基于所获得的游戏日志创建阵列数据来创建张量数据,在所述阵列数据中,表示所述游戏状态中所包括的所述媒体信息的矩阵沿着时间轴排列;学习单元,用于通过在使用所创建的张量数据作为学习数据的情况下进行机器学习,来生成学习模型;推断单元,用于通过使用所述学习模型来推断在给定游戏状态中用户所要选择的媒体;以及检查单元,用于通过在使用所述推断单元所推断出的媒体作为在所述游戏进展时的游戏状态中用户对媒体的选择的情况下执行所述游戏程序,来检查所述游戏程序。

此外,在本发明中,优选地,在所述矩阵中,所述游戏中所提供的媒体的种类、以及所述游戏状态中所包括的所述游戏场和所述自有媒体集之间的区别中的一者构成行,并且另一者构成列,以及所述张量数据创建单元将与所述媒体的有无有关的信息存储在所述矩阵的各元素中。

此外,在本发明中,优选地,所述张量数据创建单元通过基于所述游戏日志获得单元新获得的游戏日志创建所述阵列数据,来创建新的张量数据。

此外,在本发明中,优选地,所述游戏日志包括用于识别用户的信息,以及所述张量数据创建单元通过沿着表示用户的种类的用户轴以用户为单位存储所述阵列数据,来创建张量数据。

此外,在本发明中,优选地,所述游戏是对战游戏,在所述对战游戏中,多个用户通过从所述多个用户各自的自有媒体集中选择媒体并将该媒体放在所述游戏场上来进行对战,以及游戏日志,所述张量数据创建单元通过沿着表示追加次数的追加次数轴存储所述阵列数据来创建张量数据。

此外,在本发明中,优选地,所述游戏中所提供的媒体的种类根据用户所选择的类而变化,所述游戏日志包括用于识别所述类的信息,以及所述张量数据创建单元通过沿着表示所述类的种类的类轴以类为单位存储所述阵列数据,来创建张量数据。

此外,在本发明中,优选地,在向所述游戏添加新种类的媒体时,所述推断单元通过进一步使用表示正添加的媒体和所述游戏中所提供的媒体之间的关系的变换矩阵,来推断在所述给定游戏状态中用户所要选择的媒体。

此外,在本发明中,优选地,所述学习模型是神经网络模型。

此外,在本发明中,优选地,所述推断单元将用户所要选择的媒体的似然性与预定阈值进行比较,并且输出具有最高似然性的媒体,以及所述检查单元通过在使用所述推断单元所输出的媒体作为用户对媒体的选择的情况下执行所述游戏程序,来检查所述游戏程序。

此外,在本发明中,优选地,所述检查单元通过在所述推断单元所输出的媒体从具有最高似然性的媒体起顺次被使用作为用户对媒体的选择的情况下执行所述游戏程序,来检查所述游戏程序。

此外,在本发明中,优选地,所述检查单元通过以无头模式执行所述游戏程序来检查所述游戏程序。

此外,在本发明中,优选地,所述自有媒体集由用户能够选择的第一媒体集和用户不能选择的第二媒体集构成,所述第一媒体集和所述第二媒体集是根据所述游戏的进展而确定的,以及所述推断单元通过使用所述学习模型来从所述第一媒体集推断在所述给定游戏状态中用户所要选择的媒体。

此外,为了实现上述目的,根据本发明的方面的方法是一种用于检查游戏的游戏程序的方法,所述游戏在用户从被配置为包括多个媒体的自有媒体集中选择媒体并将该媒体放在游戏场上时进展,所述方法的特征在于包括以下步骤:从用于存储游戏日志的游戏服务器获得游戏日志,所述游戏日志是根据用户操作所创建的、并且包括与所述媒体有关的媒体信息,所述媒体信息包括在被配置为包括所述游戏场和所述自有媒体集的游戏状态中;通过基于所获得的游戏日志创建阵列数据来创建张量数据,在所述阵列数据中,表示所述游戏状态中所包括的所述媒体信息的矩阵沿着时间轴排列;通过在使用所创建的张量数据作为学习数据的情况下进行机器学习,来生成学习模型;通过使用所述学习模型来推断在给定游戏状态中用户所要选择的媒体;以及通过在使用所推断出的媒体作为在所述游戏进展时的游戏状态中用户对媒体的选择的情况下执行所述游戏程序,来检查所述游戏程序。

此外,为了实现上述目的,根据本发明的方面的一种程序,其特征在于,使得计算机执行上述方法的步骤。

此外,为了实现上述目的,根据本发明的方面的机器学习辅助装置是一种机器学习辅助装置,用于创建用于通过机器学习生成学习模型的学习数据,所述学习模型用于推断游戏中的用户所要选择的媒体,所述游戏在用户从被配置为包括多个媒体的自有媒体集中选择媒体并将该媒体放在游戏场上时进展,所述机器学习辅助装置的特征在于包括:游戏日志获得单元,用于从用于存储游戏日志的游戏服务器获得游戏日志,所述游戏日志是根据用户操作所创建的、并且包括与所述媒体有关的媒体信息,所述媒体信息包括在被配置为包括所述游戏场和所述自有媒体集的游戏状态中;以及张量数据创建单元,用于通过基于所获得的游戏日志创建阵列数据来创建张量数据,在所述阵列数据中,表示所述游戏状态中所包括的所述媒体信息的矩阵沿着时间轴排列。

此外,为了实现上述目的,根据本发明的方面的数据结构是一种学习数据的数据结构,所述学习数据用于通过机器学习生成学习模型,所述学习模型用于推断游戏中的用户所要选择的媒体,所述游戏在用户从被配置为包括多个媒体的自有媒体集中选择媒体并将该媒体放在游戏场(game field)上时进展,所述数据结构的特征在于包括张量数据,所述张量数据是基于用户日志、通过创建阵列数据所创建的,所述用户日志是根据用户操作所创建的并且包括与所述媒体有关的媒体信息,所述媒体信息包括在被配置为包括所述游戏场和所述自有媒体集的游戏状态中,在所述阵列数据中,表示所述游戏状态中所包括的所述媒体信息的矩阵沿着时间轴排列,以及所述数据结构的特征在于,使得计算机通过在使用所述张量数据作为学习数据的情况下进行机器学习来生成学习模型,并且通过使用所述学习模型来输出与在给定游戏状态中具有更高似然性的媒体有关的推断信息。

本发明使得可以在推断用户更可能执行的动作的情况下检查游戏程序。

附图说明

图1是根据本发明实施例的检查系统的总体配置图。

图2示出示例神经网络模型。

图3是示出根据本发明实施例的信息处理装置的硬件配置的框图。

图4是示出根据本发明实施例的游戏服务器的硬件配置的框图。

图5示出用户的终端装置的显示器上所显示的游戏画面的示例。

图6是示出根据本发明实施例的检查服务器的硬件配置的框图。

图7示出根据本发明实施例的检查系统的示例功能框图。

图8示出日志数据库中所存储的游戏日志的示例。

图9示出某个时间点处的卡牌信息矩阵的示例。

图10示出某个时间点处的卡牌信息矩阵的示例。

图11示出由张量数据创建单元创建的三维阵列数据的示例。

图12示出由张量数据创建单元创建的三维阵列数据的示例。

图13示出张量数据模型的示例,其中在该张量数据模型中,三维阵列数据沿着三个轴(即,用户轴、追加次数(number-of-appendings)轴和类(class)轴)布置。

图14示出表示现有卡牌和新卡牌之间的关系的变换矩阵的示例。

图15示出利用检查服务器和信息处理装置的检查处理的示例流程图。

具体实施方式

现在,将参考附图来说明根据本发明实施例的用于检查游戏程序的检查系统。

根据本发明实施例的检查系统1的技术特征在于,将根据游戏的进展状况所累积的游戏日志附加地映射到具有允许通过使用深度神经网络(DNN)技术来进行学习的格式的张量结构。利用该配置,通过使用反映用户动作的游戏日志,生成神经网络模型(NN模型),由此构建用于计算类似于人类的选择的机制。因而,创建了自动选择在某个特定游戏状态中人类很可能采用的动作的AI机器人,并且使这些AI机器人重复试玩。这使得可以持续优先发现被用户遇到的概率较高的错误。

现在,将简要说明机器学习和神经网络(NN)。机器学习是涉及从输入值和输出值的数据获取隐藏在该数据中的模式的方法。神经网络是用在机器学习中的框架,并且具有从输入和输出值学习(近似)表示输入关系的函数的功能。

图2示出示例NN(四层DNN)。图2所示的四层DNN具有与输入值x、y和z相对应的三个节点作为输入并且具有与输出值u相对应的一个节点作为输出。四层DNN具有两个中间层,并且这些中间层中的各节点均具有权重。利用四层DNN,可以通过利用大量的输入/输出数据来针对各个节点生成适当权重。这通常被称为深度学习。这里,由于NN不能原样学习游戏日志,因此NN所要学习的数据必须具有n维张量数据结构。N维张量数据是在根据程序的处理期间作为n维阵列进行处理的阵列数据。应当理解,图2所示的NN中的层的数量和节点的数量仅仅是示例。

图1是根据本发明实施例的检查系统1的总体配置图。如图1所示,检查系统1包括信息处理装置10、游戏服务器20和检查服务器30,这三者连接至诸如因特网等的网络2,以允许相互通信。

图3是示出根据本发明实施例的信息处理装置10的硬件配置的框图。根据本实施例的信息处理装置10包括与普通服务器或PC等的配置类似的配置。信息处理装置10包括处理器11、输入装置12、输出装置13、存储装置14和通信装置15。这些构成装置经由总线16连接。假定在总线16和各个构成装置之间根据需要插入接口。在一个示例中,信息处理装置10被配置为包括多个计算机或服务器装置。

处理器11控制信息处理装置10的总体操作,并且例如,处理器11是CPU和GPU。为了进行机器学习,信息处理装置10优选包括用于执行除图形渲染以外的一般处理的GPU。利用该配置,可以例如通过同时运行多于1000个内核以执行并行处理来提高计算速度。处理器11通过加载存储装置14中所存储的程序和数据并执行该程序来执行各种处理。

输入装置12是接受从用户对信息处理装置10的输入的用户界面。例如,输入装置12是触摸屏、触摸板、键盘或鼠标。输出装置13向用户输出或显示从信息处理装置10输出的信息。例如,输出装置13是输出图像的显示器或打印机。

存储装置14包括主存储装置和辅助存储装置。主存储装置是诸如RAM等的半导体存储器。RAM是允许高速信息读取和写入的易失性存储介质,并且用作在处理器11处理信息时的存储区域和工作区域。主存储装置可以包括作为只读的非易失性存储介质的ROM。在这种情况下,ROM存储诸如固件等的程序。辅助存储装置存储各种程序、以及在执行各个程序时处理器11所使用的数据。辅助存储装置例如是硬盘装置;然而,辅助存储装置可以是能够存储信息的任何类型的非易失性存储部或非易失性存储器(其可以是可移除型)。辅助存储装置例如存储操作系统(OS)、中间件、应用程序、在执行这些程序时可参考的各种数据、等等。

通信装置15经由网络2向其它计算机发送数据和从其它计算机接收数据。例如,通信装置15通过执行使用以太网(Ethernet,注册商标)线缆等的有线通信或者诸如移动通信或无线LAN通信等的无线通信而连接至网络2。

图4是示出根据本发明实施例的游戏服务器20的硬件配置的框图。根据本实施例的游戏服务器20包括与普通服务器的配置类似的配置。在一个示例中,游戏服务器20是已知的服务器计算机。游戏服务器20包括处理器21、输入装置22、输出装置23、存储装置24和通信装置25。这些构成装置26经由总线26连接。假定在总线26和各个构成组成装置之间根据需要插入接口。各个组件(即,处理器21、输入装置22、输出装置23、存储装置24和通信装置25)分别对应于前述的处理器11、输入装置12、输出装置13、存储装置14和通信装置15,并且具有类似的配置,因而将省略对这些配置的说明。在一个示例中,游戏服务器20被配置为包括多个服务器装置。

游戏服务器20经由网络连接至玩游戏的各个用户的终端装置。用户的终端装置优选是智能电话,但可以是个人计算机、平板电脑或移动电话等。

例如,当各个用户激活终端装置上所安装的游戏App(应用)时,终端装置访问游戏服务器20,并且游戏服务器20接受来自各个终端的访问并经由网络提供游戏服务。此时,游戏服务器20将包括各个用户的游戏日志的游戏信息存储在存储单元24中,并且管理该游戏信息。在本实施例中,游戏服务器20具有数据库服务器的功能。在这种情况下,存储装置24存储数据库所用的数据(例如,表)和程序,并且通过执行该程序来实现数据库。在游戏服务器20被配置为包括多个服务器装置的情况下,这些服务器装置中的一个或多个可以是数据库服务器。游戏服务器20和各个用户的终端装置连接至的网络可以是网络2。

游戏服务器20的存储装置24存储作为游戏所用的应用的游戏程序,并且游戏服务器20通过与各个用户的终端装置进行通信来提供游戏。游戏服务器20根据用户的终端装置处的游戏操作输入来执行游戏,并且将执行结果发送至用户的终端装置。

本实施例中的游戏服务器20所提供的游戏是所谓的可收集卡牌游戏。具体地,在本实施例的游戏中,各用户从由多张卡牌构成的自有卡牌集(card set)中选择卡牌并将该卡牌放在游戏场上,并且根据卡牌和类的组合来执行各种事件,由此游戏进展。此外,本实施例中的游戏是多个用户通过从他们的自有卡牌集中选择卡牌并将卡牌放在游戏场43上来进行对战的对战游戏。在本实施例的游戏中,各卡牌具有包括卡牌ID、卡牌类型、以及诸如生命值、攻击力和属性等的参数的卡牌定义信息。各类具有类定义信息。卡牌类型是表示卡牌是代表角色还是物品的信息。

图5示出用户的终端装置的显示器上所显示的游戏画面的示例,具体为供本地用户(即,操作用户终端装置的用户自己)与另一用户(其操作该用户的用户终端装置)之间的卡牌对战用的游戏画面40。游戏画面40示出作为本地用户的手牌的第一卡牌集42a和作为另一用户的手牌的第一卡牌集42b。游戏被配置成使得本地用户不能观察到另一用户的第一卡牌集42b的内容。

各用户所拥有的自有卡牌集由作为用户的手牌的第一卡牌集42和作为用户的库存的第二卡牌集44构成,并且其通常被称为卡牌组(card deck)。用户所拥有的各卡牌41是包括在第一卡牌集42还是第二卡牌集44中是根据游戏的进展而确定的。第一卡牌集42是可以由用户选择并且可以放在游戏场43上的卡牌集,而第二卡牌集44是用户不能选择的卡牌集。尽管自有卡牌集由多张卡牌41构成,但存在自有卡牌集根据游戏的进展而由单张卡牌41构成的情况。在各个用户从他们各自的第一卡牌集42(42a和42b)中将卡牌41放在游戏场43上的情况下,游戏进展。各用户的卡牌组可以由所有不同种类的卡牌41构成,或者可以通过部分包括相同种类的卡牌41构成。此外,构成本地用户的卡牌组的卡牌41的种类可以不同于构成另一用户的卡牌组的卡牌41的种类。在另一示例中,各用户所拥有的自有卡牌集仅由第一卡牌集42构成。

游戏画面40示出本地用户所选择的角色45a和另一用户所选择的角色45b。在本实施例中,用户所选择的角色不同于与卡牌相关联的角色,并且定义表示自有卡牌集的类型的类。本实施例中的游戏被配置成使得用户所拥有的卡牌41根据类而变化。在一个示例中,本实施例中的游戏被配置成使得可以构成个用户的卡牌组的卡牌的种类根据类而变化。在一个示例中,本实施例中的游戏被配置成使得通过将卡牌41放在游戏场43上所展现出的效果根据卡牌定义信息中所设置的参数而变化。

可选地,代替卡牌41(卡牌集),可以使用诸如角色和物品等的媒体(媒体集),并且代替自有卡牌集,可以使用被配置为包括用户所拥有的多个媒体的自有媒体集。例如,在媒体集由包括角色和物品的媒体构成的情况下,游戏画面40将角色或物品本身示出为卡牌41。此外,在本说明书中,假定游戏状态表示某时间点或某场景处的游戏整体的状态。游戏状态被配置为包括与游戏场43有关的信息和与自有卡牌集有关的信息。具体地,本实施例中的游戏状态至少包括某时间点处(在某场景中)的、与放在游戏场43上的卡牌41有关的信息和与本地用户的自有卡牌集(或第一卡牌集42)中的卡牌41有关的信息,这就足够了。例如,当本地用户从第一卡牌集42a中将卡牌A1放在游戏场43上时,卡牌A1从自有卡牌集中消失,并且可以从游戏状态确认卡牌A1已放在游戏场43上。

在一个示例中,本实施例中的游戏是单个对战(卡牌对战)包括多轮的对战游戏,并且在各轮中本地用户或另一用户从第一卡牌集42中选择卡牌并将该卡牌放在游戏场43上的情况下,游戏进展。在一个示例中,角色45b是非玩家角色。在一个示例中,在本实施例的游戏中,响应于游戏画面40上的涉及卡牌或角色的用户操作,改变另一卡牌或角色的参数,诸如生命值或攻击力等。在一个示例中,在本实施例的游戏中,当满足预定条件时,例如,当发生特定游戏状态时,从各个用户的卡牌组或者从除各个用户的卡牌组以外的某处将卡牌放在游戏场43上。在一个示例中,在本实施例的游戏中,当满足预定条件时,例如,当发生特定游戏状态时,将与预定条件相对应的卡牌从游戏场排除、或者转移到本地用户或另一用户的卡牌组。在一个示例中,在本实施例的游戏中,当从各用户的卡牌组将特定卡牌(诸如魔法卡牌等)放在游戏场43上时,展现出预定效果,并且使该特定卡牌从游戏场43消失。

图6是示出根据本发明实施例的检查服务器30的硬件配置的框图。根据本实施例的检查服务器30包括与普通服务器的配置类似的配置。在一个示例中,检查服务器30是已知的服务器计算机。检查服务器30包括处理器31、存储装置34和通信装置35。这些构成装置经由总线36连接。假定在总线36和各个构成装置之间根据需要插入接口。各个组件(即,处理器31、存储装置34和通信装置35)分别对应于前述的处理器11、存储装置14和通信装置15,并且具有类似的配置,因而将省略对这些配置的说明。在一个示例中,检查服务器30被配置为包括多个服务器装置。

尽管检查服务器30被配置为不包括输入/输出装置以通过采用无头(headless)的实现来提高处理的速度,但检查服务器30可以包括输入/输出装置。此外,信息处理装置10或游戏服务器20可被配置为具有检查服务器30的功能。

在一个优选示例中,检查服务器30是并行执行与其它处理隔离的多个游戏App(游戏程序)的服务器系统。检测服务器30通过使用作为OS级别的虚拟化技术的诸如docker等的被称为“容器”的技术来对上述游戏App进行虚拟化。利用该配置,可以利用单个服务器装置同时并行地执行多个App。

此外,利用上述虚拟化的游戏程序,检测服务器30以无头模式执行游戏程序或者执行无头游戏程序。由于无头游戏程序不需要图形或声音(其可能是限制速度的因素),因此可以单独利用处理器31在短时间内高速执行游戏程序的游戏内容。这使得可以高效地进行涉及游戏程序的执行的动态检查。

在本实施例中,检查服务器30具有数据库服务器的功能。在这种情况下,存储装置34存储数据库所用的数据(例如,表)和程序,并且通过执行程序来实现数据库。在检查服务器30被配置为包括多个服务器装置的情况下,这些服务器装置中的一个或多个可以是数据库服务器。

图7示出根据本发明实施例的检查系统1的示例功能框图。这些功能通过在各个装置的处理器11、21和31中执行程序来实现。在本实施例中,由于各种功能均是通过加载程序来实现的,因此一个部件(功能)的一部分可以在另一部件中提供。可选地,这些功能可以由硬件通过配置用于部分或整体实现这些功能的电子电路等来实现。

如图7所示,游戏服务器20包括日志数据库61。每次用户玩游戏时,游戏服务器20将表示游戏的进展状况的游戏日志附加地存储在日志数据库61中。游戏日志包括根据用户操作所创建的、游戏状态中所包括的与卡牌有关的卡牌信息。

图8示出日志数据库61中所存储的游戏日志的示例。如图8所示,游戏日志由各自表示游戏的进展状况的日志(诸如“用户X的操作日志X1”等)构成。游戏服务器20随着时间的经过而将日志顺次存储在日志数据库61中。诸如“用户X的操作日志X1”等的各日志包括诸如时间信息、用于识别用户的用户ID、操作类型和序列号等的信息,并允许将用户动作记录在该信息中。在本实施例中,尽管游戏日志由信息处理装置10使用,但游戏日志被用于包括故障处理和客户支持的广泛目的。因此,通过使用游戏日志中所包括的信息,可以掌握获取游戏日志时的游戏状态中的、与游戏场43有关的卡牌信息和与自有卡牌集(或第一卡牌集42)有关的卡牌信息。

如图7所示,信息处理装置10包括游戏日志获得单元62、张量数据创建单元63、学习单元64和推断单元65。游戏日志获得单元62从日志数据库61获得游戏日志。

张量数据创建单元63通过基于游戏日志获得单元62所获得的游戏日志创建如下的阵列数据来创建张量数据,其中在该阵列数据中,表示游戏状态中所包括的卡牌信息的卡牌信息矩阵沿着时间轴排列。张量数据创建单元63将表示某个时间点处的游戏状态的矩阵映射到使得可以扩展游戏日志的张量结构,由此生成允许机器学习的数据。在用户所采取的动作之后的卡牌信息矩阵表示用户相对于在用户所采取的动作之前的卡牌信息矩阵而采取的动作,因而可被用作正确标签。该正确标签用于推断在给定游戏状态中大多数用户将选择的卡牌。

图9和图10示出某时间点处的卡牌信息矩阵的示例。在卡牌信息矩阵中,行表示游戏中所提供的卡牌的种类,列表示游戏场43和自有卡牌集的类型,并且在某个时间点处(即,在某个游戏状态中)的矩阵的各元素中存储与卡牌的有无有关的信息。可选地,可以在矩阵的各元素中存储与卡牌的数量有关的信息。

例如,在图9所示的卡牌信息矩阵中,针对台上的卡牌A1存储“1”,并且针对台上的卡牌A2存储“0”。这表示在该游戏状态中,卡牌A1放在游戏场43上,但卡牌A2未放在游戏场43上。同样,在图9所示的卡牌信息矩阵中,针对卡牌组中的卡牌A1存储“0”,并且针对卡牌组中的卡牌A2存储“1”。这表示在该游戏状态中,自有卡牌集不包括卡牌A1但包括卡牌A2。

如上所述,卡牌信息矩阵是与n个种类的卡牌相对应的n维向量,其表示某个时间点处的一个对战中的与游戏场43有关的卡牌信息和与用户的自有卡牌集有关的卡牌信息。在本实施例中,卡牌信息矩阵中的与自有卡牌集有关的卡牌信息是本地用户的自有卡牌集,并且不包括另一用户的自有卡牌集。然而,根据游戏的内容,卡牌信息矩阵可被配置为包括另一用户的自有卡牌集。可以互换卡牌信息矩阵的行和列。

图10示出在图9的游戏状态中用户将卡牌A2放在游戏场43上之后的卡牌信息矩阵。在图10所示的卡牌信息矩阵中,与图9的卡牌信息矩阵相比,针对台上的卡牌A2所存储的信息从“0”改变为“1”,并且针对卡牌组中的卡牌A2所存储的信息从“1”改变为“0”。

如上所述,通过使用卡牌信息矩阵,当作为用户所采取的动作(诸如卡牌选择操作等)的结果、在与游戏场43有关的卡牌信息和与自有卡牌集有关的卡牌信息中发生变化时,可以将该变化检测为矩阵中的值的变化。可选地,作为变形例,卡牌信息矩阵中的行的元素可以是游戏场43和第一卡牌集42,或者游戏场43、自有卡牌集和第一卡牌集42。

张量数据创建单元如图11所示沿着时间轴针对所有动作排列卡牌信息矩阵,由此针对各卡牌对战创建诸如图12所示的三维阵列数据等的三维阵列数据。因此,各卡牌对战均由三维张量表示,该三维张量具有针对与台/卡牌组(游戏场43/自有卡牌集)有关的区别(種別)的轴、针对卡牌的种类的轴、以及表示动作次数的时间轴。

这里,由于游戏日志包括用户ID和类,因此张量数据创建单元63可以针对各用户、针对各类和针对进行追加的各次数进行分类来累积三维阵列数据。张量数据创建单元63进一步通过沿着表示用户的种类的用户轴而针对各用户、沿着表示进行追加的次数的追加次数轴而针对进行追加的各次数、以及沿着表示类的种类的类轴而针对各类来存储三维阵列数据,由此创建张量数据。图13示出张量数据模型的示例,其中在该张量数据模型中,三维阵列数据沿着用户轴、追加次数轴和类轴布置。

因而,张量数据创建单元63所创建的张量数据是存储有与台/卡牌组有关的区别、卡牌的种类、动作次数、用户的种类、进行追加的次数、以及类的种类的六维张量数据。这里,进行追加的次数是指当张量数据创建单元63创建六维张量数据时追加除进行追加的次数以外的五维张量数据的次数。由于针对各卡牌对战而生成五维张量数据,因而进行追加的次数表示对战次数。

可选地,可以如在以下的变形例中那样配置张量数据。在一个变形例中,张量数据创建单元63所创建的张量数据是上述的三维阵列数据、即三维张量数据。在一个变形例中,张量数据创建单元63所创建的张量数据是三维阵列数据沿着用户轴、追加次数轴和类轴其中之一布置的四维张量数据。在一个变形例中,张量数据创建单元63所创建的张量数据是三维阵列数据沿着用户轴、追加次数轴和类轴中的两个轴布置的五维张量数据。可选地,张量数据创建单元63所创建的张量数据可以是向上述的张量数据添加一个或多个维的n维(n≥4)张量数据。

在日志数据库61中,在用户正玩游戏的情况下,连续地且附加地存储信息。在一个优选示例中,信息处理装置10还包括张量数据差检测单元。张量数据差检测单元例如通过将张量数据创建单元63所创建的张量数据的最后更新时间与利用游戏日志获得单元62的游戏日志获取时间进行比较,来提取游戏日志的添加部分。因而,张量数据创建单元63基于游戏日志获得单元62新获得的游戏日志来创建阵列数据,由此创建张量数据。张量数据差检测单元的功能可以设置在游戏日志获得单元62或张量数据创建单元63中。

在一个变形例中,张量数据创建单元63通过使用用于高效地存储诸如ND4J等的稀疏矩阵的系统,来从具有图12所示的三维配置的阵列数据创建张量数据。这使得可以克服存储器空间效率差的问题,其中,由于张量数据具有多维配置,因此如果张量数据简单地以多维阵列的形式存储,则阵列中的大部分单元将为零。

在以上的示例中,为了便于说明,假定张量数据创建单元63根据卡牌的有无来在卡牌信息矩阵的各元素中存储“0”或“1”;然而,不限于该示例。然而,为了将张量数据创建为允许机器学习的数据,张量数据创建单元63应优选根据卡牌的有无和卡牌的数量来在卡牌信息矩阵的各元素中存储“0”到“1”的范围中的实值。例如,台上可以包括的卡牌的最大数量为五张、并且台上不包括卡牌A1、包括卡牌A2且包括三张卡牌A3的情况下,张量数据创建单元63在针对台上的卡牌A1的元素中存储“0”,在针对台上的卡牌A2的元素中存储“0.2”,并且在针对台上的卡牌A3的元素中存储“0.6”。

学习单元64通过使用所创建的张量数据作为学习数据来进行机器学习,由此生成神经网络模型。学习数据由输出数据构成,该输出数据包括由输入数据和针对该输入数据的正确标签组成的对。例如,在张量数据创建单元63所创建的张量数据是三维阵列数据的情况下,在沿着动作次数的轴彼此相邻的卡牌信息矩阵中,具有较少动作次数的卡牌信息矩阵用作输入数据,并且具有较多动作次数的卡牌信息矩阵用作输出数据。也就是说,某个时间点处的卡牌信息矩阵用作针对用作动作次数少一次的输入数据的卡牌信息矩阵的输出数据,并且用作针对用作动作次数大一次的输出数据的卡牌信息矩阵的输入数据。

学习单元64可以通过使用已知的神经网络来生成神经网络模型。本实施例中的神经网络可以包括多层神经网络、即深度学习神经网络。优选地,学习单元64使用具有两个或更多个中间层的深度神经网络,诸如图2所示的深度神经网络等。例如,学习单元64可以使用诸如Deeplearning4j(注册商标)、TesorFlow(注册商标)或Chainer(注册商标)等的框架。可选地,学习单元64可以创建除神经网络模型以外的学习模型,诸如基于随机森林方法的学习模型等。

推断单元65通过使用学习单元64所生成的神经网络模型(学习模型)来推断用户在给定游戏状态中将选择的卡牌。某个时间点处的游戏状态中的卡牌信息由卡牌信息矩阵表示。例如,在张量数据创建单元63创建三维张量数据的情况下,当将表示某个时间点处的游戏状态的卡牌信息矩阵输入到推断单元65时,推断单元65推断(输出)用户接下来将选择的卡牌。

在一个示例中,推断单元65通过将用户可以选择的卡牌的似然性(likelihood)与预定阈值进行比较来输出(确定)具有最高似然性的卡牌。具体地,推断单元65输出作为与具有大于或等于预定阈值(或者大于预定阈值)的似然性的卡牌有关的信息的推断信息。该推断信息包括与具有大于或等于预定阈值的似然性的卡牌有关的信息(例如,卡牌ID)。推断信息可以包括与针对各个卡牌ID的似然性有关的信息,或者推断单元65可以按卡牌的似然性的降序输出卡牌。在本实施例中,假定随着卡牌的似然性变得更高,卡牌变得更可能。可选地,作为变形例,可以定义设置,使得随着卡牌的似然性变得更低,卡牌变得更可能。在这种情况下,推断单元65输出具有小于或等于预定阈值(或小于预定阈值)的似然性的卡牌。该阈值由游戏管理员等预先设置。优选确定该阈值,使得推断单元65所输出的卡牌将不大于用户可以选择的所有卡牌的10%。这使得可以防止推断单元65在游戏状态中继续确定仅一张卡牌的情况。在这种情况下,推断单元65所输出的推断信息不限于上述示例,只要该信息与相关游戏状态中的由用户选择的似然性高的卡牌有关即可。推断单元65可以通过使用能够通过使用所构建的学习模型推断数据的已知推断执行模块来推断(输出)数据。例如,推断单元65可以使用诸如CoreML等的框架。

在一个示例中,当游戏管理员等向游戏添加将一个或多个新种类的卡牌时,推断单元65通过进一步使用表示正添加的卡牌与该添加之前的游戏中所提供的卡牌之间的关系的变换矩阵来推断在给定游戏状态中用户将选择的卡牌。图14示出表示游戏中当前提供的现有卡牌堆A与新卡牌堆B之间的关系的变换矩阵的示例。通过在输入和输出处使用该变换矩阵作为滤波器,推断单元65推断出不存在学习数据的新卡牌堆(card pack)中的用户很可能选择的卡牌。利用该配置,当向游戏新添加卡牌时,可以高效地进行针对尚未获得游戏日志的所添加的卡牌的调试(debug)。该变换矩阵是由游戏管理员等考虑到卡牌的规格和功能的本质而设置的。例如,利用图14所示的变换矩阵,新卡牌B1是由比率为0.9的现有卡牌A1和比率为0.1的现有卡牌An构成的卡牌,这表明新卡牌B1具有与现有卡牌A1基本上相同的规格和功能的本质。新卡牌堆B不仅可以包括新添加的卡牌,而且可以包括游戏中所提供的卡牌的种类(包括新添加的卡牌)。在另一示例中,推断单元65仅在输入或输出处使用变换矩阵作为滤波器。在另一示例中,当通过使用所创建的张量数据作为学习数据来进行机器学习时,学习单元64通过将变换矩阵作为滤波器应用于张量数据来重新生成学习数据,由此生成神经网络模型。利用该配置,可以生成反映了与游戏日志中未包括的新卡牌堆有关的信息的神经网络模型。

如图7所示,检查服务器30包括检查单元66和检查历史数据库67。检查单元66通过以推断单元65所估计的卡牌作为在游戏进展时的游戏状态中的用户的卡牌选择而执行游戏程序,来检查游戏程序。

具体地,检查单元66执行游戏程序,并且当用户必须选择卡牌时,检查单元66将与当前游戏状态有关的信息(例如,卡牌信息矩阵)传递至推断单元65。推断单元65通过使用所生成的学习模型来根据从检查单元66接收到的卡牌信息矩阵推断用户接下来将选择的卡牌,并且将该信息传递至检查单元66。检查单元66通过在使用推断单元65所输出的卡牌作为用户所选择的卡牌的情况下执行游戏程序,来检查游戏程序。优选地,检查单元66通过在按卡牌的似然性的降序顺次使用从推断单元54输出的卡牌作为用户的卡牌选择的情况下执行游戏程序,来检查游戏程序。检查单元66重复上述操作,以在检测到任意不一致的情况下、以及在由OS检测到诸如分段错误(segmentation fault)等的明确的例外的情况下检测到错误。在一个示例中,由于作为普通商用产品所提供的游戏配备有用于检测不一致的功能,因此检查单元66通过使用游戏中通常提供的不一致检测功能来检测错误(bug)。

检查历史数据库67存储与检查单元66通过执行游戏程序而实际检测的游戏状态有关的信息、以及用作用户此时所选择的卡牌的卡牌信息。通过参考检查历史数据库67,例如,检查单元66可以避免在重新选择先前用作用户在给定游戏状态中所选择的卡牌的卡牌的情况下执行游戏程序。

图15示出根据本实施例的利用检查服务器30和信息处理装置10的检查处理的示例流程图。首先,在步骤101中,检查服务器30执行游戏程序。然后,当需要用户的卡牌选择时,在步骤102中,检查服务器30将与此时的游戏状态有关的信息发送至信息处理装置10。在一个优选示例中,与此时的游戏状态有关的信息是此时的卡牌信息矩阵。

然后,在步骤103中,信息处理装置10接收与游戏状态有关的信息,并且通过将该信息视为输入并使用所生成的NN模型来确定用户所要选择的卡牌的等级。此时,信息处理装置10确定由用户选择的似然性大于或等于阈值的卡牌,并且按所确定的卡牌的似然性的降序来对这些卡牌排位(rank)。例如,信息处理装置10从由用户选择的似然性更高的卡牌起顺次指派编号“第0个”、“第1个”、…等。编号是针对各游戏状态指派的。通过留出用于选择除具有最高似然性的卡牌以外的卡牌的空间,可以防止信息处理装置10继续将仅一张卡牌确定为在游戏状态中用户所要选择的卡牌。

然后,在步骤104中,信息处理装置10选择在排位后的卡牌中的第i个卡牌。这里,由于卡牌是按由用户选择的似然性的降序选择的,因此i的初始值为“0”。

然后,在步骤105中,信息处理装置10关于与游戏状态有关的信息和所选择的卡牌信息的组合是否存储在检查历史数据库67中而向检查服务器30发送查询数据,并且检查服务器30对该查询作出响应。在与游戏状态有关的信息和所选择的卡牌信息的组合未存储在检查历史数据库中的情况下,处理进入步骤108,并且在存储了该组合的情况下,处理进入步骤106。

在步骤106中,信息处理装置10判断作为在步骤104中所选择的排位第i个卡牌的下一个的第i+1个的卡牌的有无。在存在该卡牌的情况下,检查处理进入步骤107,其中在步骤107中,使i递增1,并且处理返回到步骤104。在不存在该卡牌的情况下,检查处理进入步骤108。这里,在检查处理进入步骤108的情况下,信息处理装置10优选将i的值重置为初始值,并且选择排位后的卡牌中的第0个卡牌。

在步骤108中,信息处理装置10将与所选择的卡牌有关的信息发送至检查服务器30。

然后,在步骤109中,检查服务器30接收到与所选择的卡牌有关的信息,进行用于选择该卡牌的操作,并且执行游戏程序。

然后,在步骤110中,检查服务器30在要继续执行游戏程序的情况下返回到步骤101,并且在要终止游戏程序的执行的情况下终止检查处理。例如,在检测到任意不一致的情况下、或者在游戏程序作为异常的结果而终止的情况下(例如,在由OS检测到诸如分段错误等的明确的例外的情况下),检查服务器30终止检查处理。优选地,检查服务器30被配置为在如上所述检测到错误的情况下,将与错误检测有关的信息发送至经由网络与检查服务器30连接的管理员的个人计算机。

接着,将说明根据本实施例的检查系统1的主要操作和优点。在本实施例中,例如,张量数据创建单元63从如下的游戏日志创建具有图13所示的结构的张量数据,该游戏日志是根据游戏的进展状况所累积的,并且包括与游戏场43和自有卡牌集有关的卡牌信息。学习单元64通过使用以允许机器学习的格式创建的张量数据来进行机器学习,由此生成NN模型(学习模型)。推断单元65通过使用所生成的NN模型来推断在给定游戏状态中用户将选择的卡牌。检查单元66通过在使用推断单元65所推断出的卡牌作为在游戏进展时的游戏状态中用户所选择的卡牌的情况下执行游戏程序,来检查游戏程序。

如上所述,利用张量数据创建单元63从反映用户动作的游戏日志创建允许机器学习的张量数据结构,可以生成用于推断在给定游戏状态中人类很可能选择的卡牌的学习模型。

此外,在本实施例中,在张量数据创建单元63所创建的张量数据中,例如,根据卡牌的有无来在张量内的各元素中存储在“0”到“1”范围内的实值。因而,利用张量数据创建单元63所创建的张量数据结构,即使在游戏内容被游戏管理员等部分改变的情况下(例如,在部分改变卡牌定义信息的情况下、或者在添加新种类的卡牌的情况下),该结构本身也不受影响。此外,在本实施例中,信息处理装置10通过提取所添加的游戏日志并且基于新获得的游戏日志创建三维阵列数据来创建张量数据。例如,在图13所示的张量数据结构中,信息处理装置10将新创建的三维阵列数据存储在由用户轴、追加次数轴和类轴定义的坐标上。在这种情况下,在信息处理装置10中,在从新用户获得游戏日志的情况下,张量数据创建单元63将三维阵列数据存储在用户轴上的新坐标处。在获得新种类的类的游戏日志或者获得新战斗次数的游戏日志的情况下,也以类似的方式存储三维阵列数据。利用该配置,在本实施例中,由于张量数据创建单元63所创建的张量数据的结构是不变的,因此可以继续利用NN模型进行学习。如上所述,根据本实施例的检查系统1假定张量数据将被继续扩展来采用追加式模型,这使得该追加模型适合于长期运行的游戏标题。

此外,在本实施例中,自动选择在给定游戏状态中人类很可能选择的卡牌的AI机器人主要由学习单元64和推断单元65来实现。通过利用AI机器人进行试玩,检查单元66可以保持优先发现被用户遇到的概率较高的错误。

例如,关于现有的QA,针对用户操作日志的巨大量组合,以工程师根据经验设置的优先级来进行验证,因而难以定量地反映用户的实际操作趋势。特别地,关于连续提供的在线游戏,用户的趋势随时间的经过而变化,因而存在用于将用户的实际趋势反映在QA处理中的要求。利用上述配置,根据本实施例,在卡牌对战游戏等(其中发生了基本上无限数量的组合,这使得通过人工试玩来进行详尽的验证极其困难)中,可以在反映用户的游戏倾向的情况下,优先发现被用户遇到的概率高的错误。注意,本实施例完全不依赖于任何特定的错误检测方法,并且可以检测到可归因于任意原因的错误,只要可以在App侧检测到错误本身的发生即可。

此外,当向游戏添加新卡牌时,推断单元65通过进一步使用表示正添加的卡牌和游戏中所提供的卡牌之间的关系的变换矩阵来推断在给定游戏状态中用户将选择的卡牌。在添加了不存在学习数据的新卡牌的情况下,通过如上所述在NN模型的输入/输出处使用变换矩阵作为滤波器,检查系统1可以利用不存在游戏日志的卡牌来检查游戏程序。这使得可以通过使用变换矩阵来处理在添加新卡牌堆时的冷启动的问题、即在不存在要学习的数据的状态下需要进行推断的问题。

除非另外具体陈述,否则上述的操作和优点也适用于其它实施例和其它示例。

本发明的另一实施例可以是用于实现上述本发明实施例的功能或在流程图中示出的信息处理的程序、或者存储有该程序的计算机可读存储介质。此外,本发明的另一实施例可以是用于实现上述本发明实施例的功能或在流程图中示出的信息处理的学习数据的数据结构。此外,本发明的另一实施例可以是独自实现上述本发明实施例的功能或在流程图中示出的信息处理的电子装置。此外,本发明的另一实施例可以是用于实现上述本发明实施例的功能或在流程图中示出的信息处理的方法。此外,本发明的另一实施例可以是能够向计算机提供用于实现上述本发明实施例的功能或在流程图中示出的信息处理的程序的服务器。此外,本发明的另一实施例可以是用于实现上述本发明实施例的功能或在流程图中示出的信息处理的虚拟机。

在本发明的另一实施例中,信息处理装置10包括机器学习辅助装置、机器学习装置和推断装置。例如,机器学习辅助装置包括游戏日志获得单元62和张量数据创建单元63,机器学习装置包括学习单元64,推断装置包括推断单元65,并且这些装置分别由计算机等来实现。

在上述的处理或操作中,只要在处理或操作中没有出现矛盾(诸如特定步骤利用在该步骤中尚不可用的数据的矛盾等),就可以自由地修改处理或操作。此外,上述的示例是用于说明本发明的示例,并且本发明不限于这些示例。本发明可以以各种形式体现,只要没有背离本发明的精神即可。

1 检查系统

2 网络

10 信息处理装置

11 处理器

12 输入装置

13 输出装置

14 存储装置

15 通信装置

16 总线

20 游戏服务器

21 处理器

22 输入装置

23 输出装置

24 存储装置

25 通信装置

26 总线

30 检查服务器

31 处理器

34 存储装置

35 通信装置

40 游戏画面

41 卡牌

42 第一卡牌集

43 游戏场

44 第二卡牌集

45 角色

61 日志数据库

62 游戏日志获得单元

63 张量数据创建单元

64 学习单元

65 推断单元

66 检查单元

67 检查历史数据库

相关技术
  • 检查游戏程序用的系统、方法、程序、机器学习辅助装置和数据结构
  • 检查辅助程序、检查辅助系统以及检查辅助装置的控制方法
技术分类

06120112157797