• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 72,  comments - 4,  trackbacks - 0

            mythos中的ai是并發(fā)的棧式狀態(tài)機(jī):

            拿wolf作為例子:
            一。配置文件:
            在ai目錄中的wolf.xml配置它所有的行為(包括每個(gè)行為發(fā)生機(jī)率,參數(shù),以及執(zhí)行函數(shù)):
            其中執(zhí)行函數(shù)以及對(duì)應(yīng)skillid如下:
            1.
              <nBehaviorId>move - approach target</nBehaviorId>
              <nSkillId>monster melee</nSkillId>
            2.
              <nBehaviorId>skill - do skill</nBehaviorId>
              <nSkillId>monster melee</nSkillId>
            3.
              <nBehaviorId>skill - do skill</nBehaviorId>
              <nSkillId>Fidget</nSkillId>
            4.
              <nBehaviorId>move - wander</nBehaviorId>
              <nSkillId/>

            二。ai更新:
               SrvGameTick--》GameEventsProcess--》AI_Update()
              在AI_Update中遍歷執(zhí)行該unit的所有行為(behavior) :
              1. sBehaviorApproachTarget()
                 查找對(duì)應(yīng)的目標(biāo),發(fā)出朝它移動(dòng)指令
                
              1. sBehaviorDoSkill()
                 如果有目標(biāo)則執(zhí)行sSkillExecute進(jìn)行技能施放
                
              2. ...類似功能處理
             
              。。。
             
              【說明】:
                mythos的行為是并發(fā)的棧式,最大可以有5個(gè)棧, 用
                int nIndex = tContext.pnStack[ tContext.nStackCurr ]這樣的結(jié)構(gòu)進(jìn)行處理,
                通過pTable->pBehaviors[ nIndex ]得到對(duì)應(yīng)的行為處理函數(shù)進(jìn)行執(zhí)行處理。
                   
                a. 并發(fā):
                每執(zhí)行完一個(gè)行為函數(shù)后 tContext.pnStack[ tContext.nStackCurr ]++; 這樣就換到unit的下一個(gè)行為函數(shù)再執(zhí)行。
               
                b. 進(jìn)入棧(子函數(shù)):
                tContext.nStackCurr為棧下標(biāo),初始tContext.nStackCurr=0,即為第0個(gè)棧,
                可以設(shè)置tContext.nStackCurr++;并且tContext.pnStack[ tContext.nStackCurr ]=nBranchTo(要走的分支號(hào))。這樣來
                執(zhí)行分支函數(shù)。 當(dāng)分支函數(shù)完成時(shí)tContext.nStackCurr--再回來上一級(jí)。
               
                另外有些行為函數(shù)是執(zhí)行一次的,執(zhí)行完了就會(huì)把它從列表中刪除。下次不會(huì)再遍歷到.


            posted on 2012-08-13 09:51 flipcode 閱讀(186) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            精品久久一区二区| 亚洲国产精品嫩草影院久久| 亚洲人AV永久一区二区三区久久| 韩国无遮挡三级久久| 波多野结衣中文字幕久久| 久久精品国产亚洲AV麻豆网站| 日本人妻丰满熟妇久久久久久| 亚洲人成伊人成综合网久久久| 亚洲色欲久久久综合网东京热| 亚洲国产另类久久久精品小说| 少妇内射兰兰久久| 国产成人综合久久综合| 久久久久久综合一区中文字幕| 久久精品国产亚洲麻豆| 狠狠久久综合| 色悠久久久久久久综合网| 伊人久久综在合线亚洲2019| 久久国产视频99电影| 一级女性全黄久久生活片免费| 精品久久亚洲中文无码| 99久久国语露脸精品国产| 久久国产成人| 久久久久久久久无码精品亚洲日韩 | 午夜精品久久久久久影视777| 久久中文字幕人妻丝袜| 久久99国产精品尤物| 久久精品国产一区二区三区不卡| 久久久久久亚洲精品影院| 国产麻豆精品久久一二三| 国内精品免费久久影院| 97久久婷婷五月综合色d啪蜜芽| 国产欧美久久久精品| 奇米影视7777久久精品人人爽 | 国产91色综合久久免费| 久久综合久久伊人| 久久青青草原综合伊人| 久久精品国产久精国产果冻传媒| 99久久免费国产精品| 久久亚洲AV成人无码国产| 亚洲国产精品成人久久蜜臀 | 久久精品国产亚洲综合色|