CN115957510A - 一种角色行为控制的方法及系统 - Google Patents
一种角色行为控制的方法及系统 Download PDFInfo
- Publication number
- CN115957510A CN115957510A CN202310128902.2A CN202310128902A CN115957510A CN 115957510 A CN115957510 A CN 115957510A CN 202310128902 A CN202310128902 A CN 202310128902A CN 115957510 A CN115957510 A CN 115957510A
- Authority
- CN
- China
- Prior art keywords
- node
- state
- action
- tree
- branch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000006399 behavior Effects 0.000 title abstract description 64
- 230000009471 action Effects 0.000 claims abstract description 165
- 230000003213 activating effect Effects 0.000 claims abstract description 24
- 238000004364 calculation method Methods 0.000 claims abstract description 15
- 230000002085 persistent effect Effects 0.000 claims description 51
- 230000000875 corresponding effect Effects 0.000 claims description 22
- 238000004140 cleaning Methods 0.000 claims description 21
- 230000001276 controlling effect Effects 0.000 claims description 16
- 238000011156 evaluation Methods 0.000 claims description 11
- 238000010276 construction Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 abstract description 19
- 238000003066 decision tree Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 13
- 239000008280 blood Substances 0.000 description 4
- 210000004369 blood Anatomy 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种角色行为控制的方法及系统。该方法应用于计算机技术领域,首先根据预设的参数计算得到配置数据。然后基于所述配置数据构建用于决策且具有复用功能的树状数据结构,所述树状数据结构包括动作节点及分支节点。按照预设时间阈值周期性更新所述树状结构,并激活所述动作节点和/或所述分支节点,基于所述动作节点及所述分支节点控制所述角色行为。在本申请中还公开了一种角色行为控制的系统。在本申请实施例中,实现了提高对于角色行为控制的灵活性及扩展性。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种角色行为控制的方法及系统。
背景技术
在角色扮演游戏(RPG)内,游戏角色实质上是用数据来描述的虚拟对象。这些数据可以描述和表示虚拟对象的角色类型、外观、属性、状态、位置等信息。游戏角色具有丰富多样的行为,在抽象意义上,这些行为等同于对角色的数据按照一定的规律进行计算操作,使游戏角色能够自动且有逻辑地实现一些角色行为。
在现有技术中使用有限状态机、决策树及行为树等方法实现对于游戏角色的行为控制,但是上述提到的现有技术中的三种实现方式具有灵活性及扩展性较差的缺点。
发明内容
有鉴于此,本申请实施例提供了一种角色行为控制的方法及系统,旨在实现角色行为的自动化,并提高对于角色行为控制的灵活性及扩展性。
第一方面,本申请实施例提供了一种角色行为控制的方法,所述方法包括:
根据预设的参数计算得到配置数据;
基于所述配置的数据构建用于决策且具有复用功能的树状数据结构,所述树状数据结构包括动作节点及分支节点;
按照预设时间阈值周期性更新所述树状结构,并激活所述动作节点和/或所述分支节点;
基于所述动作节点及所述分支节点控制所述角色行为。
可选的,所述构建多个用于决策的树状数据结构,包括:
为所述分支节点设置用于进行决策的求值器;
设定所述树状数据结构的状态;
设定所述树状数据结构的所述预设时间阈值。
可选的,所述按照预设时间阈值周期性更新所述树状数据结构,并激活所述动作节点和/或所述分支节点,包括:
调用所述树状数据结构的更新行为更新所述树状数据结构;
从所述树状数据结构根部的分支节点开始所述更新行为;
基于所述分支节点的所述求值器进行求值操作得到序列号,选择并激活所述序列号对应的动作节点和/或分支节点。
可选的,当存在动作节点处于运行状态时,所述按照预设时间阈值周期性更新所述树状数据结构,并激活所述动作节点和/或所述分支节点之前,还包括:
调用所述动作节点的更新接口;
利用所述更新接口完成所述动作节点的状态更新;
当所述动作节点的状态为终止时,触发所述动作节点的清理接口清理数据。
可选的,所述选择并激活对应的动作节点和/或分支节点,包括:
若当前选择并激活的节点为动作节点,则运行所述动作节点;
若当前选择并激活的节点为分支节点,则运行所述分支节点对应的分支上的求值器的求值操作并得到序列号,运行所述序列号对应的所述分支节点的子节点。
可选的,所述动作节点包括持续性动作节点及非持续性动作节点;
所述持续性动作节点包括未初始化、运行中及终止三种状态,且配置有初始化接口、更新接口及清理接口中的至少一种接口;
所述非持续性动作节点包括未初始化及终止两种状态,且配置有初始化接口及清理接口。
可选的,所述选择并激活对应的动作节点,包括:
当持续性的动作节点被选择并激活时,执行所述持续性的动作节点自身的初始化接口,并将所述持续性的动作节点的状态从未初始化状态切换为运行中状态,在所述运行中状态下,所述持续性的动作节点通过调用更新接口进行状态的更新;
当非持续性的动作节点被选择并激活时,执行所述非持续性的动作节点自身的初始化接口,将状态从未初始化状态切换为终止状态,并触发所述非持续性的动作节点的清理接口进行数据清理,所述数据清理执行结束将所述非持续性的动作节点的状态从终止状态切换为未初始化状态。
第二方面,本申请实施例提供了一种角色行为控制的系统,所述系统包括:
计算模块,用于根据预设的参数以及具体的运行环境,计算得到配置数据;
构建模块,用于基于所述配置的数据构建多个用于决策的树状数据结构,所述树状数据结构包括动作节点及分支节点;
更新模块,用于按照预设时间阈值周期性更新所述树状结构,并激活所述动作节点和/或所述分支节点;
控制模块,用于基于所述动作节点及所述分支节点控制所述角色行为。
可选的,所述构建模块,具体用于:
为所述分支节点设置用于进行决策的求值器;
设定所述树状数据结构的状态;
设定所述树状数据结构的所述预设时间阈值。
可选的,所述更新模块,具体用于:
调用所述树状数据结构的更新行为更新所述树状数据结构;
从所述树状数据结构根部的分支节点开始所述更新行为;
基于所述分支节点的所述求值器进行求值操作得到序列号,选择并激活所述序列号对应的动作节点和/或分支节点。
可选的,当存在动作节点处于运行状态时,所述动作节点用于:
调用所述动作节点的更新接口;
利用所述更新接口完成所述动作节点的状态更新;
当更新后所述动作节点的状态为终止时,触发所述动作节点的清理接口清理数据。
可选的,所述动作节点包括持续性动作节点及非持续性动作节点;
所述持续性动作节点包括未初始化、运行中及终止三种状态,且配置更新接口;
所述非持续性动作节点包括未初始化及终止两种状态,且配置有初始化接口及清理接口。
可选的,所述更新模块,具体用于:
当持续性的动作节点被激活时,执行所述持续性的动作节点自身的初始化接口,并将所述持续性的动作节点的状态从未初始化状态切换为运行中状态,在所述运行中状态下,所述持续性的动作节点通过调用更新接口进行状态的更新;
当非持续性的动作节点被激活时,执行所述非持续性的动作节点自身的初始化接口,将状态从未初始化状态切换为终止状态,并触发所述非持续性的动作节点的清理接口进行数据清理,所述数据清理执行结束将所述非持续性的动作节点的状态从终止状态切换为未初始化状态。
第三方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质中存储有代码,当所述代码被运行时,运行所述代码的设备实现前述第一方面任一项所述方法。
本申请提供了一种角色行为控制的方法及系统,在执行所述方法时,首先根据预设的参数计算得到配置数据。然后基于所述配置的数据构建用于决策且具有复用功能的树状数据结构,所述树状数据结构包括动作节点及分支节点。按照预设时间阈值周期性更新所述树状结构,并激活所述动作节点和/或所述分支节点,最后基于所述动作节点及所述分支节点控制所述角色行为。如此,通过上述提出的一种角色行为控制的方法,通过对于树状结构的更新,以及对各个节点的激活,能够灵活的控制角色的行为。不同的分支节点及动作节点分别能够实现不同的功能,通过对于动作节点及分支节点的激活即可实现对于角色行为的自动化控制,提升了对于角色控制的扩展性和灵活度。
附图说明
为更清楚地说明本实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种角色行为控制方法的流程图;
图2为构建决策树的流程图;
图3为一种角色行为控制系统的结构示意图。
具体实施方式
在对于现有技术的研究中发现,随着网络信息技术的发展,大型多人在线角色扮演游戏(MMORPG)的某些玩法需要日复一日地重复,会占用游戏玩家较多的时间。为了节约游戏玩家在重复性玩法上花费的时间,减轻或消除游戏带给游戏玩家的负担,游戏内角色行为的自动化变成了当今游戏迫切需要的功能。
在角色扮演游戏(RPG)内,游戏角色实质上是用数据来描述的虚拟对象。这些数据可以描述和表示虚拟对象的角色类型、外观、属性、状态、位置等信息。游戏角色具有丰富多样的行为,在抽象意义上,这些行为等同于对角色的数据按照一定的规律进行计算操作。另一方面,游戏角色的行为具有目的性和逻辑性,这源于人为的控制,主要通过设计计算机程序算法来实现,在客观上使得游戏角色的行为变得自动化,即玩家无须亲自控制游戏角色的行为,游戏角色能自发地、有逻辑地实现一些人为目的。
带有目的性和逻辑性的游戏角色行为控制算法,本质上是用计算机程序模拟真人的智能,向游戏程序发送控制指令,指挥游戏角色做出各种行为。常见的技术手段包括:有限状态机(Finite Status Machine)、决策树(Decision Tree)和行为树(Behavior Tree)。
有限状态机为角色定义了不同的状态,从一个状态转换到其他状态需要满足特定的条件,具有直观性。然而随着新状态数量的增加,状态之间转换的数量会呈指数级增长,且状态转换的逻辑选择可能需要用更复杂的方法来实现,使得角色行为的逻辑变得难以理解。
决策树使用嵌套的if/else结构模拟真人的决策行为,易于理解。但在一些复杂的逻辑中,大量的可能性会导致决策树的构建变得复杂,结构变得臃肿,且含有一定数量的重复和冗余。
行为树是决策树的改良版,具有模块化的特征,构建过程比较灵活,有利于在逻辑复杂时简化结构。然而由于行为树描述的是反应式决策,表达状态的能力很差,导致每次决策都需要从树根节点开始运算,比较耗费计算资源。此外,任意简单的操作都使用一个节点来表示,有时没有必要。
基于此,本申请提出了一种角色行为控制的方法及系统,能够实现灵活且具有可扩展性地实现对于角色行为的自动化控制。
图1为一种角色行为控制方法的流程图,如图1所示,本申请提供的一种角色行为控制的方法具体为:
S11:根据预设的参数计算得到配置数据。
设置参数应该在初始化系统之前,系统初始化的过程就是利用参数计算、生成数据的过程。上述提到的预设的参数可以为设置游戏角色行为所需的各种静态参数,具体而言,在网络游戏中,同一时间会有大量玩家进行游戏,而每个玩家在同一个游戏系统中也会有多个游戏角色,为了区分不同的游戏角色,游戏系统会给每个游戏角色分配一个用于表明身份的角色标识,并且游戏角色可以与各种游戏对象进行交互,每个游戏对象也都具有独特的对象标识。
其中,游戏对象类型包括:玩家、各种类型的非玩家控制角色(NPC)、物品、装备等游戏元素;所述NPC(Non Player Character)指由游戏系统控制的角色,例如各种类型的怪物,商人,技能导师等。不同类型的游戏对象具有不同的属性,同一类型的游戏对象具有相同的属性;每个属性都有对应的数值,如:角色能够使用的技能类型值、角色的血量值等。在计算配置数据时需要参考预设的参数以及具体的运行环境。初始化系统的过程,本质上就是设置游戏对象之间交互所需的数据,例如NPC所在的场景类型和坐标值、角色血量值的范围、角色使用的技能类型等。将这些数据按照一定的计算方法进行组织,可以生成求值器,配置到对应的分支节点,也可以生成更新接口,配置到对应的动作节点。
S12:基于所述配置数据构建用于决策且具有复用功能的树状数据结构,所述树状数据结构包括动作节点及分支节点。
上述提到的配置数据可以理解为初始化后的节点,上述提到的树状数据结构可以为决策树,决策树(Decision Tree)是一种基本的分类与回归方法。决策树模型呈树形结构,在分类问题中,表示基于特征对数据进行分类的过程。它可以认为是if-then规则的集合。每个内部节点表示在属性上的一个测试,每个分支代表一个测试输出,每个叶节点代表一种类别。在本申请的实施例中,以分支节点作为根节点,动作节点及分支节点均可作为分支节点的子节点。其中动作节点主要用于控制角色执行不同的动作,分支节点主要用于根据角色的状态信息,利用求值器计算出需要激活的节点的序列号,进行对应节点的激活。其中决策树的数量可以不唯一,具体的数量可以由本领域的技术人员根据实际情况及应用场景进行设置,在此不作限定。
上述提到的节点数据具有复用功能,进而使得决策树也具有可以复用的功能,具体而言,可以理解为需要实现的功能或需求一致时,可以将实现该功能或需求的流程封装成一个动作节点,在决策树的分支中直接引用该动作节点,即可实现该功能的模块化,而上述提出的这种功能模块化的节点可以复用到不同的决策树中,同时也可以根据具体的功能对其数据动态地进行适应性的修改,简化了决策树的设计复杂度,同时也使得对于角色行为的控制更加灵活,且具有扩展性。
图2为构建决策树的流程图,如图2所示,构建决策树的过程具体为:
S121:为所述分支节点设置用于进行决策的求值器。
上述提到的求值器重要的作用为根据角色的状态信息进行计算,计算出当前分支节点的子节点的序列号,以便根据计算出的序列号激活对应的节点。游戏角色的当前状态信息可为从游戏环境中提取的,其具体可包括自身血量值、自身内力值、敌人血量值、敌人内力值、与敌人的距离等等。计算的过程可以由一段计算的程序、一个用于计算的模块,或其他能够实现计算的方式完成,具体的实现方式可以由本领域的技术人员根据实际情况及应用场景进行选择,在此不作限定。
不论是分支的求值器还是动作节点,都拥有自定义的数据和方法,且都用基于原型(Prototype)的方法实现了面向对象(Object Oriented)的特性——封装、继承和多态,所以开发时可以快速地利用已经构建好的求值器或动作节点创建新的求值器或动作,灵活地满足需求。
S122:设定所述树状数据结构的状态。
树状数据结构的状态可以为激活、关闭或暂停。可以在系统进行初始化时为其进行设置。在对树状数据结构进行更新时,对应的树状数据结构的状态也会发生改变。
S123:设定所述树状数据结构的所述预设时间阈值。
上述提到的预设时间阈值主要是用于控制更新,当时间达到预设时间阈值时便会对树状数据结构进行更新。可以选择在更新后将计时时间清零后重新开始计时,也可以选择在之前的时间的基础上继续进行计时。计时的操作可以由计时器实现,也可以由专门的计时软件实现,还可以由特定的计时模块实现,其他能够实现计时功能的方式在本申请实施例中均适用,具体的计时方式可以由本领域的技术人员根据实际情况及应用场景进行选择,在此不作限定。
上述提到的S121、S122及S123的执行顺序可以由本领域的技术人员根据实际情况及应用场景进行随意设置,不同的执行顺序不会对本申请的实施例产生负面的影响,在此不作限定。
S13:按照预设时间阈值周期性更新所述树状结构,并激活所述动作节点和/或所述分支节点。
在本申请中提供的决策树需要进行周期性更新,且更新行为从决策树的根节点,也就是分支节点开始,由分支节点的求值器完成一系列的求值操作之后完成决策树的更新。与现有技术中不同的是,本申请中的决策树的更新行为不是每次均从根节点开始,当有动作节点处于运行状态时,决策树的更新不会从根节点开始,而是会直接调用处于运行状态的动作节点的更新接口,通过更新接口设置本次更新后该动作节点的新状态。上述提到的预设时间阈值可以由本领域技术人员根据实际情况及应用场景进行设定,在此不作限定。
当游戏玩家启用该系统时,游戏内线程会在每次主循环中依次调用处于激活状态的每个决策树的更新行为。更新行为从决策树根部的分支节点开始,通过运行分支节点对应的求值器,选择并激活子节点。如果当前激活的子节点是一个分支节点,则运行这个分支上求值器的求值操作,选择当前分支节点的子节点;如果当前激活的子节点是一个动作节点,则运行这个动作节点。
动作节点拥有三种状态,未初始化、运行中、终止,可以配置三种接口(Interface,在设计模式里指返回值数量、类型和参数数量、类型都固定的类成员函数),初始化接口、更新接口和清理接口。一些非持续性的动作只有未初始化和终止两种状态,不配置更新接口。
持续性动作节点可以配置包括但不限于以下接口:初始化接口、更新接口和清理接口,也可以只配置更新接口,还可以配置更新接口,以及初始化接口、清理接口中的至少一种接口。其中,更新接口是必须进行配置的,而其他接口可以由本领域的技术人员根据实际情况及应用场景选择是否进行配置。
当持续性的动作节点被激活后,会执行自身的初始化接口,之后状态从未初始化切换到运行中,并在后续若干次决策树的更新行为中始终处于运行中的状态。当有动作处于运行中的状态时,决策树的更新是不会按前文所述的进行一系列求值操作的,而是会直接调用运行中的动作节点的更新接口。动作节点的更新接口会返回本次更新后该动作的新状态,如果新的状态是终止,则会触发动作节点的清理接口清理数据,然后将状态从终止转为未初始化。在动作终止后,下一次的决策树更新就会重新按前文所述的利用分支节点上的求值器进行求值,选出新的动作节点来激活和运行,或者不激活任何动作。
当非持续性的动作节点被激活后,同样会执行自身的初始化接口,但之后状态会直接从未初始化切换为终止,接着执行动作的清理接口,最后状态切换回未初始化。
分支节点上的求值器运行时,也可以不选择分支的某个子节点激活,而是直接发送游戏指令。根据每个分支所要实现的不同功能,可以在初始化构建时为每个分支装配不同的求值器。
S14:基于所述动作节点及所述分支节点控制所述角色行为。
在本实施例中提出了一种角色行为控制的方法,首先初始化系统并进行数据配置,构建多个用于决策且具有复用功能的树状数据结构,树状数据结构包括动作节点及分支节点。当间隔时间达到预设时间阈值时,更新树状数据结构,并激活动作节点和/或分支节点。最后基于所述动作节点及所述分支节点控制所述角色行为。
如此,能够通过为用于决策的树状结构设置动作节点及分支节点,在分支节点设置求值器用于确定需要激活的节点,同时不论是分支的求值器还是动作节点,都拥有自定义的数据和方法,且都用基于原型(Prototype)的方法实现了面向对象(Object Oriented)的特性——封装、继承和多态,所以开发时可以快速地利用已经构建好的求值器或动作节点创建新的求值器或动作,灵活地满足需求。当实现功能及需求相似时,例如一套“召唤坐骑、寻路至指定场景的指定坐标”的流程,就可以将这个流程封装成一个动作节点,在决策树的分支中直接引用该动作,实现功能的模块化,避免出现重复性的代码。例如修改上述动作的目标场景和坐标,只需在运行该动作前修改动作节点中的场景数据和坐标数据即可,这利用了多态的特性。
如果要在原有动作的基础上做修改,又不想影响原来的动作,例如在“召唤坐骑、寻路至指定场景的指定坐标”基础上实现“杀死路上遇到的野怪”,开发时可以利用继承的特性,继承并扩展原有的动作节点。对“基于原型”的对象而言,继承实际上就是将原有对象复制成新的对象,在新对象上修改和增加新的数据或方法。
求值器也具备和动作节点一样的继承和多态特性,可以快速构建功能类似的不同分支,例如不同门派的战斗分支,它们的求值器都继承自同一个求值器模板,只是这些求值器中包含的私有数据会根据门派技能、攻击距离等属性不同而有区别。
本申请实施例中提出的决策树上所有分支节点的求值器、动作节点之间的数据通信,既可以通过访问全局的数据池,也可以通过传值来实现。数据的持有和传递,使决策树拥有了表达和维护状态的能力。综上所述,本申请实施例中提出的一种角色行为控制的方法,具有灵活性及扩展性的优点。
在本申请的实施例中还提出了一种角色行为控制的系统,图3为一种角色行为控制系统的结构示意图,如图3所示,角色行为控制系统具体包括:
计算模块100,用于根据预设的参数计算得到配置数据;
计算模块100,还可以用于根据预设参数以及具体的运行环境,计算得到配置数据。
构建模块200,用于构建多个用于决策的树状数据结构,所述树状数据结构包括动作节点及分支节点;
更新模块300,用于按照预设时间阈值周期性更新所述树状结构,并激活所述动作节点和/或所述分支节点;
控制模块400,用于基于所述动作节点及所述分支节点控制所述角色行为。
在可以的实现方式中,更新模块300具体用于:
调用所述树状数据结构的更新行为更新所述树状数据结构;
从所述树状数据结构根部的分支节点开始所述更新行为;
基于所述分支节点的所述求值器进行求值操作得到序列号,选择并激活所述序列号对应的动作节点和/或分支节点。
在可以的实现方式中,构建模块200,具体用于:
为所述分支节点设置用于进行决策的求值器;
设定所述树状数据结构的状态;
设定所述树状数据结构的所述预设时间阈值。
在可以的实现方式中,更新模块300,具体用于:
调用所述树状数据结构的更新行为更新所述树状数据结构;
从所述树状数据结构根部的分支节点开始所述更新行为;
基于所述分支节点的所述求值器进行求值操作得到序列号,选择并激活所述序列号对应的动作节点和/或分支节点。
在可以的实现方式中,更新模块300,具体用于:
当持续性的动作节点被激活时,执行所述持续性的动作节点自身的初始化接口,并将所述持续性的动作节点的状态从未初始化状态切换为运行中状态,在所述运行中状态下,所述持续性的动作节点通过调用更新接口进行状态的更新;
当非持续性的动作节点被激活时,执行所述非持续性的动作节点自身的初始化接口,将状态从未初始化状态切换为终止状态,并触发所述非持续性的动作节点的清理接口进行数据清理,所述数据清理执行结束将所述非持续性的动作节点的状态从终止状态切换为未初始化状态。
在本实施例中提出了一种角色行为控制的系统,系统中主要包括初始化模块、构建模块、更新模块及控制模块,通过将if/else逻辑和条件计算方法封装在求值器和动作节点内部并赋予这二者封装、继承、多态的特性,使计算机决策的流程被拆分成可以定制、修改和扩展的模块。这种抽象化处理在便于灵活组装的同时也避免了决策计算过程的重复和冗余。同时,为动作节点和分支求值器赋予自定义的数据和方法,增强了在决策过程中表达和传递状态的能力,降低了对计算资源的消耗。通过持续性动作的特殊设计,使决策树不必在每次更新时都重新从根节点开始运算,进一步节约了计算资源。另外,由于允许不通过动作节点直接发送游戏指令,树结构的组织建构变得更加简洁,提高了对于角色行为控制的灵活性。
本申请实施例还提供了对应的设备以及计算机可读存储介质,用于实现本申请实施例提供的方案。
其中,所述设备包括存储器和处理器,所述存储器用于存储指令或代码,所述处理器用于执行所述指令或代码,以使所述设备执行本申请任一实施例所述的一种角色行为控制的方法。
在实际应用中,所述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (11)
1.一种角色行为控制的方法,其特征在于,所述方法包括:
根据预设的参数计算得到配置数据;
基于所述配置数据构建用于决策且具有复用功能的树状数据结构,所述树状数据结构包括动作节点及分支节点;
按照预设时间阈值周期性更新所述树状结构,并激活所述动作节点和/或所述分支节点;
基于所述动作节点及所述分支节点控制所述角色行为。
2.根据权利要求1所述的方法,其特征在于,所述构建多个用于决策的树状数据结构,包括:
为所述分支节点设置用于进行决策的求值器;
设定所述树状数据结构的状态;
设定所述树状数据结构的所述预设时间阈值。
3.根据权利要求2所述的方法,其特征在于,所述按照预设时间阈值周期性更新所述树状结构,并激活所述动作节点和/或所述分支节点,包括:
调用所述树状数据结构的更新行为,按照预设时间阈值周期性更新所述树状数据结构;
从所述树状数据结构根部的分支节点开始所述更新行为;
基于所述分支节点的所述求值器进行求值操作得到序列号,选择并激活所述序列号对应的动作节点和/或分支节点。
4.根据权利要求3所述的方法,其特征在于,当存在动作节点处于运行状态时,所述按照预设时间阈值周期性更新所述树状数据结构,并激活所述动作节点和/或所述分支节点之前,还包括:
调用所述动作节点的更新接口;
利用所述更新接口完成所述动作节点的状态更新;
当所述动作节点的状态为终止时,触发所述动作节点的清理接口清理数据。
5.根据权利要求1所述的方法,其特征在于,所述选择并激活对应的动作节点和/或分支节点,包括:
若当前选择并激活的节点为动作节点,则运行所述动作节点;
若当前选择并激活的节点为分支节点,则运行所述分支节点对应的分支上的求值器的求值操作并得到序列号,运行所述序列号对应的所述分支节点的子节点。
6.根据权利要求1所述的方法,其特征在于,所述动作节点包括持续性动作节点及非持续性动作节点;
所述持续性动作节点包括未初始化、运行中及终止三种状态,且配置有更新接口;
所述非持续性动作节点包括未初始化及终止两种状态,且配置有初始化接口及清理接口。
7.根据权利要求6所述的方法,其特征在于,所述选择并激活对应的动作节点,包括:
当持续性的动作节点被选择并激活时,执行所述持续性的动作节点自身的初始化接口,并将所述持续性的动作节点的状态从未初始化状态切换为运行中状态,在所述运行中状态下,所述持续性的动作节点通过调用更新接口进行状态的更新;
当非持续性的动作节点被选择并激活时,执行所述非持续性的动作节点自身的初始化接口,将状态从未初始化状态切换为终止状态,并触发所述非持续性的动作节点的清理接口进行数据清理,所述数据清理执行结束将所述非持续性的动作节点的状态从终止状态切换为未初始化状态。
8.一种角色行为控制的系统,其特征在于,所述系统包括:
计算模块,用于根据预设的参数计算得到配置数据;
构建模块,用于基于所述配置数据构建多个用于决策的树状数据结构,所述树状数据结构包括动作节点及分支节点;
更新模块,用于按照预设时间阈值周期性更新所述树状结构,并激活所述动作节点和/或所述分支节点;
控制模块,用于基于所述动作节点及所述分支节点控制所述角色行为。
9.根据权利要求8所述的系统,其特征在于,所述构建模块,具体用于:
为所述分支节点设置用于进行决策的求值器;
设定所述树状数据结构的状态;
设定所述树状数据结构的所述预设时间阈值。
10.根据权利要求8所述的系统,其特征在于,所述更新模块,具体用于:
调用所述树状数据结构的更新行为更新所述树状数据结构;
从所述树状数据结构根部的分支节点开始所述更新行为;
基于所述分支节点的所述求值器进行求值操作得到序列号,选择并激活所述序列号对应的动作节点和/或分支节点。
11.根据权利要求8所述的系统,其特征在于,所述更新模块,具体用于:
当持续性的动作节点被激活时,执行所述持续性的动作节点自身的初始化接口,并将所述持续性的动作节点的状态从未初始化状态切换为运行中状态,在所述运行中状态下,所述持续性的动作节点通过调用更新接口进行状态的更新;
当非持续性的动作节点被激活时,执行所述非持续性的动作节点自身的初始化接口,将状态从未初始化状态切换为终止状态,并触发所述非持续性的动作节点的清理接口进行数据清理,所述数据清理执行结束将所述非持续性的动作节点的状态从终止状态切换为未初始化状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310128902.2A CN115957510B (zh) | 2023-02-03 | 2023-02-03 | 一种角色行为控制的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310128902.2A CN115957510B (zh) | 2023-02-03 | 2023-02-03 | 一种角色行为控制的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115957510A true CN115957510A (zh) | 2023-04-14 |
CN115957510B CN115957510B (zh) | 2023-11-10 |
Family
ID=87363598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310128902.2A Active CN115957510B (zh) | 2023-02-03 | 2023-02-03 | 一种角色行为控制的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115957510B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050039107A1 (en) * | 2003-08-12 | 2005-02-17 | Hander William B. | Text generator with an automated decision tree for creating text based on changing input data |
CN105561578A (zh) * | 2015-12-11 | 2016-05-11 | 北京像素软件科技股份有限公司 | 一种非玩家控制角色npc的行为决策方法 |
CN107085519A (zh) * | 2017-05-04 | 2017-08-22 | 网易(杭州)网络有限公司 | 行为树调试处理方法、装置、系统、存储介质和处理器 |
CN107899244A (zh) * | 2017-11-29 | 2018-04-13 | 武汉秀宝软件有限公司 | 一种ai模型的构建方法及系统 |
CN108989075A (zh) * | 2017-06-05 | 2018-12-11 | 中国移动通信集团广东有限公司 | 一种网络故障定位方法及系统 |
CN111796593A (zh) * | 2020-06-08 | 2020-10-20 | 北京旷视机器人技术有限公司 | 机器人的控制方法、装置和电子设备 |
-
2023
- 2023-02-03 CN CN202310128902.2A patent/CN115957510B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050039107A1 (en) * | 2003-08-12 | 2005-02-17 | Hander William B. | Text generator with an automated decision tree for creating text based on changing input data |
CN105561578A (zh) * | 2015-12-11 | 2016-05-11 | 北京像素软件科技股份有限公司 | 一种非玩家控制角色npc的行为决策方法 |
CN107085519A (zh) * | 2017-05-04 | 2017-08-22 | 网易(杭州)网络有限公司 | 行为树调试处理方法、装置、系统、存储介质和处理器 |
CN108989075A (zh) * | 2017-06-05 | 2018-12-11 | 中国移动通信集团广东有限公司 | 一种网络故障定位方法及系统 |
CN107899244A (zh) * | 2017-11-29 | 2018-04-13 | 武汉秀宝软件有限公司 | 一种ai模型的构建方法及系统 |
CN111796593A (zh) * | 2020-06-08 | 2020-10-20 | 北京旷视机器人技术有限公司 | 机器人的控制方法、装置和电子设备 |
Non-Patent Citations (1)
Title |
---|
火魂侠: "[游戏引擎]Lua游戏AI开发指南(六)决策制定之决策树", pages 1 - 8, Retrieved from the Internet <URL:https://www.bilibili.com/read/cv9314117/> * |
Also Published As
Publication number | Publication date |
---|---|
CN115957510B (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102360420B1 (ko) | 비디오 게임에서 플레이어 게임플레이를 모방하기 위한 커스텀 모델 | |
CN110147883B (zh) | 用于作战仿真的模型的训练方法、装置、设备和存储介质 | |
RU2331918C2 (ru) | Проактивный интерфейс пользователя, содержащий эволюционирующий агент | |
Sekhavat | Behavior trees for computer games | |
US20050118996A1 (en) | Proactive user interface including evolving agent | |
EP1528464A2 (en) | Proactive user interface including evolving agent | |
US20050143138A1 (en) | Proactive user interface including emotional agent | |
CN110134375B (zh) | 游戏角色行为的控制方法、装置及可读存储介质 | |
CN103577704A (zh) | 游戏系统中npc处理事件的方法及装置 | |
Merrick | Intrinsic motivation and introspection in reinforcement learning | |
CN111701246B (zh) | 一种游戏ai的决策配置方法和装置 | |
Gaudl et al. | Behaviour oriented design for real-time-strategy games. | |
CN113926196A (zh) | 虚拟游戏角色的控制方法、装置、存储介质和电子装置 | |
WO1998041952A1 (fr) | Generateur d'images et support de donnees | |
CN115957510A (zh) | 一种角色行为控制的方法及系统 | |
Brom et al. | Affordances and level-of-detail AI for virtual humans | |
Ch'ng et al. | From roles to teamwork: a framework and architecture | |
CN111249733B (zh) | 一种创建虚拟对象的方法和装置 | |
Dragert et al. | Generating extras: Procedural AI with statecharts | |
Lim | An AI player for DEFCON: An evolutionary approach using behavior trees | |
Sanza et al. | Adaptive behavior for cooperation: a virtual reality application | |
Leite et al. | Evolving characters in role playing games | |
Acampora et al. | Enhancing transparent fuzzy controllers through temporal concepts: an application to computer games | |
CN117046111B (zh) | 一种游戏技能的处理方法以及相关装置 | |
Cutumisu | Using behaviour patterns to generate scripts for computer role-playing games |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |