1. Behaviac游戲 AI 開發(fā)框架組件

        聯(lián)合創(chuàng)作 · 2023-09-30 10:59

        Behaviac是游戲AI的開發(fā)框架組件,也是游戲原型的快速設(shè)計(jì)工具。支持行為樹BT,狀態(tài)機(jī)FSM,HTN等多種范式,方便的編輯和調(diào)試。支持全平臺(tái),適用于客戶端和服務(wù)器,助力游戲快速迭代開發(fā)。

        編輯器可以運(yùn)行在PC上,操作方便直觀可靠,支持實(shí)時(shí)和離線調(diào)試;編輯器可以導(dǎo)出xml,bson等多種格式,更可以導(dǎo)出C++,C#源碼,提供最高效率。

        運(yùn)行時(shí)支持全平臺(tái),有C++和C#兩個(gè)版本,原生支持Unity。

        已被《天天炫斗》、《QQ飛車》、《全民突擊》、《全民奪寶》、《九龍戰(zhàn)》等游戲及其他更多預(yù)研項(xiàng)目使用。

        編輯器和運(yùn)行時(shí)

        behaviac作為游戲AI的開發(fā)框架組件,有編輯器和運(yùn)行時(shí)兩個(gè)部分,這兩個(gè)部分通過元信息(描述AI實(shí)例屬性和能力方法的信息)交換信息。

        元信息

        元信息用來描述類型的屬性和方法。運(yùn)行時(shí)導(dǎo)出元信息,如下所示。編輯器中,該元信息作為基本的語法單位用來創(chuàng)建行為樹。

        <agent classfullname="framework::GameObject" base="behaviac::Agent" inherited="true" DisplayName="" Desc="" IsRefType="true">
        <Member Name="HP" DisplayName="" Desc="" Type="uint" Class="framework::GameObject" />
        <Member Name="age" DisplayName="" Desc="" Type="long" Class="framework::GameObject" />
        <Method Name="GoStraight" DisplayName="" Desc="" Class="framework::GameObject" ReturnType="void">
        <Param DisplayName="speed" Desc="speed" Type="int" />
        </Method>
        <Method Name="TurnTowardsTarget" DisplayName="" Desc="" Class="framework::GameObject" ReturnType="int">
        <Param DisplayName="turnSpeed" Desc="turnSpeed" Type="float" />
        </Method>
        <Method Name="alignedWithPlayer" DisplayName="" Desc="" Class="framework::GameObject" ReturnType="bool" />
        <Method Name="playerIsAligned" DisplayName="" Desc="" Class="framework::GameObject" ReturnType="bool" />
        <Method Name="projectileNearby" DisplayName="" Desc="" Class="framework::GameObject" ReturnType="bool">
        <Param DisplayName="radius" Desc="radius" Type="float" />
        </Method>
        <Method Name="distanceToPlayer" DisplayName="" Desc="" Class="framework::GameObject" ReturnType="float" />
        </agent>

        在3.x版本之前的版本中,元信息必須通過運(yùn)行時(shí)來導(dǎo)出,策劃需要新的屬性或方法時(shí),必須等待程序員更新代碼重現(xiàn)導(dǎo)出元信息后才能使用。而在3.x版本 中,可以直接在編輯器中創(chuàng)建一個(gè)類型,并且創(chuàng)建它的屬性和方法,而且可以導(dǎo)出類型的c++或c#源碼,這極大的加速了迭代的過程,從而把編輯器作為一個(gè)原 型設(shè)計(jì)工具。

        編輯器

        編輯器是一個(gè)可以運(yùn)行在Windows平臺(tái)上的編輯工具。

        在編輯器內(nèi),使用鼠標(biāo)或快捷鍵,可以添加、編輯、配置、修改行為樹(包括FSM,或HTN),也可以實(shí)時(shí)或離線調(diào)試游戲的行為,既可以設(shè)斷點(diǎn),也可以查看或修改變量的值。

        運(yùn)行時(shí)

        運(yùn)行時(shí)有C++和C#兩個(gè)版本,Unity使用C#的實(shí)現(xiàn),像是cocos等使用C++的引擎或平臺(tái)使用C++的實(shí)現(xiàn)。其具體邏輯是一致的,即加載編輯器中導(dǎo)出的行為樹,解釋運(yùn)行之。

            g_player = behaviac::Agent::Create<CBTPlayer>();
            bool bRet = false;
            bRet = g_player->btload(pszTreeName);
            assert(bRet);
            g_player->btsetcurrent(pszTreeName);
        behaviac::EBTStatus status = behaviac::BT_RUNNING;
        while (status == behaviac::BT_RUNNING)
        {
        status = g_player->btexec();
        }

        導(dǎo)出和調(diào)試

        在編輯器內(nèi)創(chuàng)建好行為后,需要導(dǎo)出,然后運(yùn)行時(shí)才可以加載運(yùn)行。編輯器支持導(dǎo)出多種格式:

        1. xml

        2. bson

        3. cpp

        4. c#

        其中xml和bson作為數(shù)據(jù),可以被加載,而cpp或c#作為源碼直接編輯鏈接進(jìn)程序,用戶可以根據(jù)需要選擇使用最合適的格式。

        功能

        • behaviac作為游戲AI的開發(fā)框架組件,主要是用來開發(fā)游戲AI。

        • behaviac的編輯器使用圖形化的界面(Visual scripting)和操作,操作直觀方便。

        • 游戲中的NPC,小怪,老怪等等的游戲邏輯都可以通過behaviac來創(chuàng)建和開發(fā)。

        • behaviac并不限于開發(fā)游戲AI的游戲邏輯,也可以用來開發(fā)組隊(duì)邏輯(Squad Logic),策略AI(Strategy AI),玩家Avatar,甚至關(guān)卡設(shè)計(jì)等各種游戲場(chǎng)景。

        • behaviac還可以用作原型設(shè)計(jì)工具,策劃只是使用behaviac編輯器來設(shè)計(jì)類型安全的,表達(dá)嚴(yán)謹(jǐn)?shù)挠螒蜻壿嫛?/p>

        • C#版本的運(yùn)行時(shí)原生支持unity,behaviac可以在unity內(nèi)開發(fā)游戲AI

        • 在iOS平臺(tái),作為熱更新的一種手段

        • C++版本支持全平臺(tái),不僅可以用在客戶端,也可以用在服務(wù)器端。一套邏輯,可以根據(jù)情況分別在客戶端,服務(wù)器運(yùn)行,避免重復(fù)開發(fā)。

        特性

        • behaviac是游戲AI的開發(fā)框架組件,也是游戲原型的快速設(shè)計(jì)工具

        • 支持持行為樹(BT),狀態(tài)機(jī)(FSM),層次任務(wù)網(wǎng)絡(luò)(HTN)等多種范式

        • 編輯器可以運(yùn)行在PC上,操作方便直觀可靠

        • 編輯器可以導(dǎo)出xml,bson等多種格式,更可以導(dǎo)出C++,C#源碼,提供最高效率

        • 支持實(shí)時(shí)和離線調(diào)試,可以設(shè)斷點(diǎn),查看或修改變量

        • 編輯器通過socket和游戲連接實(shí)現(xiàn)實(shí)時(shí)調(diào)試,支持遠(yuǎn)程實(shí)時(shí)調(diào)試

        • 運(yùn)行時(shí)支持全平臺(tái)(Windows/Linux/iOS/Android等),有C++和C#兩個(gè)版本,原生支持Unity。適用于客戶端和服務(wù)器,助力游戲快速迭代開發(fā)

        • 支持熱加載,可以不用重啟游戲就更新行為樹

        • 中英文界面可選,元信息可以提供中英文顯示信息

        • 支持預(yù)制件(Prefab)、子樹,方便重用共享

        • 支持自定義數(shù)據(jù)類型,支持已有第3方庫中的自定義類型

        • 支持?jǐn)U展節(jié)點(diǎn)類型

        瀏覽 29
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
          
          

            1. 日韩无码首页 | 久久免费视频精品 | 粗大黑人巨精大战中国成人 | 最近日韩中文字幕中文翻译歌词 | 日本美女黄色电影 |