日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

基于触发机制的脚本系统

發(fā)布時間:2024/8/26 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于触发机制的脚本系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


文 / rooyeewu

1.問題

絕大多數(shù)游戲項目都會開發(fā)新手引導,劇情之類的功能。這類功能有兩個最大的特點:一是跳躍大,二是特殊化。一個完整的功能(如一段教學指引)需要在多個邏輯系統(tǒng)中跳轉(zhuǎn),并且具體形為的觸發(fā)條件千差萬別,需要很多特殊處理。這類功能實現(xiàn)對程序結(jié)構(gòu)的挑戰(zhàn)巨大,如果沒有統(tǒng)一規(guī)劃,很容易掉入Hard-Code的深淵。


2.腳本系統(tǒng)

解決這類問題的一個較好方法是抽象功能形為與觸發(fā)事件,形成離散的形為(Action)集與事件(Event)集,然后通過腳本的形式組織成一個個完整的功能。為了以最干凈的方式實現(xiàn)上述目的,我們只需要抽象兩個概念,即上面提到的:行為(Action)與事件(Event)。一個行為只需要配置兩個事件表達式:開始事件與結(jié)束事件即可明確指示其行為的執(zhí)行時機。
?


開始事件表達式必須存在,否則行為無法開始執(zhí)行;結(jié)束事件表達式可為空,取決于當前行為是否有“自結(jié)束”方式。另外,為了實現(xiàn)行為動作的組織,系統(tǒng)需要實現(xiàn)一個非常重要的事件:

EventActionEnd:ID[ 額外參數(shù)列表]

該事件在指定ID的行為結(jié)束后發(fā)出,這樣就可以利用此事件統(tǒng)一的組織觸發(fā)腳本,一個觸發(fā)腳本本質(zhì)上就是由上述表格中若干具有邏輯相關(guān)性的行組成的集合。

到此,我們就可以完整描述一個具體的行為動作的執(zhí)行過程:
?


3.應用

上述對Action的實現(xiàn)方式采用常用的“三段式”:Begin(), Update(), End()。這樣做的好處是Action的實現(xiàn)者可以實現(xiàn)三種形為方式:

1) 實現(xiàn)單幀的“瞬時行為”;

如瞬間給一個玩家加血可實現(xiàn)為一個瞬時行為。

2) 實現(xiàn)跨幀的“持續(xù)行為”;

如將怪物從A點移動到B點可實現(xiàn)為一個持續(xù)行為。

3) 實現(xiàn)接受用戶操作的“交互形為”。

如劇情中要求用于作出選擇可實現(xiàn)為一個交互形為。

這些形為方式特別適合新手引導或者劇情之類的功能需求。

另外事件的檢查不局限于單一事件,而是事件表達式,這樣方便組織邏輯結(jié)構(gòu)。下面抽象一些常用的執(zhí)行流程形式,再給出運用此腳本系統(tǒng)的表達方式:

1) 順序執(zhí)行
?


2) 分支執(zhí)行
?


上述分支很容易擴展成多分支,實現(xiàn)類似switch-case的執(zhí)行結(jié)構(gòu)。

3) 循環(huán)執(zhí)行
?


4) 邏輯判斷
?


如何應用到新手引導與劇情

可以理解為每段新手引導或劇情都是一個腳本,一個腳本就是上述表格的若干行。一個腳本在游戲系統(tǒng)中需要給定一個唯一標識,通過外圍游戲邏輯規(guī)則按需加載指定腳本處于WAITING-RUNNING狀態(tài)。這樣一段引導邏輯就進入游戲中,但它需要一定的事件去觸發(fā)。我們可以實現(xiàn)任意有意義的事件在游戲中的任何地方,如打開一個賣二手QQ平臺界面時拋出一個事件,關(guān)閉一個界面時拋出事件,點擊一個按鈕時拋出一個事件,拋出事件是隨心所欲的,只要有需要就可以。

典型地,拋出一個事件只需要在任意地方添加一行代碼,如:

noxssSystem.Instance.Trigger(EventClickUI, “uiName”);

這樣事件被異步的發(fā)送出去,拋出事件的執(zhí)行代價可忽略不計。如果玩家在當前游戲進程中沒有加載任何腳本,這個事件很快被丟棄;如果有腳本加載,此事件會嘗試去觸發(fā)腳本中行為的執(zhí)行。這樣可以做到新手引導對系統(tǒng)的最小化開銷。

4.小結(jié)

通過統(tǒng)一的觸發(fā)腳本系統(tǒng),可以完成任意的邏輯腳本開發(fā),包括新手引導,劇情,甚至客戶端AI等;同時減少某些“跳躍大,特殊化”功能需求對程序結(jié)構(gòu)的破壞,避免HardCode的產(chǎn)生;腳本形式統(tǒng)一簡單,可以通過excel形式編寫,也利于開發(fā)可視化編輯器。

總結(jié)

以上是生活随笔為你收集整理的基于触发机制的脚本系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。