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


            posted on 2012-08-13 09:51 flipcode 閱讀(176) 評論(0)  編輯 收藏 引用
            久久亚洲国产精品123区| 久久亚洲AV成人出白浆无码国产| 久久精品国产亚洲av日韩| 精品一二三区久久aaa片| 久久亚洲AV成人出白浆无码国产| www.久久精品| 国产精品久久久久久久久软件| 伊人久久大香线蕉亚洲| 国产成人精品久久综合| 亚洲综合久久夜AV | 狠狠色丁香久久婷婷综| 怡红院日本一道日本久久| 中文字幕久久精品无码| 久久久噜噜噜久久中文福利| 老司机国内精品久久久久| 亚洲精品美女久久久久99小说| 久久婷婷成人综合色综合| 久久久久亚洲精品中文字幕 | 久久精品国产黑森林| 亚洲国产一成人久久精品| A级毛片无码久久精品免费| 香蕉久久夜色精品升级完成 | 7777精品伊人久久久大香线蕉| 国产午夜免费高清久久影院| 久久国产AVJUST麻豆| 大蕉久久伊人中文字幕| 国产产无码乱码精品久久鸭| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久久久国产精品嫩草影院| 久久精品女人天堂AV麻| 99久久久久| 日本道色综合久久影院| 国产情侣久久久久aⅴ免费| 久久精品国产亚洲AV影院| 要久久爱在线免费观看| 一级做a爰片久久毛片看看| 久久久无码精品亚洲日韩软件| 国产亚洲成人久久| 久久九九久精品国产免费直播| 久久精品无码一区二区三区日韩| 久久精品成人免费看|