• <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   管理


            中文无码久久精品| 91精品国产9l久久久久| 久久免费的精品国产V∧| 久久人妻少妇嫩草AV无码蜜桃| 久久福利青草精品资源站免费| 久久精品国产99久久久古代 | 国内精品久久久久久久久| 99久久国语露脸精品国产| 久久亚洲国产中v天仙www| 久久青草国产精品一区| 国产精品无码久久四虎| 久久久精品无码专区不卡| 午夜精品久久久久久影视riav| 日产精品久久久久久久| 奇米影视7777久久精品| 91久久精品91久久性色| 国产精品免费久久久久电影网| 久久精品免费网站网| 久久精品久久久久观看99水蜜桃| 亚洲第一极品精品无码久久 | 国产精品久久精品| 91久久香蕉国产熟女线看| 亚洲国产成人久久一区WWW| 精品久久人人爽天天玩人人妻| 久久久无码精品亚洲日韩按摩| 国产午夜久久影院| 亚洲精品无码久久不卡| 国产精品久久久久国产A级| 久久久久黑人强伦姧人妻| 麻豆一区二区99久久久久| 国产精品日韩欧美久久综合| 一本久久a久久精品vr综合| 国産精品久久久久久久| 无遮挡粉嫩小泬久久久久久久 | 国产精品毛片久久久久久久| 久久丝袜精品中文字幕| 国产亚洲精久久久久久无码| 天天影视色香欲综合久久| 秋霞久久国产精品电影院| 亚洲综合精品香蕉久久网| 久久久久无码精品|