首页 / 一种游戏AI的编程实现方法及装置

一种游戏AI的编程实现方法及装置无效专利 发明

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种游戏AI的编程实现方法及装置。

相关背景技术

[0002] 现有的编程方法主要为在编程软件界面上输入符合一定逻辑规则的程序代码,然后通过调试和保存得到目标编程文件。这种方式过于传统,对于中小学生、教师或编程初学者等而言,不但枯燥无味,而且由于可读性差,在调试过程中查错极不方便,导致编程效率和学习效率极为低下,严重影响教师、学生以及编程初学者等参与编程教育的积极性。
[0003] 为了提高学生的编程的积极性,市场上也出现了图形化编程系统。在编程系统中可通过将编程语句嵌入积木中,通过积木的堆叠实现编程。
[0004] 但现有技术中的图形化编程系统一般是通过用户编写游戏程序,对角色进行控制,无法实现对游戏角色决策能力进行调整,无法实现游戏AI(Artificial Intelligence,人工智能),用户体验差。
[0005] 因此,现有技术还有待于改进和发展。

具体实施方式

[0042] 为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下结合附图对本发明实施例进行介绍。
[0043] 本发明实施例提供了一种游戏AI的编程实现方法。请参阅图1,图1为本发明一种游戏AI的编程实现方法较佳实施例的流程图。如图1所示,其包括步骤:
[0044] 步骤S100、获取大量用户的游戏数据,根据游戏数据生成训练样本,所述游戏数据包括游戏操作记录数据和游戏场景数据;
[0045] 步骤S200、根据训练样本对神经网络进行训练,生成AI决策模型;
[0046] 步骤S300、检测到游戏AI调用指令,获取AI角色的特征数据及游戏场景;
[0047] 步骤S400、获取AI决策模型根据AI角色的特征数据及游戏场景作出的决策,并执行所述决策。
[0048] 具体实施时,本发明实施例的游戏AI的编程实现方法应用于图形化编程,可通过程序将AI决策模型写入函数后,生成函数对应的图形,图形可以是积木的形式,将积木放入对应角色的位置,则可直接调用游戏AI。
[0049] 本发明实施例的采用有监督学习模式对神经网络进行训练,从而得到游戏AI的决策模型。神经网络的结构如图2所示,一般是输入层、隐藏层和输出层组成。输入层用于输入训练样本,隐藏层用于对输入层的训练样本进行运算和处理,输出层用于输出训练结果。例如,输入层负责收集信息,就是游戏中实时变化的数据;比如自己角色的坐标、自己的血量、敌人的坐标、敌人的数量等等;隐藏层用于将收集的信息导入后进行运算和处理;输出层:输出分类结果,就相当于我们玩游戏时做出的决策。比如控制角色移动,控制角色跳跃,控制角色发射子弹等等。
[0050] 用户预先在玩游戏,生成大量的游戏数据,游戏数据包括游戏场景数据以及用户的操作,以及操作后对应的游戏数据,如角色死亡等。对游戏数据处理后生成训练样本,根据训练样本对神经网络进行训练,生成AI决策模型;
[0051] 将生成的AI决策模型对应的图形化积木添加至角色积木的位置,角色积木获取当前的游戏场景,根据当前的游戏场景输出决策,并控制角色执行对应的决策。决策是指在游戏中角色的执行的操作,例如行进、跳跃等操作。
[0052] 进一步的实施例中,获取大量用户的游戏数据,根据游戏数据生成训练样本,包括:
[0053] 记录大量用户在操作游戏中的生成的游戏数据;
[0054] 对所述游戏数据进行过滤,获取满足预设条件的游戏数据;
[0055] 根据游戏数据生成训练样本。
[0056] 具体地,以下实施例以游戏《Flappy bird》为例进行介绍,记录大量用户在操作游戏中的生成的游戏数据;例如,将小鸟飞和不飞的数据都进行记录,特别要注意的是记录不飞行数据的时候,因为源码编辑器一秒是60帧,不飞的情况比较多帧,数据太多。进一步地,可设置一个限制条件,只选取二十分之一的概率去记录,即有20次不飞的数据帧的时候,我们才记录一帧不飞的数据,并随机选取20次不飞的数据帧进行记录。
[0057] 在游戏数据生成完毕后,如果训练的数据是你不想要的,可清空上一次的训练数据,从而选取满足用户设置的条件的游戏数据生成训练样本。
[0058] 在进一步地实施例中,获取大量用户的游戏数据,根据游戏数据生成训练样本前,包括:
[0059] 预先对神经网络的网络结构进行设置。
[0060] 具体实施时,以游戏《Flappy bird》为例,选择小鸟为AI角色,初始化一个模型:模型1。其中模型1中的输入层和输出层的数据我们先空着,隐含层可以自己调整,对于Flappybird这个游戏,我们推荐设为隐含层单层4个神经元。
[0061] 进一步地,神经网络包括输入层、隐藏层和输出层;
[0062] 则预先对神经网络的网络结构进行设置,包括:
[0063] 预先设置所述输入层用于采集游戏中实时变化的数据;
[0064] 预先设置所述隐藏层用于将输入层采集的数据进行运算和处理;
[0065] 预先设置所述输出层用于输出分类结果。
[0066] 具体实施时,接上述实施例,确定输入层的信息:我们选择的两个特征是:“小鸟”和“柱子下”角色的Y坐标值,如图3所示,“小鸟”角色的将中心点设置在小鸟中间,“柱子下”角色的中心点为“柱子下”的顶部中心。
[0067] 确定输出层的信息如下:用户玩这个游戏时,会有两种操作:什么都不做和点击鼠标。对应到GameAI,就是两个输出结果:1、不操作,2、使小鸟飞行。由于机制上的设定,要想调用到AI角色的使用行为,我们必须先用函数积木,将鼠标点击触发的飞行事件封装起来。然后设置AI角色的使用行为积木调用。
[0068] 进一步地,预先设置所述输出层用于输出分类结果后,还包括:
[0069] 预先设置AI角色的死亡条件。
[0070] 具体实施时,可根据游戏的不同对AI角色的死亡条件进行设置。在《Flappy bird》中设置“小鸟”角色的死亡条件,例如“小鸟”角色的X坐标与柱子的X坐标相同时,“小鸟”角色的Y坐标小于“下柱子”的Y坐标,或“小鸟”角色的Y坐标大于“上柱子”的Y坐标,或是未检测到柱子时,“小鸟”角色的Y坐标大于“屏幕”的最大Y坐标,或“小鸟”角色的Y坐标小于“屏幕”的最小Y坐标。
[0071] 进一步地,预先设置AI角色的死亡条件后,还包括:
[0072] 对输入层和输出层的数量进行设置。
[0073] 具体实施时,确认了输入输出信息后,还要记得在初始化模型的位置填入输入层和输出层的数量,完成整个模型的设定。
[0074] 输入层输入的特征是“小鸟的Y坐标”和“柱子下”的Y坐标,所以是2个;输出层输出的是“不操作”和“飞行”,所以也是2个。
[0075] 进一步地,根据训练样本对神经网络进行训练,生成AI决策模型,包括:
[0076] 根据训练样本对神经网络进行训练,当检测到AI角色死亡时,生成初始AI决策模型;
[0077] 根据后向传播算法对所述初始AI决策模型进行优化后,生成AI决策模型。
[0078] 具体实施时,当AI角色死亡时,我们可以使用“后向传播算法”继续优化所选用的模型。根据记录的训练数据优化后,模型将会模仿训练数据中的行为继续执行决策。训练完毕后,如果想保留之前的训练结果,将AI决策模型对应的积木替换初始化模型积木后再运行。其中后向传播算法是适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上。输入输出关系实质上是一种映射关系:一个n输入m输出的后向传播神经网络所完成的功能是从n维欧氏空间向m维欧氏空间中一有限域的连续映射,这一映射具有高度非线性。它的信息处理能力来源于简单非线性函数的多次复合,因此具有很强的函数复现能力。
[0079] 当模型训练好后,我们就可以使用该模型,让AI角色自己做决策,自动进行游戏。例如,将“AI角色做出决策”积木放在AI角色特征积木下方。AI能够基于当前的特征值做出使用行为的决策,即“不操作”或“飞行”,实现AI角色的自动游戏。图形化编程的实现方法也降低了编程难度,提升用户体验。
[0080] 需要说明的是,在上述各个实施例中,上述各步骤之间并不必然存在一定的先后顺序,本领域普通技术人员,根据本发明实施例的描述可以理解,不同实施例中,上述各步骤可以有不同的执行顺序,亦即,可以并行执行,变可以交换执行等等。
[0081] 本发明另一实施例提供一种游戏AI的编程实现装置,如图4所示,装置10包括:
[0082] 一个或多个处理器110以及存储器120,图4中以一个处理器110为例进行介绍,处理器110和存储器120可以通过总线或者其他方式连接,图4中以通过总线连接为例。
[0083] 处理器110用于完成,装置10的各种控制逻辑,其可以为通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、单片机、ARM(Acorn RISC Machine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器110还可以是任何传统处理器、微处理器或状态机。处理器110也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核、或任何其它这种配置。
[0084] 存储器120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的游戏AI的编程实现方法对应的程序指令。处理器110通过运行存储在存储器120中的非易失性软件程序、指令以及单元,从而执行装置10的各种功能应用以及数据处理,即实现上述方法实施例中的游戏AI的编程实现方法。
[0085] 存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需要的应用程序;存储数据区可存储根据装置10使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器120可选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至装置10。
上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0086] 一个或者多个单元存储在存储器120中,当被一个或者多个处理器110执行时,执行上述任意方法实施例中的游戏AI的编程实现方法,例如,执行以上描述的图1中的方法步骤S100至步骤S400。
[0087] 本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图1中的方法步骤S100至步骤S400。
[0088] 作为示例,非易失性存储介质能够包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦ROM(EEPROM)或闪速存储器。易失性存储器能够包括作为外部高速缓存存储器的随机存取存储器(RAM)。通过说明丽非限制,RAM可以以诸如同步RAM(SRAM)、动态RAM、(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)以及直接Rambus(兰巴斯)RAM(DRRAM)之类的许多形式得到。本文中所描述的操作环境的所公开的存储器组件或存储器旨在包括这些和/或任何其他适合类型的存储器中的一个或多个。
[0089] 本发明的另一种实施例提供了一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行上述方法实施例的游戏AI的编程实现方法。例如,执行以上描述的图1中的方法步骤S100至步骤S400。
[0090] 以上所描述的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0091] 通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存在于计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行各个实施例或者实施例的某些部分的方法。
[0092] 除了其他之外,诸如"能够'、"能"、"可能"或"可以"之类的条件语言除非另外具体地陈述或者在如所使用的上下文内以其他方式理解,否则一般地旨在传达特定实施方式能包括(然而其他实施方式不包括)特定特征、元件和/或操作。因此,这样的条件语言一般地还旨在暗示特征、元件和/或操作对于一个或多个实施方式无论如何都是需要的或者一个或多个实施方式必须包括用于在有或没有输入或提示的情况下判定这些特征、元件和/或操作是否被包括或者将在任何特定实施方式中被执行的逻辑。
[0093] 已经在本文中在本说明书和附图中描述的内容包括能够提供游戏AI的编程实现方法及装置的示例。当然,不能够出于描述本公开的各种特征的目的来描述元件和/或方法的每个可以想象的组合,但是可以认识到,所公开的特征的许多另外的组合和置换是可能的。因此,显而易见的是,在不脱离本公开的范围或精神的情况下能够对本公开做出各种修改。此外,或在替代方案中,本公开的其他实施例从对本说明书和附图的考虑以及如本文中所呈现的本公开的实践中可能是显而易见的。意图是,本说明书和附图中所提出的示例在所有方面被认为是说明性的而非限制性的。尽管在本文中采用了特定术语,但是它们在通用和描述性意义上被使用并且不用于限制的目的。

当前第1页 第1页 第2页 第3页
相关技术
方法装置相关技术
游戏编程相关技术
李天驰发明人的其他相关专利技术