国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      行為樹的靜態(tài)解析、執(zhí)行以及優(yōu)化方法和裝置的制造方法

      文檔序號(hào):9887375閱讀:1401來源:國(guó)知局
      行為樹的靜態(tài)解析、執(zhí)行以及優(yōu)化方法和裝置的制造方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及游戲技術(shù)領(lǐng)域,尤其涉及一種靜態(tài)解析行為樹的方法和裝置、行為樹執(zhí)行方法和裝置、行為樹運(yùn)行優(yōu)化方法和裝置、在游戲運(yùn)行中執(zhí)行行為樹的方法和裝置、以及在游戲運(yùn)行中執(zhí)行行為樹的優(yōu)化方法和裝置。
      【背景技術(shù)】
      [0002]在現(xiàn)有技術(shù)中,行為樹通常使用運(yùn)行時(shí)動(dòng)態(tài)解析的工作方式。比如在即時(shí)對(duì)戰(zhàn)類游戲中,非玩家控制的戰(zhàn)斗單位每幀都會(huì)調(diào)用一次行為樹來執(zhí)行自己的邏輯,調(diào)用的過程會(huì)解析一次行為樹節(jié)點(diǎn)的參數(shù),據(jù)此決定行為。當(dāng)游戲場(chǎng)景中存在的戰(zhàn)斗單位很多時(shí),執(zhí)行行為樹將占用大量CPU時(shí)間,嚴(yán)重影響游戲的運(yùn)行效率。根據(jù)實(shí)際的統(tǒng)計(jì)數(shù)據(jù),在一個(gè)幀率為30的即時(shí)對(duì)戰(zhàn)類游戲中,戰(zhàn)場(chǎng)中同時(shí)存在的戰(zhàn)斗單位總數(shù)大概在20到30個(gè),按每個(gè)戰(zhàn)斗單位每幀執(zhí)行一次行為樹來計(jì)算,游戲每秒鐘將執(zhí)行約1000次行為樹,占用了整個(gè)客戶端運(yùn)行時(shí)間的30 % -40 %。其中20 % -25 %來自于解析參數(shù),1 %左右來自于行為樹節(jié)點(diǎn)的相互調(diào)用,5%左右是其他消耗。解析參數(shù)的消耗是最大的,原因主要是參數(shù)類型的多樣性,例如,一個(gè)節(jié)點(diǎn)要判斷一定范圍L內(nèi)的敵方單位不大于N,那么行為樹執(zhí)行到這個(gè)節(jié)點(diǎn)時(shí)的解析邏輯是:取出參數(shù)L;根據(jù)L選取周圍的敵方單位;獲得周圍的敵方單位數(shù)目η;解析出“不大于”的含義和參數(shù)N;判斷η是否大于N,并將結(jié)果返回給上一層節(jié)點(diǎn)。注意到上述過程的每一步都是不確定的,特別是判斷“不大于”這個(gè)操作,在解析節(jié)點(diǎn)中根據(jù)這里的內(nèi)容,可能會(huì)執(zhí)行不同的邏輯。特別地,當(dāng)每一幀都要重復(fù)解析每個(gè)節(jié)點(diǎn)的時(shí)候,占用的時(shí)間會(huì)非常大,從而導(dǎo)致游戲邏輯卡頓。
      [0003]在某些應(yīng)用中也會(huì)用到一些優(yōu)化方法,比如針對(duì)相同的參數(shù),記住上次的執(zhí)行結(jié)果。但是這種方法適用范圍有限,只能針對(duì)特定的節(jié)點(diǎn)實(shí)現(xiàn),并且難于調(diào)試,在出現(xiàn)了錯(cuò)誤的時(shí)候難以定位,如果行為樹節(jié)點(diǎn)的參數(shù)填寫有誤,也沒有辦法及時(shí)發(fā)現(xiàn),給程序調(diào)試增加比較大的困難。

      【發(fā)明內(nèi)容】

      [0004]本發(fā)明所要解決的問題是:如何有效提高行為樹執(zhí)行效率、并降低行為樹執(zhí)行消耗。
      [0005]為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了一種靜態(tài)解析行為樹的方法,包括:
      [0006]依次讀取原始行為樹文件中的至少部分連續(xù)節(jié)點(diǎn)的節(jié)點(diǎn)信息;
      [0007]根據(jù)讀取到的所述至少部分連續(xù)節(jié)點(diǎn)中的第一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息生成空的腳本文件;
      [0008]依次將讀取到的每一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息生成對(duì)應(yīng)的節(jié)點(diǎn)函數(shù)并寫入所述腳本文件中,從而得到用于解析所述原始行為樹文件的至少部分連續(xù)節(jié)點(diǎn)的腳本文件。
      [0009]作為上述方案的改進(jìn),所述至少部分連續(xù)節(jié)點(diǎn)包括根節(jié)點(diǎn);
      [0010]所述根據(jù)讀取到的所述至少部分連續(xù)節(jié)點(diǎn)中的第一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息生成空的腳本文件具體為:
      [0011 ]根據(jù)所述根節(jié)點(diǎn)的節(jié)點(diǎn)信息對(duì)應(yīng)生成所述空的腳本文件。
      [0012]作為上述方案的改進(jìn),所述至少部分連續(xù)節(jié)點(diǎn)包括所述原始行為樹文件中的全部節(jié)點(diǎn);
      [0013]所述依次將讀取到的每一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息生成對(duì)應(yīng)的節(jié)點(diǎn)函數(shù)并寫入空的腳本文件中,從而得到用于解析所述原始行為樹文件的至少部分連續(xù)節(jié)點(diǎn)的腳本文件具體包括步驟:
      [0014]當(dāng)讀取到的節(jié)點(diǎn)為根節(jié)點(diǎn)時(shí),根據(jù)所述根節(jié)點(diǎn)的節(jié)點(diǎn)信息在所述腳本文件中生成對(duì)應(yīng)的入口函數(shù);
      [0015]當(dāng)讀取到的節(jié)點(diǎn)為子節(jié)點(diǎn)時(shí),根據(jù)所述子節(jié)點(diǎn)的節(jié)點(diǎn)信息在所述腳本文件中生成對(duì)應(yīng)的節(jié)點(diǎn)函數(shù);
      [0016]當(dāng)在所述腳本文件中生成全部節(jié)點(diǎn)所對(duì)應(yīng)的節(jié)點(diǎn)函數(shù)時(shí),得到用于解析所述原始行為樹文件的完整腳本文件。
      [0017]作為上述方案的改進(jìn),所述節(jié)點(diǎn)信息包括節(jié)點(diǎn)類型、節(jié)點(diǎn)名稱和節(jié)點(diǎn)參數(shù);其中,
      [0018]節(jié)點(diǎn)類型包括根節(jié)點(diǎn)、裝飾節(jié)點(diǎn)、動(dòng)作節(jié)點(diǎn)以及條件節(jié)點(diǎn),每一節(jié)點(diǎn)的節(jié)點(diǎn)類型決定了該節(jié)點(diǎn)生成函數(shù)時(shí)的調(diào)用關(guān)系;
      [0019]每一節(jié)點(diǎn)的節(jié)點(diǎn)名稱決定了該節(jié)點(diǎn)生成函數(shù)時(shí)所用的生成規(guī)則;
      [0020]每一節(jié)點(diǎn)的節(jié)點(diǎn)參數(shù)決定了該節(jié)點(diǎn)生成函數(shù)的具體內(nèi)容。
      [0021]作為上述方案的改進(jìn),所述腳本文件的文件名以原始行為樹文件中的根節(jié)點(diǎn)的編號(hào)命名。
      [0022]作為上述方案的改進(jìn),還包括:
      [0023]當(dāng)讀取到的節(jié)點(diǎn)引用了其他行為樹模塊的功能或者使用了全局變量,則在所述腳本文件的文件頭部增加相應(yīng)的模塊引用語句或變量聲明。
      [0024]作為上述方案的改進(jìn),如果同一個(gè)原始行為樹文件中存在多個(gè)節(jié)點(diǎn)引用相同的模塊,則將生成的模塊引用語句合并;如果同一個(gè)原始行為樹文件中存在多個(gè)節(jié)點(diǎn)聲明變量,則將節(jié)點(diǎn)編號(hào)作為變量名后綴。
      [0025]作為上述方案的改進(jìn),還包括:
      [0026]當(dāng)讀取到的節(jié)點(diǎn)需要跳轉(zhuǎn)到另一行為樹去執(zhí)行,則在所述腳本文件的文件頭部生成對(duì)另一行為樹的引用語句,并在生成的節(jié)點(diǎn)函數(shù)中加入對(duì)另一行為樹所對(duì)應(yīng)的入口函數(shù)的調(diào)用。
      [0027]作為上述方案的改進(jìn),還包括:
      [0028]將所述完整腳本文件存儲(chǔ)。
      [0029]本發(fā)明實(shí)施例還提供了一種行為樹執(zhí)行方法,其中,執(zhí)行的行為樹文件中的至少部分連續(xù)節(jié)點(diǎn)通過如上所述的靜態(tài)解析行為樹的方法進(jìn)行靜態(tài)解析后得到相應(yīng)的腳本文件,所述行為樹執(zhí)行方法包括步驟:
      [0030]當(dāng)讀取到行為樹文件中的所述至少部分連續(xù)節(jié)點(diǎn)時(shí),獲取相應(yīng)的腳本文件并順序執(zhí)行所述腳本文件中的每一個(gè)函數(shù);
      [0031]當(dāng)讀取到行為樹文件中的其他節(jié)點(diǎn)時(shí),動(dòng)態(tài)解析每一其他節(jié)點(diǎn)的節(jié)點(diǎn)信息后再執(zhí)行。[0032 ]本發(fā)明實(shí)施例還提供了一種行為樹執(zhí)行方法,包括:
      [0033]根據(jù)預(yù)先設(shè)置的執(zhí)行順序,讀取相應(yīng)的腳本文件;其中,所述腳本文件為利用如上所述的靜態(tài)解析行為樹的方法所生成的用于解析原始行為樹文件的完整腳本文件;
      [0034]順序執(zhí)行所述腳本文件中的每一個(gè)函數(shù)。
      [0035]作為上述方案的改進(jìn),所述預(yù)先設(shè)置的執(zhí)行順序具體為:
      [0036]通過引入函數(shù)import引入執(zhí)行完每個(gè)腳本文件后的下一個(gè)腳本文件。
      [0037]本發(fā)明實(shí)施例還提供了一種行為樹運(yùn)行優(yōu)化方法,包括:
      [0038]利用如上所述的靜態(tài)解析行為樹的方法對(duì)原始行為樹文件提前進(jìn)行解析,生成對(duì)應(yīng)的腳本文件;
      [0039]在行為樹運(yùn)行時(shí),根據(jù)預(yù)先設(shè)置的執(zhí)行順序,調(diào)用相應(yīng)的腳本文件,并順序執(zhí)行所述腳本文件中的每一個(gè)函數(shù)。
      [0040]本發(fā)明實(shí)施例還提供了一種在游戲運(yùn)行中執(zhí)行行為樹的方法,包括:
      [0041]根據(jù)預(yù)先設(shè)置的執(zhí)行順序,讀取相應(yīng)的腳本文件;其中,所述腳本文件為利用如上所述的靜態(tài)解析行為樹的方法所生成的用于解析原始行為樹文件的完整腳本文件;
      [0042]順序執(zhí)行所述腳本文件中的每一個(gè)函數(shù),并響應(yīng)相應(yīng)的游戲動(dòng)作。
      [0043]本發(fā)明實(shí)施例還提供了一種在游戲運(yùn)行中執(zhí)行行為樹的優(yōu)化方法,包括:
      [0044]利用如上所述的靜態(tài)解析行為樹的方法對(duì)原始行為樹文件提前進(jìn)行解析,生成對(duì)應(yīng)的腳本文件;
      [0045]在游戲運(yùn)行中執(zhí)行行為樹時(shí),根據(jù)預(yù)先設(shè)置的執(zhí)行順序,調(diào)用相應(yīng)的腳本文件,并順序執(zhí)行所述腳本文件中的每一個(gè)函數(shù)及響應(yīng)相應(yīng)的游戲動(dòng)作。
      [0046]本發(fā)明實(shí)施例對(duì)應(yīng)提供了一種靜態(tài)解析行為樹的裝置,包括:
      [0047]原始行為樹讀取模塊,用于依次讀取原始行為樹文件中的至少部分連續(xù)節(jié)點(diǎn)的節(jié)點(diǎn)信息;
      [0048]腳本文件生成模塊,用于根據(jù)讀取到的所述至少部分連續(xù)節(jié)點(diǎn)中的第一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息生成空的腳本文件;
      [0049]節(jié)點(diǎn)函數(shù)生成模塊,用于依次將讀取到的每一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)信息生成對(duì)應(yīng)的節(jié)點(diǎn)函數(shù)并寫入所述腳本文件中,從而得到用于解析所述原始行為樹文件的至少部分連續(xù)節(jié)點(diǎn)的腳本文件。
      [0050]作為上述方案的改進(jìn),所述至少部分連續(xù)節(jié)點(diǎn)包括根節(jié)點(diǎn);所述腳本文件生成模塊具體用于:根據(jù)所述根節(jié)點(diǎn)的節(jié)點(diǎn)信息對(duì)應(yīng)生成所述空的腳本文件。
      [0051]作為上述方案的改進(jìn),所述至少部分連續(xù)節(jié)點(diǎn)包括所述原始行為樹文件中的全部節(jié)點(diǎn);所述節(jié)點(diǎn)函數(shù)生成模塊具體包括:
      [0052]入口函數(shù)生成單元,用于當(dāng)讀取到的節(jié)點(diǎn)為根節(jié)點(diǎn)時(shí),根據(jù)所述根節(jié)點(diǎn)的節(jié)點(diǎn)信息在所述腳本文件中生成對(duì)應(yīng)的入口函數(shù);
      [0053]子節(jié)點(diǎn)函數(shù)生成單元,用于當(dāng)讀取到的節(jié)點(diǎn)為子節(jié)點(diǎn)時(shí),根據(jù)所述子節(jié)點(diǎn)的節(jié)點(diǎn)信息在所述腳本文件中生成對(duì)應(yīng)的節(jié)點(diǎn)函數(shù);
      [0054]當(dāng)在所述腳本文件中生成全部節(jié)點(diǎn)所對(duì)應(yīng)的節(jié)點(diǎn)函數(shù)時(shí),得到用于解析所述原始行為樹文件的完整腳本文件。
      [0055]作為上述方案的改進(jìn),所述節(jié)點(diǎn)信息包括節(jié)點(diǎn)類型、節(jié)點(diǎn)名稱和節(jié)點(diǎn)參數(shù);其中,
      [0056]節(jié)點(diǎn)類型包括根節(jié)點(diǎn)、裝飾節(jié)點(diǎn)、動(dòng)作節(jié)點(diǎn)以及條件節(jié)點(diǎn),每一節(jié)點(diǎn)的節(jié)點(diǎn)類型決定了該節(jié)點(diǎn)生成函數(shù)時(shí)的調(diào)用關(guān)系;
      [0057]每一節(jié)點(diǎn)的節(jié)點(diǎn)名稱決定了該節(jié)點(diǎn)生成函數(shù)時(shí)所用的生成規(guī)則;
      [0058]每一節(jié)點(diǎn)的節(jié)點(diǎn)參數(shù)決定了該節(jié)點(diǎn)生成函數(shù)的具體內(nèi)容。
      [0059]作為上述方案的改進(jìn),所述腳本文件的文件名以原始行為樹文件中的根節(jié)點(diǎn)的編號(hào)命名。
      [0060]作為上述方案的改進(jìn),還包括:
      [0061 ]全局引用模塊,用于當(dāng)原始行為樹讀取模塊讀取到的節(jié)點(diǎn)引用了其他行為樹模塊的功能或者使用了全局變量,則在所述腳本文件的文件頭部增加相應(yīng)的模塊引用語句或變量聲明。
      [0062]作為上述方案的改進(jìn),所述全局引用模塊進(jìn)一步用于:
      [0063]如果同一個(gè)原始行為樹文件中存在多個(gè)節(jié)點(diǎn)引用相同的模塊,則將生成的模塊引用語句合并;如果同一個(gè)原始行為樹文件中存在多個(gè)節(jié)點(diǎn)聲明變量,則將節(jié)點(diǎn)編號(hào)作為變量名后綴。
      [0064]作為上述方案的改進(jìn),還包括:
      [0065]外部行為樹調(diào)用模塊,用于當(dāng)讀取到的節(jié)點(diǎn)需要跳轉(zhuǎn)到另一行為樹去執(zhí)行,則在所述腳本文件的文件頭部生成對(duì)另一行為樹的引用語句,在生成的節(jié)點(diǎn)函數(shù)中加入對(duì)另一行為樹所對(duì)應(yīng)的入口函數(shù)的調(diào)用。
      [0066]作為上述方案的改進(jìn),還包括:
      [0067]存儲(chǔ)模塊,用于將所述完整腳本文件存儲(chǔ)。
      [0068]本發(fā)明實(shí)施例還對(duì)應(yīng)提供了一種行為樹執(zhí)行裝置,其中,執(zhí)行的行為樹文件中的至少部分連續(xù)節(jié)點(diǎn)通過如上所述的靜態(tài)解析行為樹的裝置進(jìn)行靜態(tài)解析后得到相應(yīng)的腳本文件,所述行為樹執(zhí)行裝置包括:
      [0069]腳本文件讀取及執(zhí)行模塊,用于當(dāng)讀取到行為樹文件中的所述至少部分連續(xù)節(jié)點(diǎn)時(shí),獲取相應(yīng)的腳本文件并順序執(zhí)行所述腳本文件中的每一個(gè)函數(shù);
      [0070]動(dòng)態(tài)解析及執(zhí)行模塊,用于當(dāng)讀取到行為樹文件中的其他節(jié)點(diǎn)時(shí),動(dòng)態(tài)解析每一其他節(jié)點(diǎn)的節(jié)點(diǎn)信息后再執(zhí)行。
      [0071]本發(fā)明實(shí)施例還對(duì)應(yīng)提供了一種行為樹執(zhí)行裝置,包括:
      [0072]腳本
      當(dāng)前第1頁1 2 3 4 5 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1