CN102073487B - 应用程序人工智能的实现方法及装置 - Google Patents

应用程序人工智能的实现方法及装置 Download PDF

Info

Publication number
CN102073487B
CN102073487B CN 200910238701 CN200910238701A CN102073487B CN 102073487 B CN102073487 B CN 102073487B CN 200910238701 CN200910238701 CN 200910238701 CN 200910238701 A CN200910238701 A CN 200910238701A CN 102073487 B CN102073487 B CN 102073487B
Authority
CN
China
Prior art keywords
trigger
event
state
application program
artificial intelligence
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
Application number
CN 200910238701
Other languages
English (en)
Other versions
CN102073487A (zh
Inventor
马亦宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Software Co Ltd
Kingsoft Corp Ltd
Beijing Kingsoft Digital Entertainment Co Ltd
Beijing Jinshan Digital Entertainment Technology Co Ltd
Original Assignee
Beijing Kingsoft Software Co Ltd
Beijing Jinshan Digital Entertainment Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Software Co Ltd, Beijing Jinshan Digital Entertainment Technology Co Ltd filed Critical Beijing Kingsoft Software Co Ltd
Priority to CN 200910238701 priority Critical patent/CN102073487B/zh
Publication of CN102073487A publication Critical patent/CN102073487A/zh
Application granted granted Critical
Publication of CN102073487B publication Critical patent/CN102073487B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了应用程序人工智能的实现方法及装置,所述方法包括:向应用程序注册至少一个事件触发器,并设置分别对应于所述至少一个事件触发器的原状态,所述原状态是一组完成人工智能行为的最小状态集合,所述事件触发器是一组触发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;所述应用程序触发注册的一个事件触发器;当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于所述被触发的事件触发器的原状态。本发明实现简单,节约成本。

Description

应用程序人工智能的实现方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及应用程序人工智能的实现方法及装置。
背景技术
随着技术的进步,应用程序需要控制产品能够完成一系列人工智能行为。例如:网络游戏中非玩家控制的角色需要多种人工智能进行支持,以模拟出更多复杂的智能状态机。
为了不断提高用户对产品的体验,人工智能行为需要不断升级。仍以网络游戏为例,现有网络游戏中人工智能的实现常采用传统的编程技术,为了使玩家保持对网络游戏的兴趣,非玩家控制的角色要时常升级人工智能行为,为此,就必须对原有程序进行重新编译,对编译后的程序进行调试,再对调试后的程序进行测试,均无问题后,最后更新服务器或者客户端程序。
也就是说,现有应用程序人工智能的实现要经过重新编译、调试以及测试的过程,因此实现过程复杂,实现成本较高。
发明内容
有鉴于此,本发明实施例提供了应用程序人工智能的实现方法及装置,实现简单,节约成本。
一种应用程序人工智能的实现方法,所述方法包括:
向应用程序注册至少一个事件触发器,并设置分别对应于所述至少一个事件触发器的原状态,所述原状态是一组完成人工智能行为的最小状态集合,所述事件触发器是一组触发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;
所述应用程序触发注册的一个事件触发器;
当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于所述被触发的事件触发器的原状态。
可选地,在所述人工智能行为进入对应于所述被触发的事件触发器的原状态之后,所述方法还包括:
删除已注册的所述至少一个事件触发器。
可选地,在所述向应用程序注册至少一个事件触发器的过程中,所述方法还包括:
设置所述人工智能行为下一次移动的坐标。
优选地,所述原状态包括:站立状态、巡逻状态、攻击状态、跟随状态、寻路状态或者防御状态。
优选地,所述事件触发器包括:目标触发器、时间触发器、攻击触发器、受伤触发器或者寻路触发器。
一种应用程序人工智能的实现装置,所述装置包括:
注册单元,用于向应用程序注册至少一个事件触发器,所述事件触发器是一组触发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;
第一设置单元,用于设置分别对应于所述至少一个事件触发器的原状态,所述原状态是一组完成人工智能行为的最小状态集合;
接受触发单元,用于接受所述应用程序的触发,所述应用程序触发了注册单元注册的一个事件触发器;
执行单元,用于执行所述应用程序触发的一个事件触发器的触发事件,以使人工智能行为进入对应于被触发的事件触发器的原状态。
可选地,所述装置还包括:
删除单元,用于在所述执行单元执行操作之后,删除已注册的所述至少一个事件触发器。
可选地,所述装置还包括:
第二设置单元,用于在所述注册单元执行操作的过程中,设置所述人工智能行为下一次移动的坐标。
优选地,所述第一设置单元包括:
第三设置子单元,用于设置站立状态;
或者,
第四设置子单元,用于设置巡逻状态;
或者,
第五设置子单元,用于设置攻击状态;
或者,
第六设置子单元,用于设置跟随状态;
或者,
第七设置子单元,用于设置寻路状态;
或者,
第八设置子单元,用于设置防御状态。
优选地,所述注册单元包括:
第一注册子单元,用于向所述应用程序注册目标触发器;
或者,
第二注册子单元,用于向所述应用程序注册时间触发器;
或者,
第三注册子单元,用于向所述应用程序注册攻击触发器;
或者,
第四注册子单元,用于向所述应用程序注册受伤触发器;
或者,
第五注册子单元,用于向所述应用程序注册寻路触发器。
可以看出,在本发明实施例中,通过向应用程序注册至少一个事件触发器,并设置分别对应于至少一个事件触发器的原状态,应用程序触发注册的一个事件触发器以及当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于被触发的事件触发器的原状态这些步骤,无需对应用程序进行重新编译、调试以及测试,就可以实现应用程序的人工智能,实现简单,节约成本。
附图说明
图1为本发明实施例提供的一种应用程序人工智能的实现方法流程图;
图2为本发明实施例提供的一种网络游戏人工智能的实现方法流程图;
图3为具体实例中护送任务的原状态示意图;
图4为本发明实施例提供的另一种网络游戏人工智能的实现方法流程图;
图5为自动清洁机器人人工智能行为的原状态示意图;
图6为本发明实施例提供的一种应用程序人工智能的实现装置结构示意图;
图7为本发明实施例提供的另一种网络游戏人工智能的实现装置结构示意图。
具体实施方式
为了使本发明实施例的上述特征、优点更加明显易懂,下面结合具体实施方式进行详细说明。
首先介绍如下几个概念:
原状态:是一组完成人工智能行为的最小状态集合,例如:站立状态、巡逻状态、攻击状态、跟随状态、寻路状态以及防御状态。
事件触发器:是一组触发条件以及与触发条件对应的触发事件的集合,或者,是一组触发事件的集合,脚本通过接口可以向网络游戏程序注册触发条件以及触发事件,当满足脚本注册的触发条件时,网络游戏程序调用事件触发器中定义的触发事件。
本发明实施例提供的方法通过脚本与网络游戏程序的交互实现了网络游戏的人工智能。
请参考图1,为本发明实施例提供的一种应用程序人工智能的实现方法流程图,可以包括以下步骤:
步骤101:向应用程序注册至少一个事件触发器,并设置分别对应于所述至少一个事件触发器的原状态,所述原状态是一组完成人工智能行为的最小状态集合,所述事件触发器是一组触发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;
步骤102:所述应用程序触发注册的一个事件触发器;
步骤103:当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于所述被触发的事件触发器的原状态。
可以看出,在本发明实施例中,通过向应用程序注册至少一个事件触发器,并设置分别对应于至少一个事件触发器的原状态,应用程序触发注册的一个事件触发器以及当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于被触发的事件触发器的原状态这些步骤,无需对应用程序进行重新编译、调试以及测试,就可以实现应用程序的人工智能,实现简单,节约成本。
本发明实施例提供的方法可以应用于网络游戏程序,还可以应用于自动清洁机器人。下面结合一个实施例先对网络游戏程序进行说明,在该实施例中,假设网络游戏程序中人工智能行为的原状态包括第一原状态、第二原状态以及第三原状态。
请参考图2,为本发明实施例提供的一种网络游戏人工智能的实现方法流程图,可以包括以下步骤:
步骤201:脚本向应用程序注册第一事件触发器,并设置在第一事件触发器的触发事件结束后,人工智能行为的原状态为第一原状态;
步骤202:应用程序触发第一事件触发器;
步骤203:第一事件触发器的触发事件执行结束后,人工智能行为进入第一原状态;
步骤204:脚本向应用程序注册第二事件触发器,并设置在第二事件触发器的触发事件结束后,人工智能行为的原状态为第二原状态;
步骤205:应用程序触发第二事件触发器;
步骤206:第二事件触发器的触发事件执行结束后,人工智能行为进入第二原状态;
步骤207:脚本向应用程序注册第三事件触发器,并设置在第三事件触发器的触发事件结束后,人工智能行为的原状态为第三原状态;
步骤208:应用程序触发第三事件触发器;
步骤209:第三事件触发器的触发事件执行结束后,人工智能行为进入第三原状态。
通过步骤201至步骤209,人工智能行为完成了由第一原状态向第三原状态的迁移。
下面以一个具体实例对本发明实施例进行详细说明。在具体实例中,人工智能行为是一次护送任务,在这次护送任务中,有一个具备人工智能的Npc:A,玩家需要将Npc:A从地图的一点P0护送到另一点P1。玩家获取这次护送任务后,Npc:A将会对玩家说一句话,然后开始沿着指定路线移动到P1。途中玩家必须一直在Npc:A附近,Npc:A会随机与玩家聊天。如果途中有怪物攻击Npc:A,Npc:A要向玩家求救,并主动反击怪物,直至消灭怪物。
请参考图3,为具体实例中护送任务的原状态示意图。其中,301为站立状态,302为寻路状态,303为防御状态。S1表示Npc:A开始进入站立状态,S2表示Npc:A从站立状态迁移至寻路状态,S3表示Npc:A仍然处于寻路状态,S4表示Npc:A从寻路状态迁移至防御状态,S5表示从防御状态迁移至寻路状态,S6表示Npc:A仍然处于防御状态。
当Npc:A处于寻路状态时,若Npc:A受到了攻击,Npc:A迁移至防御状态,若Npc:A未受到攻击,Npc:A仍然处于寻路状态,继续移动位置。当Npc:A处于防御状态时,若不再受到攻击,Npc:A迁移至寻路状态,继续移动位置,若仍然受到攻击,Npc:A仍然处于防御状态。
请参考图4,为本发明实施例提供的另一种网络游戏人工智能的实现方法流程图,可以包括以下步骤:
步骤401:脚本向网络游戏程序注册初始事件触发器,并设置在初始触发事件结束后,护送任务的原状态为站立状态;
初始事件触发器的初始触发条件是:延时1秒钟,初始触发事件是:Npc:A向玩家说一句话。在具体实例中,Npc:A向玩家说的话是:“我们出发吧。”。
步骤402:网络游戏程序触发脚本注册的初始事件触发器;
初始事件触发器被触发后,Npc:A将在1秒钟后在计算机显示屏上向玩家提示“我们出发吧。”。
步骤403:初始触发事件执行结束后,Npc:A进入站立状态;
步骤404:脚本向网络游戏程序注册一个寻路触发器以及一个被怪物攻击的触发器;
若网络游戏程序触发寻路触发器,护送任务的原状态为寻路状态,若网络游戏程序触发被怪物攻击的触发器,护送任务的原状态为防御状态。
步骤405:网络游戏程序触发寻路触发器的触发事件;
步骤406:当步骤405中的触发事件执行结束后,Npc:A进入寻路状态;
Npc:A在寻路状态中,将按照脚本在注册寻路触发器时设置的坐标进行寻路。Npc:A在寻路过程中完成位置切换,并与玩家随机说一些话。
步骤407:脚本删除已注册的寻路触发器,重新注册一个寻路触发器,并设置在重新注册的寻路触发器的触发事件结束后,护送任务的原状态仍然为寻路状态;
步骤408:网络游戏程序触发重新注册的寻路触发器的触发事件;
步骤409:重新注册的寻路触发器的触发事件执行结束后,Npc:A仍然保持寻路状态;
此时,Npc:A将会按照脚本在重新注册寻路触发器时设置的坐标进行寻路。
步骤410:脚本删除已注册的所有触发器,向网络游戏程序注册一个时间触发器以及一个被怪物攻击的触发器;
若网络游戏程序触发时间触发器,时间触发器的触发事件是每5秒钟检查一次是否受到攻击,若是,进入步骤411,否则,返回步骤404。
若网络游戏程序触发被怪物攻击的触发器,护送任务的原状态为防御状态,进入步骤411。
步骤411:Npc:A进入防御状态;
步骤412:脚本删除已注册的触发器,向网络游戏程序注册一个新的寻路触发器以及一个被怪物攻击的触发器;
若网络游戏程序触发寻路触发器,护送任务的原状态为寻路状态,返回步骤405。若网络游戏程序触发被怪物攻击的触发器,护送任务的原状态为防御状态,返回步骤411。
需要指出的是,在上述具体实例中,一旦Npc:A寻路后移动到了位置P1,上述过程将会结束,脚本退出代码空间,从而完成了整个人工智能的护送任务。
下面给出一个上述具体实例的Lua脚本具体实例。
function AIStart()
   ClearAICondition(-1,-1)-删除已注册的所有触发器
   SetGuardLevel(AiNpcIdx,2)--设置当前Npc为无敌状态
   SetTimeCondition(AI_ACT_TIME_PERIOD,″eventBirthTalk″,1)-设置1秒延时触发器
   SetAIState(AI_STATE_NONE)-设置当前状态为站立
end
function eventBirthTalk()
   ClearAICondition(-1,-1)
   PlayerIndex=checkGuardPlayer()
   if(PlayerIndex>0)then
      NpcSay(AiNpcIdx,GetName()..″我们出发吧。″)-Npc对玩家说话
activateplayer(PlayerIndex)
local nWorldId,nX,nY=GetNpcWorldPos(AiNpcIdx)
local nNpcType=GetNpcTask(AiNpcIdx,1)
SetGuardLevel(AiNpcIdx,0)-取消Npc的无敌状态
SetNpcTask(AiNpcIdx,2,0)
--设置寻路触发器
SetRouteCondition(AI_ACT_ROUTE_DES,″eventAckStatel″,nWorldId,NPC_ROUTE_POS[nNpcType][1].x*32,NPC_ROUTE_POS[nNpcType][1].y*32,
1)
       --设置被其他Npc攻击的触发器
       SetAttackCondition(                   AI_ACT_ATTACK_NPC,″eventFreeMonsterAttack″)
       SetAIState(AI_STATE_ROUTE)-设置当前状态为寻路状态
   else
       SetAIState(AI_STATE_NONE)
   end
end
function eventAckState 1(step)
   PlayerIndex=checkGuardPlayer()
   if(PlayerIndex>0)then
      local nNpcType=GetNpcTask(AiNpcIdx,1)
      if(step<getn(NPC_ROUTE_POS[nNpcType]))then-判断还没有走到
最终点
         ClearAICondition(AI_CONDITION_ROUTE,-1)-删除原有寻路条
         local nRank=random(1,100)
         if(nRank<=50)then-随机说一句话
            nRank=random(1,getn(NPC_FREE_SAY))
            NpcSay(AiNpcIdx,NPC_FREE_SAY[nRank])
         end
         activateplayer(PlayerIndex)
         local nWorldId,nX,nY=GetNpcWorldPos(AiNpcIdx)
         SetNpcTask(AiNpcIdx,2,step)
         --设置寻路触发器
         SetRouteCondition(AI_ACT_ROUTE_DES,″eventAckStatel″,
nWorldId,NPC_ROUTE_POS[nNpcType][step       +        1].x*32,
NPC_ROUTE_POS[nNpcType][step+1].y*32,step+1)
         SetAIState(AI_STATE_ROUTE)-设置当前状态为寻路状态
     else-判断走到了最终点
         ClearAICondition(-1,-1)
         --对玩家说感谢的话
         NpcSay(AiNpcIdx,″过了这座桥我就安全了″..GetName()..″谢谢你!
″)
         awardPlayer(PlayerIndex)
         --设置10秒钟后消失的触发器
         SetTimeCondition(AI_ACT_TIME_PERIOD,″eventResetNpc″,10)
         SetAIState(AI_STATE_NONE)-设置当前状态为站立状态
      end
   else
      SetAIState(AI_STATE_NONE)
   end
end
function eventFreeMonsterAttack()
   ClearAICondition(-1,-1)-删除所有触发器
   PlayerIndex=checkGuardPlayer()
   if(PlayerIndex>0)then
      NpcSay(AiNpcIdx,GetName()..″救命啊,我要反击!″)-向玩家求救
      activateplayer(PlayerIndex)
      --设置了时间触发器,每5秒检查是否任然受到攻击
      SetTimeCondition(                             AI_ACT_TIME_PERIOD,
″eventCheckFreeMonsterAttac k″,5)
      --设置了一个被怪物攻击的触发器
      SetAttackCondition(                           AI_ACT_ATTACK_NPC,
″eventFreeMonsterAttackRefresh″)
      --SetTargetCondition(AI_TARGET_LOSE_PLAYER,″eventLostTarget″)
      local nWorldId,nX,nY=GetNpcWorldPos(AiNpcIdx)
      SetNpcOriPos(AiNpcIdx,nX,nY)
      SetAIState(AI_STATE_DEFEND)-设置当前状态为防御状态
   else
      SetAIState(AI_STATE_NONE)
   end
end
function eventCheckFreeMonsterAttack()
   ClearAICondition(-1,-1)
   PlayerIndex=checkGuardPlayer()
   if(PlayerIndex>0)then
      NpcSay(AiNpcIdx,″终于安全了,″..GetName()..″我得救了!″)
      activateplayer(PlayerIndex)
       local nWorldId,nX,nY=GetNpcWorldPos(AiNpcIdx)
       local nNpcType=GetNpcTask(AiNpcIdx,1)
       local step=GetNpcTask(AiNpcIdx,2)
       SetRouteCondition(AI_ACT_ROUTE_DES,″eventAckStatel″,nWorldId,
NPC_ROUTE_POS[nNpcType][step                  +                 1].x*32,
NPC_ROUTE_POS[nNpcType][step+1].y*32,step+1)
       SetAttackCondition(                        AI_ACT_ATTACK_NPC,
″eventFreeMonsterAttack″)
       SetAIState(AI_STATE_ROUTE)
   else
       SetAIState(AI_STATE_NONE)
   end
end
function eventFreeMonsterAttackRefresh()
    ClearAICondition(-1,-1)
    PlayerIndex=checkGuardPlayer()
    if(PlayerIndex>0)then
          NpcSay(AiNpcIdx,GetName()..″还在攻击我!″)-Npc向玩家求救
       --设置5秒延时时间触发器
       SetTimeCondition(                         AI_ACT_TIME_PERIOD,
″eventCheckFreeMonsterAttac k″,5)
       --设置被攻击触发器
       SetAttackCondition(                       AI_ACT_ATTACK_NPC,
″eventFreeMonsterAttackRefresh″)
       SetAIState(AI_STATE_DEFEND)
   else
      SetAIState(AI_STATE_NONE)
   end
end
在上述Lua脚本具体实例中,原状态可以包括:
AI_STATE_NONE=0          --站立状态
AI_STATE_FREE=1          --巡逻状态
AI_STATE_ATTACK=2        --攻击状态
AI_STATE_FELLOW=3        --跟随状态
AI_STATE_ROUTE=4         --寻路状态
AI_STATE_DEFEND=5        --防御状态
其中,站立状态、巡逻状态、攻击状态、跟随状态以及寻路状态设置的方式与上代码中的:SetAIState(AI_STATE_DEFEND)相同,不再赘述。
注册的事件触发器可以包括:目标触发器、时间触发器、攻击触发器、受伤触发器或者寻路触发器。其中,注册的触发条件分别为:目标触发条件、时间触发条件、攻击触发条件、受伤触发条件以及寻路触发条件。在Lua脚本语言的具体实例中,各触发条件的实现如下:
(1)目标触发条件:
AI_TARGET_FIND_PLAYER=0  --Param2:PlayerID(0:any)
AI_TARGET_LOSE_PLAYER=1  --NoParam
AI_TARGET_NEAR_PLAYER=2  --Param2:PlayerID(0:any)Param3:Distance
(2)时间触发条件:
AI_ACT_TIME_POINT=0      --Param2:Year    Param3:Month
Param4:Day Param5:Hour Param6:Minte Param7:Second
AI_ACT_TIME_PERIOD=1     --Param2:Second
(3)攻击触发条件:
AI_ACT_ATTACK_PLAYER=0   --Param2:PlayerID(0:any)
AI_ACT_ATTACK_NPC=1      --NoParam
(4)受伤触发条件:
AI_ACT_DAMAGE_VALUE_PLAYER=0    --Param2:DamageValue(mustgreat this value)Param3:PlayerID(0:any)
AI_ACT_DAMAGE_LOW_BLOOD_PLAYER=1--Param2:LifeValue(mustlow this value)Param3:PlayerID(0:any)
(5)寻路触发条件:
AI_ACT_ROUTE_DES=0    --Param2:WorldID Param3:WorldPosXParam4:WorldPosY Param5:FeedBackParam
其中,目标触发条件、攻击触发条件、受伤触发条件以及寻路触发条件的注册与上述代码中SetTimeCondition(AI_ACT_TIME_PERIOD,″eventCheckFreeMonsterAttack″,5)相同,不再赘述。
需要指出的是,本发明实施例可以使用的脚本语言还可以是python或者iava。应用程序除了网络游戏之外,还可以是自动清洁机器人的应用程序。此时,其人工智能行为的原状态可以包括:充电状态、移动清洁状态以及卸载垃圾状态。请参考图5,为自动清洁机器人人工智能行为的原状态示意图。其中,501为充电状态,502为移动清洁状态,503为卸载状态。
可以看出,在本发明实施例中,通过向网络游戏程序注册至少一个事件触发器,并设置分别对应于至少一个事件触发器的原状态,网络游戏程序触发注册的一个事件触发器以及当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于被触发的事件触发器的原状态这些步骤,无需对网络游戏程序进行重新编译、调试以及测试,就可以实现网络游戏的人工智能,实现简单,节约成本。
此外,本发明实施例提供的方法可以在各种应用程序上实现复杂的人工智能行为,实现灵活,同时兼顾了应用程序的运行效率,可扩展,易用性强,易于维护。
请参考图6,为本发明实施例提供的一种应用程序人工智能的实现装置结构示意图,可以包括:
注册单元601,用于向应用程序注册至少一个事件触发器,所述事件触发器是一组触发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;
第一设置单元602,用于设置分别对应于所述至少一个事件触发器的原状态,所述原状态是一组完成人工智能行为的最小状态集合;
接受触发单元603,用于接受所述应用程序的触发,所述应用程序触发了注册单元注册的一个事件触发器;
执行单元604,用于执行所述应用程序触发的一个事件触发器的触发事件,以使人工智能行为进入对应于被触发的事件触发器的原状态。
可以看出,在本发明实施例中,通过注册单元601、第一设置单元602、接受触发单元603以及执行单元604执行的操作,无需对应用程序进行重新编译、调试以及测试,就可以实现应用程序的人工智能,实现简单,节约成本。
请参考图7,为本发明实施例提供的另一种网络游戏人工智能的实现装置结构示意图,在图6的基础上,还可以包括:
删除单元701,用于在所述执行单元604执行操作之后,删除已注册的所述至少一个事件触发器。
第二设置单元702,用于在所述注册单元601执行操作的过程中,设置所述人工智能行为下一次移动的坐标。
所述第一设置单元602可以包括:
第三设置子单元602-1,用于设置站立状态;
或者,
第四设置子单元602-2,用于设置巡逻状态;
或者,
第五设置子单元602-3,用于设置攻击状态;
或者,
第六设置子单元602-4,用于设置跟随状态;
或者,
第七设置子单元602-5,用于设置寻路状态;
或者,
第八设置子单元602-6,用于设置防御状态。
所述注册单元601可以包括:
第一注册子单元601-1,用于向所述应用程序注册目标触发器;
或者,
第二注册子单元601-2,用于向所述应用程序注册时间触发器;
或者,
第三注册子单元601-3,用于向所述应用程序注册攻击触发器;
或者,
第四注册子单元601-4,用于向所述应用程序注册受伤触发器;
或者,
第五注册子单元601-5,用于向所述应用程序注册寻路触发器。
可以看出,在本发明实施例中,通过向应用程序注册至少一个事件触发器,并设置分别对应于至少一个事件触发器的原状态,应用程序触发注册的一个事件触发器以及当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于被触发的事件触发器的原状态这些步骤,无需对应用程序进行重新编译、调试以及测试,就可以实现应用程序的人工智能,实现简单,节约成本。
此外,本发明实施例提供的方法可以在各种应用程序上实现复杂的人工智能行为,实现灵活,同时兼顾了应用程序的运行效率,可扩展,易用性强,易于维护。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种应用程序人工智能的实现方法,其特征在于,所述方法包括:
脚本向应用程序注册至少一个事件触发器,并设置分别对应于所述至少一个事件触发器的原状态,所述原状态是一组完成人工智能行为的最小状态集合,所述事件触发器是一组触发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;
当满足脚本注册的触发条件时,所述应用程序触发注册的一个事件触发器;
当被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于所述被触发的事件触发器的原状态。
2.根据权利要求1所述的方法,其特征在于,在所述人工智能行为进入对应于所述被触发的事件触发器的原状态之后,所述方法还包括:
删除已注册的所述至少一个事件触发器。
3.根据权利要求1所述的方法,其特征在于,在所述向应用程序注册至少一个事件触发器的过程中,所述方法还包括:
设置所述人工智能行为下一次移动的坐标。
4.根据权利要求1所述的方法,其特征在于,所述原状态包括:站立状态、巡逻状态、攻击状态、跟随状态、寻路状态或者防御状态。
5.根据权利要求1所述的方法,其特征在于,所述事件触发器包括:目标触发器、时间触发器、攻击触发器、受伤触发器或者寻路触发器。
6.一种应用程序人工智能的实现装置,其特征在于,所述装置包括:
注册单元,用于脚本向应用程序注册至少一个事件触发器,所述事件触发器是一组触发条件及与所述触发条件对应的触发事件的集合,或一组触发事件的集合;
第一设置单元,用于设置分别对应于所述至少一个事件触发器的原状态,所述原状态是一组完成人工智能行为的最小状态集合;
接受触发单元,用于当满足脚本注册的触发条件时,接受所述应用程序的触发,所述应用程序触发了注册单元注册的一个事件触发器;
执行单元,用于执行所述应用程序触发的一个事件触发器的触发事件,以使被触发的事件触发器的触发事件执行结束后,人工智能行为进入对应于被触发的事件触发器的原状态。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
删除单元,用于在所述执行单元执行操作之后,删除已注册的所述至少一个事件触发器。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二设置单元,用于在所述注册单元执行操作的过程中,设置所述人工智能行为下一次移动的坐标。
9.根据权利要求6所述的装置,其特征在于,所述第一设置单元包括:
第三设置子单元,用于设置站立状态;
或者,
第四设置子单元,用于设置巡逻状态;
或者,
第五设置子单元,用于设置攻击状态;
或者,
第六设置子单元,用于设置跟随状态;
或者,
第七设置子单元,用于设置寻路状态;
或者,
第八设置子单元,用于设置防御状态。
10.根据权利要求6所述的装置,其特征在于,所述注册单元包括:
第一注册子单元,用于向所述应用程序注册目标触发器;
或者,
第二注册子单元,用于向所述应用程序注册时间触发器;
或者,
第三注册子单元,用于向所述应用程序注册攻击触发器;
或者,
第四注册子单元,用于向所述应用程序注册受伤触发器;
或者,
第五注册子单元,用于向所述应用程序注册寻路触发器。
CN 200910238701 2009-11-20 2009-11-20 应用程序人工智能的实现方法及装置 Active CN102073487B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910238701 CN102073487B (zh) 2009-11-20 2009-11-20 应用程序人工智能的实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910238701 CN102073487B (zh) 2009-11-20 2009-11-20 应用程序人工智能的实现方法及装置

Publications (2)

Publication Number Publication Date
CN102073487A CN102073487A (zh) 2011-05-25
CN102073487B true CN102073487B (zh) 2013-08-14

Family

ID=44032037

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910238701 Active CN102073487B (zh) 2009-11-20 2009-11-20 应用程序人工智能的实现方法及装置

Country Status (1)

Country Link
CN (1) CN102073487B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875442B2 (en) 2013-11-29 2018-01-23 Tencent Technology (Shenzhen) Company Limited Method, apparatus, and artificial intelligence editor for implementing artificial intelligence behavior

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104133666B (zh) 2013-11-29 2017-11-17 腾讯科技(成都)有限公司 确定人工智能行为的方法、装置及人工智能服务器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1818858A (zh) * 2002-07-26 2006-08-16 株式会社理光 程序生成方法
CN101192124A (zh) * 2006-11-17 2008-06-04 中兴通讯股份有限公司 对触摸屏输入信息进行自动区分处理的系统及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1818858A (zh) * 2002-07-26 2006-08-16 株式会社理光 程序生成方法
CN101192124A (zh) * 2006-11-17 2008-06-04 中兴通讯股份有限公司 对触摸屏输入信息进行自动区分处理的系统及方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875442B2 (en) 2013-11-29 2018-01-23 Tencent Technology (Shenzhen) Company Limited Method, apparatus, and artificial intelligence editor for implementing artificial intelligence behavior

Also Published As

Publication number Publication date
CN102073487A (zh) 2011-05-25

Similar Documents

Publication Publication Date Title
Fang et al. DHER: Hindsight experience replay for dynamic goals
Iovino et al. Learning behavior trees with genetic programming in unpredictable environments
Costelha et al. Modelling, analysis and execution of robotic tasks using petri nets
CN102073487B (zh) 应用程序人工智能的实现方法及装置
Zare et al. Cyrus 2D Simulation Team Description Paper 2016
Trevizan et al. Depth-based short-sighted stochastic shortest path problems
Pouncy et al. What Is the Model in Model‐Based Planning?
Osmanković et al. Implementation of Q—Learning algorithm for solving maze problem
Yourdshahi et al. Towards large scale ad-hoc teamwork
Wiering et al. Reinforcement learning soccer teams with incomplete world models
Urmanov et al. Training unity machine learning agents using reinforcement learning method
Kartasev Integrating reinforcement learning into behavior trees by hierarchical composition
Müller et al. Transformational Planning for Everyday Activity.
Khan et al. Playing first-person perspective games with deep reinforcement learning using the state-of-the-art game-AI research platforms
Kovarsky et al. A first look at build-order optimization in real-time strategy games
Nakagawa et al. Constructing self-adaptive systems using a kaos model
Pons et al. Scenario control for (serious) games using self-organizing multi-agent systems
Yuan et al. Skill reinforcement learning and planning for open-world long-horizon tasks
US20210346803A1 (en) Autoplayers for filling and testing online games
Gilmer et al. Recursive simulation to aid models of decisionmaking
Beyeler et al. A graph-based approach for discovery of stable deconstruction sequences
Liu et al. A hierarchical model for starcraft ii mini-game
Sukthankar et al. Robust and efficient plan recognition for dynamic multi-agent teams
Coimbra et al. Team modeling with deep behavioral cloning for the RoboCup 2D soccer simulation league
Leece et al. Opponent state modeling in RTS games with limited information using Markov random fields

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant