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

            Code Knight

            Programming is so cool
            隨筆 - 52, 文章 - 0, 評論 - 14, 引用 - 0
            數據加載中……

            基于LUA的AI模塊

                      前些天做了一個怪物AI模塊,起初的設計是基于C++的驅動模式,只在必要的時候調用LUA腳本,諸如以下:
                      在AI模塊的Update(float dt)中根據AI的幾種可能性進行相應的更新,比如
                     
            1 void CAI::Update(float dt)
            2 {
            3       // 更新攻擊目標,沒有目標尋找
            4      UpdateTarget();
            5      // 更新戰斗
            6      UpdateCombat();
            7     // 更新移動
            8     UpdateMove();
            9 }

                       在相應的Update中去檢測有沒有狀況發生,比如在UpdateTarget()中,這個怪物發現一個玩家進入了自己的地盤,要毆之,則發送一個事件給一個處理事件的函數ProcessEvent(int nEvent),這個事件可能會進入一個狀態機然后在更改到一個進入戰斗的狀態,調用相應的腳本函數,在這個腳本函數里就去做自己想做的事。
                       但是這樣的Update并不好,思考了一下覺得還是要以AI狀態為基準來Update比較適合和腳本交互。
                      
             1 void CAI::Update(float dt)
             2 {
             3   switch(m_nState)
             4   {
             5      case IDLE:
             6         {
             7              // 調用腳本,可能會調用尋找目標的接口
             8         }
             9         break;
            10      case COMBAT:
            11         {
            12            // 調用腳本,調用戰斗接口
            13         }
            14         break;
            15   }
            16 }
                       這樣就比較靈活了。腳本只是程序員用來解放勞動力的一種方式,做好功能接口讓更多非專業程序員也能定制游戲內容,這是自己對于腳本的理解。但是沒有腳本交互經驗,至于暴露給策劃的接口該有哪些,怎樣策劃用著舒服,自己還沒想好,如果在C++中,這些基本函數可以自己來做,直接把邏輯寫進IDLE的case都可以,但用腳本方式進入IDLE狀態后,腳本里肯定應該有FindTarget()這樣的接口,那么這一句FindTarget()交給策劃去填上?我覺得還不如直接在C++代碼中補上一句來得實在,策劃肯定不會直接去在腳本接口里去if else,腳本的提供還真是傷腦筋,例如進入戰斗狀態了,調用腳本里的戰斗接口,這個接口里又怎樣調用C++提供的接口,所有的戰斗過程都封裝成一個接口給策劃?那這個接口封裝的功能可能會很多很多,無疑是增加了工作量,并且策劃的使用也會有局限性。還是其中的邏輯仍然由程序員來編寫?該如何組織呢。另外每一幀的更新都回去調用腳本,這其中得消耗多少?

            posted on 2009-04-21 22:56 Code Knight 閱讀(1675) 評論(0)  編輯 收藏 引用 所屬分類: 腳本

            久久精品国产免费观看三人同眠| 色欲久久久天天天综合网| 亚洲乱码精品久久久久..| 一本一本久久A久久综合精品 | 久久青青草原亚洲av无码app| 久久精品国产99久久久| 久久av免费天堂小草播放| 久久人人爽人人爽人人片AV不| 久久精品无码午夜福利理论片 | 久久青草国产精品一区| 一本大道久久东京热无码AV | 看久久久久久a级毛片| 国产精品丝袜久久久久久不卡| 精品久久人人爽天天玩人人妻| 99久久99久久精品国产| 伊人久久大香线蕉av不变影院| 国产激情久久久久影院老熟女免费 | 99精品久久精品一区二区| 7国产欧美日韩综合天堂中文久久久久| 亚洲国产婷婷香蕉久久久久久| 日韩精品国产自在久久现线拍 | 性做久久久久久久久久久| 久久91精品久久91综合| 久久久久久久波多野结衣高潮| 久久无码AV中文出轨人妻| 久久婷婷国产麻豆91天堂| 7777久久久国产精品消防器材| 亚洲七七久久精品中文国产 | 色偷偷偷久久伊人大杳蕉| 中文字幕精品无码久久久久久3D日动漫 | 一级做a爱片久久毛片| 91精品国产综合久久久久久| 日日躁夜夜躁狠狠久久AV| 亚洲午夜无码久久久久小说| 日日狠狠久久偷偷色综合96蜜桃| 办公室久久精品| 国内精品久久久久久久影视麻豆 | 久久97久久97精品免视看| 欧美一区二区精品久久| 18岁日韩内射颜射午夜久久成人| 2021久久国自产拍精品|