CN109725892B - ***逻辑控制方法及装置 - Google Patents
***逻辑控制方法及装置 Download PDFInfo
- Publication number
- CN109725892B CN109725892B CN201711045554.3A CN201711045554A CN109725892B CN 109725892 B CN109725892 B CN 109725892B CN 201711045554 A CN201711045554 A CN 201711045554A CN 109725892 B CN109725892 B CN 109725892B
- Authority
- CN
- China
- Prior art keywords
- virtual
- behavior tree
- virtual objects
- target
- tree instance
- 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.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种***逻辑控制方法及装置,属于计算机领域。所述方法包括:获取第一行为树实例,第一行为树实例中包括用于对虚拟环境进行逻辑控制的至少一条执行路径;根据虚拟环境的当前运行信息,在第一行为树实例的至少一条执行路径中确定目标执行路径,根据目标执行路径,确定需要控制的n个虚拟对象和n个虚拟对象各自对应的目标事件,n为正整数;通过n个虚拟对象各自对应的第二行为树实例,控制n个虚拟对象执行各自对应的目标事件。本发明通过第一行为树实例与n个第二行为树实例共同协调作用,实现自动控制***的目的,从而提高了***的响应速率。
Description
技术领域
本发明实施例涉及计算机领域,特别涉及一种***逻辑控制方法及装置。
背景技术
在开发大型***或游戏的过程中,开发人员需要花费大量时间设置复杂的控制逻辑。
相关技术中,开发人员通常利用有限状态机(英文:Finite-State Machine,简称:FSM )对***进行逻辑控制。有限状态机中包括有限个状态(英文:State )以及各个状态之间的状态转移关系,其中,有限状态机中的各个状态与***的***状态对应。开发人员在设置***的控制逻辑时,只需要向有限状态机中添加状态和状态转移关系,并设置相应的状态转移条件即可。
但是,随着***逻辑复杂度的提高,开发人员需要不断修改或增加有限状态机中的状态以及对应的状态转移关系,导致有限状态机过于臃肿,影响***的响应速率。
发明内容
为了解决相关技术中利用有限状态机对***进行逻辑控制时,由于有限状态机过于臃肿而导致***的响应速率减慢的问题,本发明实施例提供了一种***逻辑控制方法及装置。所述技术方案如下:
第一方面,提供了一种***逻辑控制方法,所述方法包括:
获取第一行为树实例,所述第一行为树实例中包括用于对虚拟环境进行逻辑控制的至少一条执行路径;
根据所述虚拟环境的当前运行信息,在所述第一行为树实例的所述至少一条执行路径中确定目标执行路径;
根据所述目标执行路径,确定需要控制的n个虚拟对象和所述n个虚拟对象各自对应的目标事件,所述n为正整数;
通过所述n个虚拟对象各自对应的第二行为树实例,控制所述n个虚拟对象执行各自对应的所述目标事件。
第二方面,提供了一种***逻辑控制装置,所述装置包括:
获取模块,用于获取第一行为树实例,所述第一行为树实例中包括用于对虚拟环境进行逻辑控制的至少一条执行路径;
第一确定模块,用于根据所述虚拟环境的当前运行信息,在所述第一行为树实例的所述至少一条执行路径中确定目标执行路径;
第二确定模块,用于根据所述目标执行路径,确定需要控制的n个虚拟对象和所述n个虚拟对象各自对应的目标事件,所述n为正整数;
控制模块,用于通过所述n个虚拟对象各自对应的第二行为树实例,控制所述n个虚拟对象执行各自对应的所述目标事件。
第三方面,提供了一种逻辑控制设备,所述逻辑控制设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现第一方面所提供的***逻辑控制方法。
第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现第一方面所提供的***逻辑控制方法。
本发明实施例提供的技术方案带来的有益效果是:
通过获取第一行为树实例,第一行为树实例中包括用于对虚拟环境进行逻辑控制的至少一条执行路径,根据虚拟环境的当前运行信息,在第一行为树实例的至少一条执行路径中确定目标执行路径,根据目标执行路径,确定需要控制的n个虚拟对象和n个虚拟对象各自对应的目标事件,,控制n个虚拟对象执行各自对应的目标事件;避免了相关技术中利用有限状态机对***进行逻辑控制时由于有限状态机过于臃肿而导致***的响应速率减慢的情况,利用扩展性强且复用性高的行为树进行***逻辑控制,并将行为树实例分为第一行为树实例和第二行为树实例,分别负责不同层次的逻辑控制,即通过第一行为树实例与n个第二行为树实例共同协调作用,实现自动控制***的目的,从而提高了***的响应速率。
附图说明
图1是本发明实施例提供的***逻辑控制方法所涉及的实施环境;
图2是本发明一个实施例提供的***逻辑控制方法的流程图;
图3是本发明另一个实施例提供的***逻辑控制方法的流程图;
图4是本发明另一个实施例提供的***逻辑控制方法的流程图;
图5是本发明另一个实施例提供的***逻辑控制方法的流程图;
图6是本发明另一个实施例提供的***逻辑控制方法的流程图;
图7是本发明另一个实施例提供的***逻辑控制方法的流程图;
图8是本发明另一个实施例提供的***逻辑控制方法的流程图;
图9是本发明一个实施例提供的***逻辑控制装置的结构示意图;
图10是本发明另一个实施例提供的***逻辑控制装置的结构示意图;
图11是本发明一个实施例提供的终端1100的结构示意图;
图12是本发明一个实施例提供的服务器1200的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了方便理解,下面对本发明实施例中出现的名词进行解释。
行为树:一种计划执行的数学模型,本质上是一种决策树。每棵行为树中包含若干个行为节点,其中,该行为节点包括控制节点和执行节点。执行节点作为行为树的叶节点,用于执行该节点所指示的事件(或行为)。行为树中的控制节点(在树的概念中即为父节点)与若干个子节点相连(控制节点和/或执行节点),用于选择(Selector)执行、序列(Sequence)执行或并行(Parallel)执行某一或某些子节点。其中,选择执行指按序执行子节点,并在子节点返回true时停止执行后续子节点;序列执行指按序执行各个子节点,并在子节点返回false时停止执行后续子节点;并行执行指按序执行所有子节点(不论返回true或false)。
分层行为树:包括至少两层行为树。本发明实施例中,以分层行为树包括两层行为树为例进行说明,第一层即位于上层的行为树称为第一行为树,第二层即位于下层的行为树称为第二行为树。
第一行为树实例:也称为决策行为树实例,由第一行为树实例化创建而成。
第一行为树实例中包括用于对虚拟环境进行逻辑控制的至少一条执行路径。其中,执行路径用于指示行为树实例中根节点到叶节点之间的路径,即执行某一事件时经过的各个行为节点所构成的路径。
第一行为树实例用于根据虚拟环境的当前运行信息,在至少一条执行路径中确定目标执行路径,目标执行路径用于指示虚拟环境中需要控制的n个虚拟对象和n个虚拟对象各自对应的目标事件,其中, n为正整数。
可选的,第一行为树实例支持虚拟环境中m个虚拟对象的复用。
比如,虚拟环境也称为三维虚拟环境或虚拟游戏环境。
第二行为树实例:也称为基础行为树实例,由第二行为树实例化创建而成。
第二行为树实例用于控制虚拟对象执行预定事件,第二行为树实例与虚拟对象一一对应。
在本发明实施例中,虚拟环境中的m个虚拟对象复用一个第一行为树实例,每个虚拟对象具有各自对应的第二行为树实例,其中,m大于n且m为正整数。
可选的,每个第二行为树挂载在一个虚拟对象上,控制该虚拟对象执行预设事件。其中,虚拟对象是具有执行预定事件的能力的对象。比如,虚拟对象是虚拟环境中的人工智能(Artificial Intelligence,AI)实体。
比如,第二行为树实例用于控制虚拟对象执行待机、移动、攻击、建造和死亡中的至少一种基本行为。
相关技术中,开发人员通常采用有限状态机对***进行逻辑控制。随着***控制逻辑的不断复杂,开发人员向有限状态机添加状态的过程中,需要添加相应的状态转移关系。比如,当现有的有限状态机中包含n个状态时,用户向该有限状态机中添加一个状态,则需要添加( n-1 )个状态转移关系,显然,当***具有复杂控制逻辑时,后续维护和升级成本较高;并且,有限状态机中状态转移关系的数量庞大(状态转移关系的数量m=n*( n-1 )/2,导致有限状态机过于臃肿,最终影响所控制***的响应速率。
与有限状态机相比,行为树中没有状态的概念,行为树中各个行为节点的耦合度较低,利用行为树进行***逻辑控制时,可以通过重组不同的行为节点实现不同的行为树,从而实现不同的逻辑控制。并且,行为树中的行为节点具有较强的复用性,编写好的行为节点能够被不同的行为树复用,后续维护和升级成本低且易于扩展。因此,应用于控制逻辑复杂的***时,行为树的执行效率高于有限状态机,相应的,***的响应速率也更快。
但是,目前的行为树往往是挂载在***中的一个特定的虚拟对象上,只能控制该虚拟对象执行相应的基本行为,无法控制整个***逻辑,若需要控制整个***逻辑,则还需要开发许多额外的资源。
在本发明实施例中,提出了一种分层行为树的概念,通过创建两个层次的行为树,即第一行为树和m个虚拟对象各自对应的第二行为树,其中,第一行为树(实例)用于根据虚拟环境的当前运行信息在至少一条执行路径上确定目标执行路径,第二行为树(实例)用于根据目标执行路径控制虚拟对象执行目标事件,通过这两个层次的行为树的结合,不仅能够保证单个虚拟对象的逻辑明确,而且能够控制整个***的逻辑。本发明各个实施例即通过将第一行为树和第二行为树应用到***逻辑控制来提高***的响应效率,下面采用示意性的实施例进行说明。
请参考图1,其示出了本发明实施例提供的***逻辑控制方法所涉及的实施环境。逻辑控制***100:包括决策支撑***110、第一行为树实例120和第二行为树实例130。
逻辑控制***100是运行在逻辑控制设备中的***,逻辑控制设备是终端或者是服务器。可选的,逻辑控制***100也称游戏逻辑控制***。
决策支撑***110用于向第一行为树实例120提供虚拟环境的当前运行信息,当前运行信息是在第一行为树实例120确定目标执行路径时所需要的参考信息,当前运行信息用于指示第一行为树实例120在虚拟环境中运行时所处的情况。
第一行为树实例120用于从决策支撑***获取虚拟环境的当前运行信息,根据虚拟环境的当前运行信息,在第一行为树实例中的至少一条执行路径中确定目标执行路径。第一行为树实例120中包括防御路径121、攻击路径122和建造路径123中的至少一种执行路径。
其中,防御路径121用于指示需要执行防御事件的路径,攻击路径122用于指示需要执行攻击事件的路径,建造路径123用于指示需要执行建造事件的路径。
第二行为树实例130向第一行为树实例120提供的预设接口131,预设接口131是第一行为树实例120与虚拟对象的第二行为树实例130之间的接口,预设接口131与第二行为树实例130一一对应。
可选的,第一行为树实例120和第二行为树实例130通过预设接口131进行信息交互和函数调用,实现协调控制逻辑控制***100的效果。
请参考图2,其示出了本发明一个实施例提供的***逻辑控制方法的流程图,本实施例以该***逻辑控制方法用于如图1所示的逻辑控制***100为例进行说明,该方法包括:
步骤201,获取第一行为树实例,第一行为树实例中包括用于对虚拟环境进行逻辑控制的至少一条执行路径。
可选的,当逻辑控制设备获取到对应于预设入口的触发操作时,自动加载第一行为树实例。其中,预设入口是预定应用程序的第一界面所显示的入口,触发操作用于将第一界面切换为第二界面,第一界面是登录预定应用程序成功后展示的、用于显示预设入口的界面,第二界面是与第一界面不同的界面。
比如,预定应用程序为“XX游戏”,当逻辑控制设备在“XX游戏”中获取到对应于“开始游戏”按钮的点击操作时,自动加载第一行为树实例。
步骤202,根据虚拟环境的当前运行信息,在第一行为树实例的至少一条执行路径中确定目标执行路径。
目标执行路径用于指示虚拟环境中需要控制的n个虚拟对象和n个虚拟对象各自对应的目标事件, n≤m且m、n为正整数。
逻辑控制设备在获取到第一行为树实例后,通过第一行为树实例获取虚拟环境的当前运行信息,并根据虚拟环境的当前运行信息确定目标执行路径。
步骤203,根据目标执行路径,确定需要控制的n个虚拟对象和n个虚拟对象各自对应的目标事件。
逻辑控制设备根据目标执行路径,在虚拟环境所包括的m个虚拟对象中确定需要控制的n个虚拟对象,根据第一行为树实例加载n个虚拟对象各自对应的第二行为树实例。
步骤204,通过n个虚拟对象各自对应的第二行为树实例,控制n个虚拟对象执行各自对应的目标事件。
在n个虚拟对象各自对应的第二行为树实例加载成功后,逻辑控制设备根据目标执行路径所指示的n个虚拟对象各自对应的目标事件,通过n个虚拟对象各自对应的第二行为树实例,控制n个虚拟对象执行各自对应的目标事件。
比如,以该虚拟环境为虚拟游戏环境为例,该虚拟游戏环境中的每个虚拟对象复用一个第一行为树实例,每个虚拟对象具有各自对应的第二行为树实例。逻辑控制设备根据该第一行为树实例确定目标执行路径,根据目标执行路径获取其中n个虚拟对象各自对应的第二行为树实例,根据第一行为树和获取到的n个第二行为树实例,对n个虚拟对象进行逻辑控制。
综上所述,本实施例提供的***逻辑控制方法,通过获取第一行为树实例,第一行为树实例中包括用于对虚拟环境进行逻辑控制的至少一条执行路径,根据虚拟环境的当前运行信息,在第一行为树实例的至少一条执行路径中确定目标执行路径,根据目标执行路径,确定需要控制的n个虚拟对象和n个虚拟对象各自对应的目标事件,通过n个虚拟对象各自对应的第二行为树实例,控制n个虚拟对象执行各自对应的目标事件;避免了相关技术中利用有限状态机对***进行逻辑控制时由于有限状态机过于臃肿而导致***的响应速率减慢的情况,利用扩展性强且复用性高的行为树进行***逻辑控制,并将行为树实例分为第一行为树实例和第二行为树实例,分别负责不同层次的逻辑控制,即通过第一行为树实例与n个第二行为树实例共同协调作用,实现自动控制***的目的,从而提高了***的响应速率。
请参考图3,其示出了本发明一个实施例提供的***逻辑控制方法的流程图。本实施例以该***逻辑控制方法用于如图1所示的逻辑控制***100为例进行说明,该方法包括:
步骤301,获取第一行为树实例,第一行为树实例中包括用于对虚拟环境进行逻辑控制的至少一条执行路径。
当逻辑控制设备获取到对应于预设入口的触发操作时,逻辑控制设备自动加载第一行为树实例。
需要说明的是,逻辑控制设备获取第一行为树实例的方式可参考图2提供的实施例中的相关细节,在此不再赘述。
步骤302,通过第一行为树实例获取虚拟环境的当前运行信息。
可选的,第一行为树实例从决策支撑***中获取第一对象集合对应的当前运行信息。
需要说明的是,本发明实施例中包括第一对象集合和第二对象集合,第一对象集合是与第一行为树实例对应的对象集合,第一对象集合包括m个虚拟对象,第一对象集合与第二对象集合是存在相对关系的不同的对象集合,除第一对象集合以外的对象集合均可称为第二对象集合。
可选的,第一对象集合也称为第一方阵营,第二对象集合也称为第二方阵营。比如,第一对象集合为我方阵营,第二对象集合为敌方阵营。
可选的,第一行为树实例实时获取当前运行信息,或者,第一行为树实例每隔预定时间间隔获取当前运行信息。
其中,当前运行信息包括虚拟货币总数量、虚拟对象总数量、虚拟建筑总数量和当前运行事件的标识中的至少一种。
虚拟货币总数量是第一对象集合对应的虚拟货币的总数量,比如,金币总数量。
虚拟对象总数量是第一对象集合对应的虚拟对象的总数量,比如,士兵总数量。
虚拟建筑总数量是第一对象集合对应的已建造的建筑物体的总数量。
当前运行事件的标识包括攻击事件标识,攻击事件标识用于指示第一对象集合对应的虚拟建筑和/或虚拟对象受到第二对象集合的攻击。
比如,第一行为树实例获取第一对象集合对应的当前运行信息如表一所示。在第一对象集合“W1001”对应的当前运行信息中,虚拟货币总数量为300金币,虚拟对象总数量为5个士兵,已建造3个炮塔,即虚拟建筑总数量为3个,当前运行事件的标识为S01,标识“S01”用于指示第一对象集合“W1001”受到攻击。
表一
第一对象集合 | 虚拟货币总数量(金币) | 虚拟对象总数量(个) | 虚拟建筑总数量(个) | 当前运行事件的标识 |
W1001 | 300 | 5 | 3 | S01 |
步骤303,根据虚拟环境的当前运行信息,在第一行为树实例的至少一条执行路径中确定目标执行路径。
第一行为树实例根据获取到的当前运行信息,在第一行为树实例的防御路径、攻击路径和建造路径这三条执行路径中确定一条执行路径,将确定的一条执行路径作为目标执行路径。
步骤304,通过第一行为树实例调用m个虚拟对象各自对应的第二行为树实例的预设接口。
第一行为树实例调用m个虚拟对象各自对应的第二行为树实例各自对应的预设接口。
步骤305,根据m个第二行为树实例的预设接口,获取m个虚拟对象各自对应的对象状态。
第一行为树实例根据m个第二行为树实例各自对应的预设接口,获取m个虚拟对象各自对应的对象状态,预设接口用于返回虚拟对象的对象状态,对象状态包括待机状态、移动状态、攻击状态、建造状态和死亡状态中的一种。
可选的,预设接口为GetCurrentState(),待机状态(英文:IDLE)用于指示虚拟对象位于一个位置上静止不动,移动状态(英文:RUNNING)用于指示虚拟对象正在移动,攻击状态(英文:ATTACK)用于指示虚拟对象正在发起进攻,建造状态(英文:BUILDING)用于指示虚拟对象正在建造虚拟建筑,死亡状态(英文:DIE)用于指示虚拟对象已死亡。
步骤306,从m个虚拟对象中确定对象状态不是死亡状态的n个虚拟对象。
第一行为树实例根据m个虚拟对象各自对应的对象状态,从m个虚拟对象中确定出n个虚拟对象,这n个虚拟对象各自对应的对象状态为除死亡状态以外的其他对象状态。
步骤307,通过n个虚拟对象各自对应的第二行为树实例,控制n个虚拟对象执行各自对应的目标事件。
在确定出n个虚拟对象后,逻辑控制设备调用n个虚拟对象各自对应的第二行为树实例中的预设函数,控制虚拟对象执行目标事件。
可选的,预设函数包括第一函数和/或第二函数,第一函数也称移动函数,用于执行移动事件;第二函数也称建造函数,用于执行建造事件。
对于n个虚拟对象中的每个虚拟对象,第一行为树实例调用该虚拟对象的第二行为树实例中的预设函数,控制虚拟对象执行目标事件包括:第一行为树实例通过调用第二行为树实例中的第一函数控制虚拟对象执行移动事件;和/或,第一行为树实例通过调用第二行为树实例中的第二函数控制虚拟对象执行建造事件。
下面,依次介绍第一函数和第二函数的相关内容。
第一函数:第一函数的输入参数为目标位置参数,目标位置参数用于指示虚拟对象所需移动到的目标位置,第一函数用于控制虚拟对象移动到目标位置参数对应的目标位置上。
比如,第一函数为MoveToTarget(target)函数,目标位置参数为target参数,该第一函数用于控制虚拟对象移动到target参数对应的目标位置上。
可选的,针对虚拟环境中的各个虚拟对象,建立一个三维坐标系,每个虚拟对象的位置采用三维坐标形式表示,目标位置参数为一个三维坐标参数。
可选的,逻辑控制设备确定虚拟对象对应的目标位置参数,通过调用第一函数,控制虚拟对象移动到目标位置参数对应的目标位置上。
比如,第二行为树实例确定虚拟对象对应的target参数,通过调用MoveToTarget(target)函数,控制虚拟对象移动到target参数对应的目标位置上。
需要说明的一点是,当虚拟对象被移动到目标位置后,该虚拟对象是进行进攻还是进行防守,则是第二行为树实例中的内部逻辑,第一行为树实例在外部调用第二行为树实例时无需关注。
需要说明的另一点是,当目标位置参数指示的是虚拟对象的当前位置时,控制虚拟对象移动至当前位置,即控制虚拟对象在当前位置上保持不动,此时该虚拟对象的对象状态处于待机状态。
第二函数:第二函数的输入参数为目标类型参数,目标类型参数目标类型参数用于指示虚拟对象所需建造的虚拟建筑的类型,第二函数用于控制虚拟对象建造与目标类型参数对应的虚拟建筑。
比如,第二函数为Build(type)函数,目标类型参数为type参数,该第二函数用于控制虚拟对象建造与type参数对应的虚拟建筑。
可选的,逻辑控制设备确定虚拟对象对应的目标类型参数,通过调用第二行为树实例中的第二函数,控制虚拟对象建造与目标类型参数对应的虚拟建筑。
比如,第二行为树实例确定虚拟对象对应的type参数,通过调用Build(type)函数,控制虚拟对象建造与type参数对应的虚拟建筑。
可选的,虚拟建筑包括至少两种类型的虚拟建筑,目标类型参数用于唯一标识虚拟建筑的类型。
在一个示意性的例子中,虚拟建筑的类型与类型参数的对应关系如表二所示。虚拟建筑包括一级炮塔、二级炮塔、三级炮塔这三种类型的虚拟建筑,一级炮塔的目标类型参数为type1,二级炮塔的目标类型参数为type2,三级炮塔的目标类型参数为type3。
表二
虚拟建筑的类型 | 目标类型参数 |
一级炮塔 | type1 |
二级炮塔 | type2 |
三级炮塔 | type3 |
综上所述,本发明实施例还通过第二行为树实例向第一行为树实例提供预设接口,使得第一行为树实例能够通过预设接口与第二行为树实例进行信息交互和函数调用,进而通过第一行为树实例调用第二行为树实例中的预设函数,控制虚拟对象执行目标事件。
需要说明的是,第一行为树实例的至少一种执行路径包括防御路径、攻击路径和建造路径中的至少一种,为了方便描述,当第一对象集合对应的虚拟建筑和/或虚拟对象受到第二对象集合的攻击,且确定出的目标执行路径为防御路径时,第一对象集合中的虚拟对象均称之为第一防御对象,第二对象集合中的虚拟对象均称之为第一攻击对象;当第一对象集合对应的虚拟对象向第二对象集合发起攻击,即确定出的目标执行路径为攻击路径时,第一对象集合中的虚拟对象均称之为第二攻击对象,第二对象集合中的虚拟对象均称之为第二防御对象。
可选的,上述步骤303可以被替代实现成为如下几个步骤,如图4所示:
步骤303a,根据虚拟环境的当前运行信息,判断当前运行信息是否满足结束条件。
结束条件包括虚拟建筑总数量为零、特定类型的虚拟建筑总数量为零、在预定时间段内虚拟建筑总数量的消失数量大于预设结束阈值中的至少一种。其中,预定时间段为从第一时刻至第二时刻的一段时间段,虚拟建筑总数量的消失数量为在第一时刻的虚拟建筑总数量与在第二时刻的虚拟建筑总数量之间的差值。
可选的,结束条件也称游戏结束条件。
若当前运行信息满足结束条件,则执行步骤303b;若当前运行信息不满足结束条件,则执行步骤303c。
步骤303b,若当前运行信息满足结束条件,则结束流程。
步骤303c,若当前运行信息不满足结束条件,则判断当前运行信息的当前运行事件的标识是否为攻击事件标识。
在逻辑控制***中的多种运行事件对应有各自的优先级,优先级用于指示对运行事件进行处理的先后顺序。由于在多种运行事件中,被攻击事件的优先级最高,因此在逻辑控制设备先判断当前运行事件的标识是否为攻击事件标识,攻击事件标识用于唯一标识被攻击事件,即第一对象集合对应的虚拟建筑和/或虚拟对象受到第二对象集合的攻击的事件。
可选的,逻辑控制设备实时地检测当前运行事件的标识是否为攻击事件标识,或者每隔预定时间间隔检测当前运行事件的标识是否为攻击事件标识。
若当前运行事件的标识是攻击事件标识,则执行步骤303d;若当前运行事件的标识不是攻击事件标识,则执行步骤303e。
步骤303d,若当前运行事件的标识是攻击事件标识,则确定第一行为树实例的目标执行路径为防御路径。
防御路径用于指示n个虚拟对象各自对应的目标事件为移动事件。即确定出第一行为树实例的目标执行路径为防御路径时,对于n个虚拟对象中的每个虚拟对象,通过调用第二行为树实例中的第一函数控制虚拟对象执行移动事件比如,调用n个第二行为树实例中的MoveToTarget(target)函数,从而控制n个虚拟对象执行移动事件。
其中,攻击事件标识用于指示第一对象集合对应的虚拟建筑和/或虚拟对象受到第二对象集合的攻击。
可选的,当第一对象集合受到第二对象集合的攻击时,逻辑控制设备在决策支撑***中确定第一对象集合所包括的m个虚拟对象,并确定第二对象集合的集合类型,根据第二对象集合的集合类型,在m个虚拟对象中确定与集合类型对应的防御对象集合,防御对象集合包括至少一个第一防御对象。
其中,集合类型用于指示该第二对象集合中第一攻击对象的属性,集合类型与第二对象集合一一对应。
可选的,逻辑控制设备预先根据各个第二对象集合的集合类型,分配各个第二对象集合各自对应的权重值,权重值与第二对象集合一一对应。逻辑控制设备中存储有权重值与第二对象集合的对应关系,以及权重值与第一对象集合中的防御对象集合的对应关系。
在一个示意性的例子中,这三者的对应关系如表三所示。第一对象集合为“W1001”,该该第一对象集合“W1001”包括60个虚拟对象,即K001至K060,与该第一对象集合“W1001”对应的三个第二对象集合包括:第二对象集合“W2000”、第二对象集合“W3000”和第二对象集合“W4000”。其中,第二对象集合“W2000”的权重值为0.2,在第一对象集合“W1001”中与权重值“0.2”对应的防御对象集合为K001至K010;第二对象集合“W3000”的权重值为0.3,在第一对象集合“W1001”中与权重值“0.3”对应的防御对象集合为K011至K030;第二对象集合“W4000”的权重值为0.5,在第一对象集合“W1001”中与权重值“0.5”对应的防御对象集合为K031至K060。
表三
第二对象集合 | 权重值 | 第一对象集合“W1001”中的防御对象集合 |
W2000 | 0.2 | K001至K010 |
W3000 | 0.3 | K011至K030 |
W4000 | 0.5 | K031至K060 |
当第一对象集合受到第二对象集合的攻击时,逻辑控制设备根据第二对象集合的权重值,确定与该集合类型对应的防御对象集合中的n个第一防御对象,调用n个第一防御对象各自对应的第二行为树实例中的MoveToTarget(target)函数,从而控制n个第一防御对象执行各自的移动事件。
步骤303e,若当前运行信息的当前运行事件的标识不是攻击事件标识,则判断当前运行信息中的虚拟资源数量是否满足第一预设条件。
虚拟资源数量包括虚拟货币总数量和/或虚拟对象总数量。第一预设条件包括虚拟货币总数量大于第一预设阈值和/或虚拟对象总数量大于第二预设阈值。
当当前运行信息中的当前运行事件的标识不是攻击事件标识时,逻辑控制设备通过第一行为树实例调用m个第二行为树实例各自对应的预设接口,根据m个第二行为树实例各自对应的预设接口,获取m个虚拟对象各自对应的对象状态。
逻辑控制设备根据当前运行信息和m个虚拟对象各自对应的对象状态,在第一行为树实例的至少一条执行路径中确定目标执行路径,即执行步骤303f和步骤303g中的任意一个。
步骤303f,若当前运行信息中的虚拟资源数量满足第一预设条件,则当m个虚拟对象中处于待机状态的虚拟对象的数量大于第三预设阈值时,确定第一行为树实例的目标执行路径为攻击路径。
可选的,“当m个虚拟对象中处于待机状态的虚拟对象的数量大于第三预设阈值时,确定第一行为树实例的目标执行路径为攻击路径”中的虚拟对象的数量为处于待机状态的虚拟对象的数量。
攻击路径用于指示m个虚拟对象中的n个虚拟对象和n个虚拟对象各自对应的目标事件为移动事件。即当逻辑控制设备确定出第一行为树实例的目标执行路径为攻击路径时,对于n个虚拟对象中的每个虚拟对象,通过调用第二行为树实例中的第一函数控制虚拟对象执行移动事件。比如,调用n个第二行为树实例中的MoveToTarget(target)函数,从而控制n个虚拟对象执行各自的移动事件。
可选的,当第一对象集合向第二对象集合发起攻击时,逻辑控制设备在决策支撑***中确定第一对象集合所包括的m个虚拟对象,并确定第二对象集合的集合类型,根据第二对象集合的集合类型,在m个虚拟对象中确定与集合类型对应的攻击对象集合,攻击对象集合包括至少一个第一攻击对象。相关细节可类比参考防御对象集合的确定方式,在此不再赘述。
步骤303g,若当前运行信息中的虚拟资源数量满足第一预设条件,则当当前运行信息中的建造参数满足第二预设条件,且m个虚拟对象中处于待机状态的虚拟对象的数量大于第五预设阈值时,确定第一行为树实例的目标执行路径为建造路径。
可选的,“当当前运行信息中的建造参数满足第二预设条件,且m个虚拟对象中处于待机状态的虚拟对象的数量大于第五预设阈值时,确定第一行为树实例的目标执行路径为建造路径”中的虚拟对象的数量为处于待机状态的虚拟对象的数量。
其中,建造参数包括已建造的虚拟建筑总数量和/或虚拟建筑类型,第二预设条件包括已建造的虚拟建筑总数量大于第四预设阈值和/或虚拟建筑类型包括预设建筑类型。
可选的,当前运行信息还包括虚拟建筑类型,虚拟建筑类型包括金矿、一级炮塔、二级炮塔、三级炮塔中的至少一种。
比如,第二预设条件包括已建造的虚拟建筑总数量大于3和/或虚拟建筑类型包括金矿和一级炮塔。
可选的,第二预设条件包括:虚拟建筑类型包括p个预设建筑类型且p个预设建筑类型各自对应的建筑数量大于第六预设阈值。比如,第二预设条件包括:虚拟建筑类型包括金矿和一级炮塔,且金矿的建筑数量大于1,一级炮塔的建筑数量大于2。
建造路径用于指示m个虚拟对象中的n个虚拟对象和n个虚拟对象各自对应的目标事件为移动事件和建造事件。即当逻辑控制设备确定出第一行为树实例的目标执行路径为建造路径时,对于n个虚拟对象中的每个虚拟对象,通过调用第二行为树实例中的第一函数控制虚拟对象执行移动事件,并调用第二函数控制虚拟对象执行建造事件。
比如,调用该虚拟对象的第二行为树实例中的MoveToTarget(target)函数,并调用该第二行为树实例中的Build(type) 函数,从而控制该虚拟对象移动到target参数对应的目标位置上,在该目标位置上建造与type参数对应的虚拟建筑。
可选的,n的取值为1,建造路径用于指示m个虚拟对象中处于待机状态的虚拟对象和该虚拟对象对应的目标事件为移动事件和建造事件。
需要说明的一点是,在本发明实施例中,对涉及到的预设阈值(比如:第一预设阈值、第二预设阈值、第三预设阈值、第四预设阈值、第五预设阈值和第六预设阈值等)的取值均不加以限定。
需要说明的另一点是,在本发明实施例中,本发明实施例对结束条件、第一预设条件和第二预设条件的设置内容均不加以限定。
综上所述,本发明实施例还通过在第一行为树实例获取到当前运行信息,先判断当前运行信息的当前运行事件的标识是否为攻击事件标识,攻击事件标识用于唯一标识被攻击事件,若是则在第一行为树实例的至少一种执行路径中将防御路径确定为目标执行路径;通过将被攻击事件设置为优先级最高的事件,使得若当前运行事件被攻击事件,优先对该被攻击事件进行防御。
下面,分别介绍三种可能的调用第二行为树实例的预设函数的方法,即与防御路径对应的防御子流程、攻击路径对应的攻击子流程和建造路径对应的建造子流程。仅以控制n个虚拟对象中的每个虚拟对象执行目标事件为例进行说明。
在第一种可能的实现方式中,当逻辑控制设备确定出第一行为树实例的目标执行路径为防御路径时,上述步骤307可以被替换实现成为如下几个步骤,如图5所示:
步骤501,根据第二行为树实例中的第一函数,控制虚拟对象执行移动事件。
第一行为树实例通过调用MoveToTarget(target)函数,控制虚拟对象移动至target参数对应的目标位置上。
步骤502,在控制虚拟对象执行移动事件之后,判断虚拟对象与第一攻击对象之间的距离是否小于预设距离阈值。
可选的,逻辑控制设备获取虚拟对象的第一位置参数和第一攻击对象的第二位置参数,将第一位置参数和第二位置参数的差值绝对值确定为两者之间的距离,判断距离是否小于预设距离阈值。
若虚拟对象与第一攻击对象之间的距离小于预设距离阈值,则执行步骤503;若该距离大于或等于预设距离阈值,则执行步骤504。
步骤503,若虚拟对象与第一攻击对象之间的距离小于预设距离阈值,则通过第二行为树实例控制虚拟对象进行攻击。
可选的,当虚拟对象移动至target参数对应的目标位置上时,若虚拟对象与第一攻击对象之间的距离小于预设距离阈值,则第二行为树实例中的虚拟对象的对象状态由移动状态切换为攻击状态。
可选的,在调用第二行为树实例中的第一函数执行移动事件之后,存在一定的冷却时间段,在该冷却时间段内第一行为树无法调用第一函数控制虚拟对象执行移动事件。
步骤504,若虚拟对象与第一攻击对象之间的距离大于或等于预设距离阈值,则通过第二行为树实例控制虚拟对象待机。
可选的,当虚拟对象移动至target参数对应的目标位置上时,若虚拟对象与第二对象之间的距离大于或等于预设距离阈值,则第二行为树实例中的虚拟对象的对象状态由移动状态切换为待机状态。
在第二种可能的实现方式中,当逻辑控制设备确定出第一行为树实例的目标执行路径为攻击路径时,上述步骤307可以被替换实现成为如下步骤,如图6所示:步骤601,根据第二行为树实例中的第一函数,控制虚拟对象进行移动并攻击。
第一行为树实例通过调用MoveToTarget(target)函数,控制虚拟对象移动至target参数对应的目标位置上,并在目标位置上进行攻击。
在第三种可能的实现方式中,当逻辑控制设备确定出第一行为树实例的目标执行路径为建造路径时,上述步骤307可以被替换实现成为如下几个步骤,如图7所示:
步骤701,根据第二行为树实例中的第一函数,控制虚拟对象执行移动事件。
第一行为树实例通过调用MoveToTarget(target)函数,控制虚拟对象移动至target参数对应的目标位置上。
步骤702,在控制虚拟对象执行移动事件之后,获取此时的虚拟环境的当前运行信息。
由于决策支撑***中的当前运行信息是实时更新的,第一行为树实例在控制虚拟对象执行移动事件之后,从决策支撑***中获取虚拟环境的当前运行信息。
步骤703,判断当前运行信息中的虚拟资源数量是否满足第一预设条件。
第一行为树实例判断当前的虚拟资源数量是否满足第一预设条件,即当前的虚拟货币总数量是否大于第一预设阈值和/或虚拟对象总数量是否大于第二预设阈值,若当前的虚拟资源数量满足第一预设条件,则执行步骤704;若当前的虚拟资源数量不满足第一预设条件,则执行步骤706。
步骤704,若当前运行信息中的虚拟资源数量满足第一预设条件,则调用第二行为树实例中的第二函数。
可选的,当虚拟对象移动至target参数对应的目标位置上,且当前的当前运行信息中的虚拟资源数量满足第一预设条件时,第一行为树实例根据type参数,调用第二行为树实例中的Build(type)函数。
步骤705,根据第二行为树实例中的第二函数,控制虚拟对象执行建造事件。
第一行为树实例通过调用Build(type)函数,控制虚拟对象建造与type参数对应的虚拟建筑,此时第二行为树实例中的虚拟对象的对象状态由移动状态切换为建造状态。
可选的,在调用第二行为树实例中的第一函数执行建造事件之后,存在一定的冷却时间段,在该冷却时间段内第一行为树无法调用第二函数控制虚拟对象执行建造事件。
步骤706,若当前运行信息中的虚拟资源数量不满足第一预设条件,则通过第二行为树实例控制虚拟对象待机。
可选的,当虚拟对象移动至target参数对应的目标位置上,且当前运行信息中的虚拟资源数量不满足第一预设条件时,第二行为树实例中虚拟对象的对象状态由移动状态切换为待机状态。
为了提高第一行为树实例确定目标执行路径时的效率,逻辑控制设备为第一行为树实例设置预设触发事件,使得第一行为树实例无需实时地从决策支撑***中获取当前运行信息。因此,在上述步骤303d之后,通过第一行为树实例检测是否存在预设触发事件,预设触发事件为第一对象集合或第二对象集合的触发事件,预设触发事件包括对象增加事件、对象移除事件和对象派遣事件中的至少一种。
其中,对象增加事件用于指示第一对象集合中存在一个虚拟对象被注册成功,对象移除事件用于指示第一对象集合中存在一个虚拟对象的对象状态切换为死亡状态,对象派遣事件用于指示第一对象集合中存在一个虚拟对象的对象状态切换为移动状态。
比如,对象增加事件为OnSoldierAdd事件,对象移除事件为OnSoldierRemove事件,对象派遣事件为OnSoldierSend事件。
可选的,在步骤303d之后,还包括如下几个步骤,如图8所示:
步骤801,根据第二对象集合对应的攻击对象数量,确定与攻击对象数量对应的第一对象集合的目标防御对象数量,攻击对象数量与目标防御对象数量存在预设对应关系。
其中,防御对象数量是指第一对象集合中第一防御对象的数量,攻击对象数量是指第二对象集合中攻击第一对象集合的第一攻击对象的数量。
可选的,决策支撑***中的当前运行信息还包括第一对象集合对应的防御对象数量和第二对象集合对应的攻击对象数量。
逻辑控制设备通过第一行为树实例,从决策支撑***中实时获取第一对象集合对应的虚拟对象总数量、防御对象数量和第二集合对象对应的攻击对象数量。
可选的,逻辑控制设备中存储有攻击对象数量与目标防御对象数量的预设对应关系。
在一个示意性的例子中,攻击对象数量与目标防御对象数量的预设对应关系如表四所示。当攻击对象数量为1时,目标防御对象数量为2;当攻击对象数量为2时,目标防御对象数量为3;当攻击对象数量为5时,目标防御对象数量为5;当攻击对象数量为4时,目标防御对象数量为7。本实施例对攻击对象数量与目标防御对象数量的预设对应关系的设置方式不加以限定。下面,仅基于表四所提供的预设对应关系进行举例说明。
表四
攻击对象数量(个) | 目标防御对象数量(个) |
1 | 2 |
2 | 3 |
3 | 5 |
4 | 7 |
步骤802,判断第一对象集合对应的虚拟对象总数量是否小于目标防御对象数量。
逻辑控制设备判断第一对象集合对应的虚拟对象总数量是否小于目标防御对象数量,若第一对象集合对应的虚拟对象总数量大于或等于目标防御对象数量,则执行上述步骤304;若第一对象集合对应的虚拟对象总数量小于目标防御对象数量,则执行步骤803。
步骤803,若第一对象集合对应的虚拟对象总数量小于目标防御对象数量,则通过第一行为树实例检测预设触发事件。
可选的,逻辑控制设备通过第一行为树实例同时检测第一对象集合和第二对象集合各自对应的预设触发事件。
步骤804,当预设触发事件为第一对象集合的触发事件时,确定第一对象集合对应的实际防御对象数量。
可选的,实际防御对象数量为上述各个实施例涉及的n个虚拟对象中的n的取值。
在一种可能的实现方式中,当预设触发事件包括第一对象集合的虚拟对象增加事件时,将第一对象集合对应的虚拟对象总数量加一得到实际防御对象数量。
比如,第一对象集合对应的虚拟对象总数量为1,预设触发事件为第一对象集合的OnSoldierAdd事件,则实际防御对象数量为1+1=2。
在另一种可能的实现方式中,当预设触发事件包括第一对象的虚拟对象移除事件时,将第一对象对应的虚拟对象总数量减一得到实际防御对象数量。
比如,第一对象集合对应的虚拟对象总数量为1,预设触发事件为第一对象集合的OnSoldierRemove事件,则实际防御对象数量为1-1=0。
可选的,当逻辑控制设备确定出第一对象集合对应的实际防御对象数量时,将n的取值确定为实际防御对象数量,执行上述步骤304。
步骤805,当预设触发事件为第二对象集合的触发事件时,重新确定第一对象集合的目标防御对象数量。
在一种可能的实现方式中,当预设触发事件包括第二对象的虚拟对象移除事件时,将第二对象对应的攻击对象数量减一得到当前攻击对象数量,根据当前攻击对象数量重新确定第一对象的目标防御对象数量。
比如,第二对象集合对应的虚拟对象总数量为3,预设触发事件为第二对象集合的OnSoldierRemove事件,则当前攻击对象数量为3-1=2,根据当前攻击对象数量“2”,重新根据预设对应关系确定第一对象的目标防御对象数量为“3”。
在另一种可能的实现方式中,当预设触发事件包括虚拟对象派遣事件时,将第二对象对应的攻击对象数量加一得到当前攻击对象数量,根据当前攻击对象数量重新确定第一对象的目标防御对象数量。
比如,第二对象集合对应的虚拟对象总数量为3,预设触发事件为第二对象集合的OnSoldierSend事件,则当前攻击对象数量为3+1=4,根据当前攻击对象数量“4”,重新根据预设对应关系确定第一对象的目标防御对象数量为“7”。
可选的,在逻辑控制设备重新确定第一对象集合的目标防御对象数量之后,再次执行步骤802,即再次判断第一对象集合对应的虚拟对象总数量是否小于目标防御对象数量。
以虚拟环境为虚拟游戏环境为例,在一个示意性的例子中,当我方阵营受到敌方阵营中3个士兵的攻击时,确定第一行为树实例的目标执行路径为防御路径,逻辑控制设备根据预设对应关系,确定与攻击对象数量“3”对应的目标防御对象数量“5”,即我方阵营需要派出5个士兵进行防御,而此时我方阵营中一共仅包括4个士兵,即逻辑控制设备判断出士兵总数量“4”小于目标防御对象数量“5”,检测触发事件,当检测到我方阵营对应的OnSoldierRemove事件时,即我方阵营中增加一个士兵,将这4士兵派出去防御敌方阵营的3个士兵,在防御过程中我方阵营的士兵将敌方阵营的1个士兵消灭,则此时逻辑控制设备检测到敌方阵营对应的OnSoldierRemove事件,确定此时攻击对象数量为“2”,重新根据预设对应关系确定目标防御数量为“3”,即此时我方阵营只需要3个士兵进行防御即可。
综上所述,本发明实施例还通过逻辑控制设备为第一行为树实例设置预设触发事件,对应的,第一行为树检测预设触发事件,预设触发事件包括对象增加事件、对象移除事件和对象派遣事件中的至少一种;避免了第一行为树实例一直从决策支撑***中获取当前运行信息的情况,通过第一行为树检测预设触发事件进行决策,提高了第一行为树实例确定目标执行路径时的效率。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
请参考图9,其示出了本发明一个实施例提供的***逻辑控制装置的结构示意图。该***逻辑控制装置可以通过专用硬件电路,或者,软硬件的结合实现成为逻辑控制设备的全部或一部分,该***逻辑控制装置包括:获取模块910、第一确定模块920、第二确定模块930和控制模块940。
获取模块910,用于实现上述步骤201或301。
第一确定模块920,用于实现上述步骤202或303。
第二确定模块930,用于实现上述步骤203。
控制模块940,用于实现上述步骤204。
在基于图9所示实施例提供的一个可选实施例中,如图10所示,该第二确定模块930,包括:第一调用单元931、第一获取单元932和确定单元933。
第一调用单元931,用于实现上述步骤304。
第一获取单元932,用于实现上述步骤305。
确定单元933,用于实现上述步骤306。
在基于图9所示实施例提供的一个可选实施例中,如图10所示,该控制模块940,包括:第一控制单元941和/或第二控制单元942;
第一控制单元941,用于对于n个虚拟对象中的每个虚拟对象,通过调用第二行为树实例中的第一函数控制虚拟对象执行移动事件;
第二控制单元942,用于对于n个虚拟对象中的每个虚拟对象,通过调用第二行为树实例中的第二函数控制虚拟对象执行建造事件。
在基于图9所示实施例提供的一个可选实施例中,如图10所示,第一控制单元941,还用于确定虚拟对象对应的目标位置参数,目标位置参数用于指示虚拟对象所需移动到的目标位置;通过调用第一函数,控制虚拟对象移动到目标位置参数对应的目标位置上。
在基于图9所示实施例提供的一个可选实施例中,如图10所示,第二控制单元942,还用于确定虚拟对象对应的目标类型参数,目标类型参数用于指示虚拟对象所需建造的虚拟建筑的类型;通过调用第二函数,控制虚拟对象建造与目标类型参数对应的虚拟建筑。
在基于图9所示实施例提供的一个可选实施例中,如图10所示,第一确定模块920,用于实现上述步骤303d。
控制模块940,还用于对于n个虚拟对象中的每个虚拟对象,通过调用第二行为树实例中的第一函数控制虚拟对象执行移动事件。
在基于图9所示实施例提供的一个可选实施例中,如图10所示,第一确定模块920,还用于当当前运行信息中的当前运行事件的标识不是攻击事件标识时,通过第一行为树实例调用m个第二行为树实例各自对应的预设接口;根据m个第二行为树实例各自对应的预设接口,获取m个虚拟对象各自对应的对象状态;根据当前运行信息和m个虚拟对象各自对应的对象状态,在第一行为树实例的至少一条执行路径中确定目标执行路径。
在基于图9所示实施例提供的一个可选实施例中,如图10所示,第一确定模块920,还用于实现上述步骤303f。
控制模块940,还用于对于n个虚拟对象中的每个虚拟对象,通过调用第二行为树实例中的第一函数控制虚拟对象执行移动事件。
在基于图9所示实施例提供的一个可选实施例中,如图10所示,第一确定模块920,还用于实现上述步骤303g。
控制模块940,还用于对于n个虚拟对象中的每个虚拟对象,通过调用第二行为树实例中的第一函数控制虚拟对象执行移动事件,并调用第二函数控制虚拟对象执行建造事件。
相关细节可结合参考图2至图8所示的方法实施例。其中,获取模块910还用于实现上述方法实施例中其他任意隐含或公开的与获取步骤相关的功能;第一确定模块920和第二确定模块930还用于实现上述方法实施例中其他任意隐含或公开的与确定步骤相关的功能;控制模块940还用于实现上述方法实施例中其他任意隐含或公开的与控制步骤相关的功能。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例提供了一种逻辑控制设备,该逻辑控制设备包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述各个方法实施例提供的***逻辑控制方法。
可选的,该逻辑控制设备是终端或服务器。
请参考图11,其示出了本发明一个实施例提供的终端1100的结构示意图,具体来讲:终端1100可以包括RF(Radio Frequency,射频)电路1110、包括有一个或一个以上计算机可读存储介质的存储器1120、输入单元1130、显示单元1140、传感器1150、音频电路1160、WiFi(wireless fidelity,无线保真)模块1170、包括有一个或者一个以上处理核心的处理器1180、以及电源1190等部件。本领域技术人员可以理解,图11中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路1110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器1180处理;另外,将涉及上行的数据发送给基站。通常,RF电路1110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路1110还可以通过无线通信与网络和其他设备通信。无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯***)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess, 宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短信息服务)等。存储器1120可用于存储软件程序以及模块。处理器1180通过运行存储在存储器1120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1100的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1120还可以包括存储器控制器,以提供处理器1180和输入单元1130对存储器1120的访问。
输入单元1130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元1130可包括触敏表面1131以及其他输入设备1132。触敏表面1131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面1131上或在触敏表面1131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面1131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1180,并能接收处理器1180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面1131。除了触敏表面1131,输入单元1130还可以包括其他输入设备1132。具体地,其他输入设备1132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1140可用于显示由用户输入的信息或提供给用户的信息以及设备110的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元1140可包括显示面板1141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板1141。进一步的,触敏表面1131可覆盖在显示面板1141之上,当触敏表面1131检测到在其上或附近的触摸操作后,传送给处理器1180以确定触摸事件的类型,随后处理器1180根据触摸事件的类型在显示面板1141上提供相应的视觉输出。虽然在图11中,触敏表面1131与显示面板1141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面1131与显示面板1141集成而实现输入和输出功能。
终端1100还可包括至少一种传感器1150,比如光传感器、运动传感器以及其它传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1141的亮度,接近传感器可在终端1100移动到耳边时,关闭显示面板1141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等; 至于终端1100还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其它传感器,在此不再赘述。
音频电路1160、扬声器1121,传声器1122可提供用户与终端1100之间的音频接口。音频电路1160可将接收到的音频数据转换后的电信号,传输到扬声器1121,由扬声器1121转换为声音信号输出;另一方面,传声器1122将收集的声音信号转换为电信号,由音频电路1160接收后转换为音频数据,再将音频数据输出处理器1180处理后,经RF电路1110以发送给另一设备,或者将音频数据输出至存储器1120以便进一步处理。音频电路1160还可能包括耳塞插孔,以提供外设耳机与终端1100的通信。
WiFi属于短距离无线传输技术,终端1100通过WiFi模块1170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图11示出了WiFi模块1170,但是可以理解的是,其并不属于终端1100的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1180是终端1100的控制中心,利用各种接口和线路连接整个设备的各个部分,通过运行或执行存储在存储器1120内的软件程序和/或模块,以及调用存储在存储器1120内的数据,执行终端1100的各种功能和处理数据。可选的,处理器1180可包括一个或多个处理核心;可选的,处理器1180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1180中。
终端1100还包括给各个部件供电的电源1190(比如电池),优选的,电源可以通过电源管理***与处理器1180逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源1190还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端1100还可以包括摄像头、蓝牙模块等,在此不再赘述。
请参考图12,其示出了本发明一个实施例提供的服务器1200的结构示意图。具体来讲:所述服务器1200包括中央处理单元(CPU)1201、包括随机存取存储器(RAM)1202和只读存储器(ROM)1203的***存储器1204,以及连接***存储器1204和中央处理单元1201的***总线1205。所述服务器1200还包括帮助计算机内的各个器件之间传输信息的基本输入/输出***(I/O***)1206,和用于存储操作***1213、应用程序1214和其他程序模块1215的大容量存储设备1207。
所述基本输入/输出***1206包括有用于显示信息的显示器1208和用于用户输入信息的诸如鼠标、键盘之类的输入设备1209。其中所述显示器1208和输入设备1209都通过连接到***总线1205的输入输出控制器1210连接到中央处理单元1201。所述基本输入/输出***1206还可以包括输入输出控制器1210以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1210还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备1207通过连接到***总线1205的大容量存储控制器(未示出)连接到中央处理单元1201。所述大容量存储设备1207及其相关联的计算机可读介质为服务器1200提供非易失性存储。也就是说,所述大容量存储设备1207可以包括诸如硬盘或者CD-ROI驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的***存储器1204和大容量存储设备1207可以统称为存储器。
根据本发明的各种实施例,所述服务器1200还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1200可以通过连接在所述***总线1205上的网络接口单元1211连接到网络1212,或者说,也可以使用网络接口单元1211来连接到其他类型的网络或远程计算机***(未示出)。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的***逻辑控制方法中全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种***逻辑控制方法,其特征在于,应用于逻辑控制设备,所述方法包括:
获取第一行为树实例,所述第一行为树实例中包括用于对虚拟环境进行逻辑控制的至少一条执行路径;
根据所述虚拟环境的当前运行信息,在所述第一行为树实例的所述至少一条执行路径中确定目标执行路径;
根据所述目标执行路径,确定需要控制的n个虚拟对象和所述n个虚拟对象各自对应的目标事件,所述n为正整数;
通过所述n个虚拟对象各自对应的第二行为树实例,控制所述n个虚拟对象执行各自对应的所述目标事件,所述第二行为树实例用于控制虚拟对象执行预定事件;
其中,所述第二行为树实例和所述第一行为树实例通过预设接口进行信息交互和函数调用,共同协调控制逻辑控制***,所述逻辑控制***是运行在所述逻辑控制设备中的***。
2.根据权利要求1所述的方法,其特征在于,所述虚拟环境包括m个虚拟对象,所述根据所述目标执行路径,确定需要控制的n个虚拟对象,包括:
通过所述第一行为树实例调用所述m个虚拟对象各自对应的第二行为树实例的预设接口;
根据m个第二行为树实例的预设接口,获取所述m个虚拟对象各自对应的对象状态,所述对象状态包括待机状态、移动状态、攻击状态、建造状态和死亡状态中的一种;
从所述m个虚拟对象中确定所述对象状态不是所述死亡状态的n个虚拟对象。
3.根据权利要求1所述的方法,其特征在于,所述通过所述n个虚拟对象各自对应的第二行为树实例,控制所述n个虚拟对象执行各自对应的所述目标事件,包括:
对于所述n个虚拟对象中的每个所述虚拟对象,通过调用所述第二行为树实例中的第一函数控制所述虚拟对象执行移动事件;和/或,
对于所述n个虚拟对象中的每个所述虚拟对象,通过调用所述第二行为树实例中的第二函数控制所述虚拟对象执行建造事件。
4.根据权利要求3所述的方法,其特征在于,所述通过调用所述第二行为树实例中的第一函数控制所述虚拟对象执行移动事件,包括:
确定所述虚拟对象对应的目标位置参数,所述目标位置参数用于指示所述虚拟对象所需移动到的目标位置;
通过调用所述第一函数,控制所述虚拟对象移动到所述目标位置参数对应的所述目标位置上。
5.根据权利要求3所述的方法,其特征在于,所述通过调用所述第二行为树实例中的第二函数控制所述虚拟对象执行建造事件,包括:
确定所述虚拟对象对应的目标类型参数,所述目标类型参数用于指示所述虚拟对象所需建造的虚拟建筑的类型;
通过调用所述第二函数,控制所述虚拟对象建造与所述目标类型参数对应的所述虚拟建筑。
6.根据权利要求1至5任一所述的方法,所述根据所述虚拟环境的当前运行信息,在所述第一行为树实例的所述至少一条执行路径中确定目标执行路径,包括:
当所述当前运行信息中的当前运行事件的标识为攻击事件标识时,确定所述第一行为树实例的所述目标执行路径为防御路径;
所述通过所述n个虚拟对象各自对应的第二行为树实例,控制所述n个虚拟对象执行各自对应的所述目标事件,包括:
对于所述n个虚拟对象中的每个所述虚拟对象,通过调用所述第二行为树实例中的第一函数控制所述虚拟对象执行移动事件。
7.根据权利要求1至5任一所述的方法,其特征在于,所述根据所述虚拟环境的当前运行信息,在所述第一行为树实例的所述至少一条执行路径中确定目标执行路径,包括:
当所述当前运行信息中的当前运行事件的标识不是攻击事件标识时,通过第一行为树实例调用m个所述第二行为树实例的预设接口;
根据m个所述第二行为树实例的预设接口,获取m个虚拟对象各自对应的对象状态;
根据所述当前运行信息和所述m个虚拟对象各自对应的对象状态,在所述第一行为树实例的所述至少一条执行路径中确定所述目标执行路径。
8.根据权利要求7所述的方法,其特征在于,所述根据所述当前运行信息和所述m个虚拟对象各自对应的所述对象状态,在所述第一行为树实例的所述至少一条执行路径中确定所述目标执行路径,包括:
当所述当前运行信息中的虚拟资源数量满足第一预设条件,且所述m个虚拟对象中处于待机状态的虚拟对象的数量大于第三预设阈值时,确定所述第一行为树实例的所述目标执行路径为攻击路径;
所述通过所述n个虚拟对象各自对应的第二行为树实例,控制所述n个虚拟对象执行各自对应的所述目标事件,包括:
对于所述n个虚拟对象中的每个所述虚拟对象,通过调用所述第二行为树实例中的第一函数控制所述虚拟对象执行移动事件。
9.根据权利要求7所述的方法,其特征在于,所述根据所述当前运行信息和所述m个虚拟对象各自对应的所述对象状态,在所述第一行为树实例的所述至少一条执行路径中确定所述目标执行路径,包括:
当所述当前运行信息中的虚拟资源数量满足第一预设条件、建造参数满足第二预设条件,且所述m个虚拟对象中处于待机状态的虚拟对象的数量大于第五预设阈值时,确定所述第一行为树实例的所述目标执行路径为建造路径;
所述通过所述n个虚拟对象各自对应的第二行为树实例,控制所述n个虚拟对象执行各自对应的所述目标事件,包括:
对于所述n个虚拟对象中的每个所述虚拟对象,通过调用所述第二行为树实例中的第一函数控制所述虚拟对象执行移动事件,并调用第二函数控制所述虚拟对象执行建造事件。
10.一种***逻辑控制装置,其特征在于,所述装置包括:
获取模块,用于获取第一行为树实例,所述第一行为树实例中包括用于对虚拟环境进行逻辑控制的至少一条执行路径;
第一确定模块,用于根据所述虚拟环境的当前运行信息,在所述第一行为树实例的所述至少一条执行路径中确定目标执行路径;
第二确定模块,用于根据所述目标执行路径,确定需要控制的n个虚拟对象和所述n个虚拟对象各自对应的目标事件,所述n为正整数;
控制模块,用于通过所述n个虚拟对象各自对应的第二行为树实例,控制所述n个虚拟对象执行各自对应的所述目标事件,所述第二行为树实例用于控制虚拟对象执行预定事件;其中,所述第二行为树实例和所述第一行为树实例通过预设接口进行信息交互和函数调用,共同协调控制逻辑控制***,所述逻辑控制***是运行在逻辑控制设备中的***。
11.根据权利要求10所述的装置,其特征在于,所述虚拟环境包括m个虚拟对象,所述第二确定模块,包括:
第一调用单元、第一获取单元和确定单元;
所述第一调用单元,用于通过所述第一行为树实例调用所述m个虚拟对象各自对应的第二行为树实例的预设接口;
所述第一获取单元,用于根据m个第二行为树实例的预设接口,获取所述m个虚拟对象各自对应的对象状态,所述对象状态包括待机状态、移动状态、攻击状态、建造状态和死亡状态中的一种;
所述确定单元,用于从所述m个虚拟对象中确定所述对象状态不是所述死亡状态的n个虚拟对象。
12.根据权利要求10所述的装置,其特征在于,所述控制模块,包括:第一控制单元和/或第二控制单元;
所述第一控制单元,用于对于所述n个虚拟对象中的每个所述虚拟对象,通过调用所述第二行为树实例中的第一函数控制所述虚拟对象执行移动事件;
所述第二控制单元,用于对于所述n个虚拟对象中的每个所述虚拟对象,通过调用所述第二行为树实例中的第二函数控制所述虚拟对象执行建造事件。
13.一种逻辑控制设备,其特征在于,所述逻辑控制设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至8任一所述的***逻辑控制方法。
14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至8任一所述的***逻辑控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711045554.3A CN109725892B (zh) | 2017-10-31 | 2017-10-31 | ***逻辑控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711045554.3A CN109725892B (zh) | 2017-10-31 | 2017-10-31 | ***逻辑控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109725892A CN109725892A (zh) | 2019-05-07 |
CN109725892B true CN109725892B (zh) | 2022-02-22 |
Family
ID=66293963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711045554.3A Active CN109725892B (zh) | 2017-10-31 | 2017-10-31 | ***逻辑控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109725892B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112221129A (zh) * | 2020-10-19 | 2021-01-15 | 杭州电魂网络科技股份有限公司 | 一种基于有向图的任务触发方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662855A (zh) * | 2012-04-17 | 2012-09-12 | 华为技术有限公司 | 一种二叉树的存储方法、*** |
CN103761108A (zh) * | 2014-02-14 | 2014-04-30 | 杭州朗和科技有限公司 | 一种实现行为树的方法及装置 |
CN106250100A (zh) * | 2016-08-15 | 2016-12-21 | 腾讯科技(深圳)有限公司 | ***逻辑控制方法及装置 |
CN107115673A (zh) * | 2017-04-27 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 一种基于行为树的行为执行方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4852173A (en) * | 1987-10-29 | 1989-07-25 | International Business Machines Corporation | Design and construction of a binary-tree system for language modelling |
US5481649A (en) * | 1993-03-09 | 1996-01-02 | The University Of Tennessee Research Corp. | Method and apparatus using a decision tree in an adjunct system cooperating with another physical system |
CA2494799A1 (en) * | 2005-01-28 | 2006-07-28 | Roca Engineering Ltd. | Method for clustering decision trees in data classifiers |
-
2017
- 2017-10-31 CN CN201711045554.3A patent/CN109725892B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662855A (zh) * | 2012-04-17 | 2012-09-12 | 华为技术有限公司 | 一种二叉树的存储方法、*** |
CN103761108A (zh) * | 2014-02-14 | 2014-04-30 | 杭州朗和科技有限公司 | 一种实现行为树的方法及装置 |
CN106250100A (zh) * | 2016-08-15 | 2016-12-21 | 腾讯科技(深圳)有限公司 | ***逻辑控制方法及装置 |
CN107115673A (zh) * | 2017-04-27 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 一种基于行为树的行为执行方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109725892A (zh) | 2019-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110141864B (zh) | 一种游戏自动测试方法、装置及终端 | |
CN111773696B (zh) | 一种虚拟对象的展示方法、相关装置及存储介质 | |
WO2018126956A1 (zh) | 一种信息处理方法、装置及服务器 | |
CN106371900B (zh) | 一种实现异步调用的数据处理方法及装置 | |
CN106708554B (zh) | 程序运行方法及装置 | |
CN109857494B (zh) | 一种消息提示方法及终端设备 | |
US10365951B2 (en) | Hot application resource allocation method, mobile terminal and storage medium | |
CN112245903B (zh) | 云应用中网络状态指示方法、操作***、装置及存储介质 | |
CN103346921A (zh) | 用户管理方法和相关设备及通信*** | |
CN109067981A (zh) | 分屏应用切换方法、装置、存储介质和电子设备 | |
CN115239941B (zh) | 对抗图像生成方法、相关装置及存储介质 | |
CN111803962A (zh) | 一种虚拟场景中虚拟对象交互的方法以及相关装置 | |
CN115345464A (zh) | 业务订单的派单方法、装置、计算机设备及存储介质 | |
WO2014183438A1 (en) | Method, apparatus, and communication system for allocating and managing voice channels | |
CN109725892B (zh) | ***逻辑控制方法及装置 | |
US11150913B2 (en) | Method, device, and terminal for accelerating startup of application | |
CN111359210B (zh) | 一种数据处理方法、装置、电子设备以及存储介质 | |
CN111367502A (zh) | 一种数值处理方法和装置 | |
CN109743469B (zh) | 一种基于volte的通信方法及移动终端 | |
CN116596202A (zh) | 工单处理方法、相关装置及存储介质 | |
CN106209601B (zh) | 状态更新消息的推送方法及装置 | |
CN113821142B (zh) | 一种界面窗口的管理方法以及相关装置 | |
CN106776041B (zh) | 一种数据处理方法及装置 | |
CN109451295A (zh) | 一种获取虚拟信息的方法和*** | |
CN110209491B (zh) | 一种资源管理方法、装置、服务器及存储介质 |
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 |