Unity教程: MMORPG游戲開發(fā)任務(wù)系統(tǒng)如何設(shè)計(jì)

在網(wǎng)路游戲中做任務(wù)已經(jīng)成為游戲很重要的一個(gè)核心功能和玩法输拇,如何做好一個(gè)靈活可擴(kuò)展的任務(wù)系統(tǒng)的架構(gòu)與設(shè)計(jì)娶视,今天來給大家分享一些我們的設(shè)計(jì)經(jīng)驗(yàn)峭火。接下來我把整個(gè)的任務(wù)系統(tǒng)分成以下6個(gè)模塊:

(1) 任務(wù)配置表設(shè)計(jì)與管理;

(2) 游戲任務(wù)的解鎖與生成;

(3) 任務(wù)完成判定;

(4) 任務(wù)完成后的獎(jiǎng)勵(lì)生成;

(5) 獎(jiǎng)勵(lì)的領(lǐng)取;

(6) 客戶端的界面展示;

對于單機(jī)游戲而言钥庇,這6個(gè)模塊都放在客戶端直接處理哥放,對于網(wǎng)路游戲而言歼指,模塊1~5實(shí)現(xiàn)在服務(wù)端,模塊6實(shí)現(xiàn)在客戶端甥雕。

對啦踩身!這里有個(gè)游戲開發(fā)交流小組里面聚集了一幫熱愛學(xué)習(xí)unity的零基礎(chǔ)小白,也有一些正在從事unity開發(fā)的技術(shù)大佬社露,歡迎你來交流學(xué)習(xí)挟阻。


任務(wù)配置表設(shè)計(jì)與管理


任務(wù)配置表主要是給策劃來編輯游戲任務(wù)的具體內(nèi)容,同時(shí)程序根據(jù)策劃編輯的任務(wù)配置來生成游戲的任務(wù),獲取任務(wù)描述, 獲取獎(jiǎng)勵(lì)描述, 任務(wù)完成判定,游戲獎(jiǎng)勵(lì)領(lǐng)取峭弟。對于程序而言附鸽,要充分的調(diào)研游戲任務(wù)系統(tǒng)的功能需求,并設(shè)計(jì)出管理代碼+策劃編輯游戲任務(wù)的工作方式瞒瘸。我們拿一個(gè)比較通用的任務(wù)配置表的需求來進(jìn)行分析坷备,將一個(gè)任務(wù)配置設(shè)計(jì)下列字段:

任務(wù)ID:唯一代表該任務(wù)類型的ID號;

任務(wù)解鎖的條件: 解鎖該任務(wù)的條件(這里有N種完全不同的規(guī)則)

任務(wù)的文字描述: 描述改任務(wù)的內(nèi)容,主要用于客戶端UI界面的顯示;

任務(wù)完成達(dá)成的條件: 完成該任務(wù)要達(dá)成的條件(這里有N種不同的規(guī)則);

任務(wù)完成獲得的獎(jiǎng)勵(lì): 完成該任務(wù)可獲的獎(jiǎng)勵(lì)(這里有N種不同的獎(jiǎng)勵(lì)規(guī)則);

任務(wù)獎(jiǎng)勵(lì)描述: 完成任務(wù)后可獲得哪些獎(jiǎng)勵(lì)的文字描述挨务,主要用戶客戶端UI展示;


任務(wù)解鎖條件击你,任務(wù)達(dá)成條件玉组,任務(wù)獎(jiǎng)勵(lì)谎柄,不同任務(wù)都有不同的規(guī)則,那么這個(gè)如何設(shè)計(jì)呢惯雳?這里就需要充分的調(diào)查任務(wù)系統(tǒng)的需求,然后總結(jié)出規(guī)則朝巫,做一個(gè)規(guī)則描述表給策劃,方便策劃填寫數(shù)據(jù)石景,同時(shí)方便程序按照規(guī)則解析條件表達(dá)式劈猿,例如解鎖任務(wù)A拙吉,需要達(dá)到10等級。解鎖任務(wù)B揪荣,需要收集10張卡, 這里解鎖任務(wù)就有2種不同的規(guī)則筷黔,就需要定規(guī)則給策劃填寫,給程序解析,就可以生成一個(gè)這樣的解鎖條件表:

解鎖方式ID 解鎖條件描述, 解鎖參數(shù)解析模板,如

10000 策劃填寫ulevel=10, 達(dá)到等級10后解鎖, type=10000, ulevel=%d

20000 策劃填寫cards=10, 收集10張卡后解鎖, type=20000, ucards = %d

在策劃的任務(wù)配置表里面就可以按照這個(gè)規(guī)則來填寫仗颈,程序根據(jù)type類型來對應(yīng)解析規(guī)則佛舱,解析解鎖條件。如下:

任務(wù)ID 任務(wù)解鎖條件 任務(wù)文字描述 任務(wù)完成條件, 達(dá)成獎(jiǎng)勵(lì)

10001 type=10000,ulevel=10 挖10個(gè)寶石, …

10002 type=10000,ulevel=20 挖10個(gè)水晶, …

10003 type=10000,uelvel=30 挖10個(gè)金幣, …

20001 type=20000,ucards=10 合成初級戰(zhàn)衣 …

20002 type=20000,ucards=20 合成中級戰(zhàn)衣 …

任務(wù)完成條件與達(dá)成獎(jiǎng)勵(lì)條件也可以按照解鎖條件類似的方式來編寫和制定規(guī)則挨决。所以這里在設(shè)計(jì)的時(shí)候一定要充分的調(diào)研任務(wù)系統(tǒng)的需求,程序根據(jù)type類型來解析規(guī)則的參數(shù)獲得對應(yīng)的條件規(guī)則请祖。


游戲任務(wù)的解鎖與生成

任務(wù)配置表的設(shè)計(jì)完成后,策劃就會給游戲編輯好任務(wù)配置表脖祈,在游戲運(yùn)行中要給每個(gè)玩家來解鎖對應(yīng)的任務(wù)并生成任務(wù)肆捕,這個(gè)時(shí)候還需要有一個(gè)玩家任務(wù)表,這個(gè)表描述了所有玩家的所有任務(wù)盖高,這個(gè)表的設(shè)計(jì)如下:

ID: 任務(wù)的唯一ID號

uid: 這個(gè)任務(wù)對應(yīng)的玩家ID號

tid: 標(biāo)識玩家正在進(jìn)行的任務(wù)慎陵,根據(jù)tid可在任務(wù)配置表里面找到對應(yīng)的任務(wù)和描述;

status: 當(dāng)前任務(wù)的狀態(tài):

未解鎖【0】

已解鎖,待執(zhí)行【1】

進(jìn)行中【2】

已結(jié)束【3】

獎(jiǎng)勵(lì)未領(lǐng)取【4】

獎(jiǎng)勵(lì)已領(lǐng)取【5】

例如:

ID uid tid status

1 玩家A 10001 1

2 玩家B 10001 1

3 玩家C 20001 2

玩家任務(wù)表定義好后,任務(wù)系統(tǒng)監(jiān)聽與任務(wù)解鎖觸發(fā)相關(guān)的游戲事件,比如玩家升級了,升級的同時(shí)通過事件訂閱模塊拋出一個(gè)事件出來或舞,任務(wù)系統(tǒng)監(jiān)聽到這個(gè)事件后根據(jù)事件類型,玩家的游戲數(shù)據(jù)荆姆,以及策劃編輯的任務(wù)配置表看是否有新任務(wù)被觸發(fā)解鎖(根據(jù)解鎖規(guī)則表里面配置的判定),如果有映凳,就往任務(wù)表里面插入一條記錄胆筒,這樣該玩家解鎖了某個(gè)任務(wù)。當(dāng)玩家打開任務(wù)列表的時(shí)候诈豌,就從這個(gè)表里面檢索出來屬于這個(gè)玩家的所有正在進(jìn)行中的任務(wù)仆救。


任務(wù)進(jìn)行中與任務(wù)完成判定

玩家解鎖了任務(wù)以后,在任務(wù)表里面就有這個(gè)玩家所對應(yīng)的任務(wù)記錄了,狀態(tài)也改成了正在進(jìn)行中矫渔,當(dāng)玩家觸發(fā)一個(gè)游戲事件后拋出一個(gè)事件彤蔽,任務(wù)系統(tǒng)監(jiān)聽對任務(wù)判定有影響的事件。當(dāng)有這樣的事件拋出后庙洼,就去看下是哪個(gè)玩家觸發(fā)的顿痪,然后根據(jù)任務(wù)配置表中任務(wù)的完成判斷條件規(guī)則進(jìn)行判斷,如果條件成立,修改任務(wù)的狀態(tài)油够。


任務(wù)完成后的獎(jiǎng)勵(lì)生成

達(dá)到任務(wù)的判定條件后, 如果這個(gè)任務(wù)的類型是有獎(jiǎng)勵(lì)的蚁袭,這個(gè)時(shí)候根據(jù)任務(wù)類型的描述配置表的獎(jiǎng)勵(lì)規(guī)則來生成對應(yīng)的獎(jiǎng)勵(lì)。任務(wù)配置表里面有獎(jiǎng)勵(lì)的類型石咬,以及獎(jiǎng)勵(lì)的數(shù)據(jù)揩悄,程序根據(jù)獎(jiǎng)勵(lì)規(guī)則表中獎(jiǎng)勵(lì)的類型來解析對應(yīng)的獎(jiǎng)勵(lì)數(shù)據(jù)生成獎(jiǎng)勵(lì)。如果是直接給獎(jiǎng)勵(lì)鬼悠,根據(jù)任務(wù)的獎(jiǎng)勵(lì)內(nèi)容給玩家的數(shù)據(jù)加上對應(yīng)的獎(jiǎng)勵(lì)即可删性,并通知前端來播放獎(jiǎng)勵(lì)動畫亏娜。并標(biāo)記任務(wù)已完成。如果獎(jiǎng)勵(lì)需要玩家自己去領(lǐng)取蹬挺,可以將任務(wù)的狀態(tài)改成”獎(jiǎng)勵(lì)未領(lǐng)取”,這樣玩家拉去任務(wù)列表的時(shí)候维贺,就可以根據(jù)這個(gè)”獎(jiǎng)勵(lì)未領(lǐng)取”狀態(tài)來顯示還有獎(jiǎng)勵(lì)可以領(lǐng)取,客戶端顯示領(lǐng)取按鈕。


獎(jiǎng)勵(lì)的領(lǐng)取

獎(jiǎng)勵(lì)分為直接獎(jiǎng)勵(lì)與玩家主動領(lǐng)取的獎(jiǎng)勵(lì)巴帮,這個(gè)根據(jù)游戲的需求來就可以了幸缕,對于任務(wù)系統(tǒng)而言,如果是直接獎(jiǎng)勵(lì)晰韵,那么直接給玩家加上對應(yīng)的數(shù)據(jù)屬性就可以了发乔,比如獎(jiǎng)勵(lì)金幣,獎(jiǎng)勵(lì)寶石等雪猪,獎(jiǎng)勵(lì)的時(shí)候可以通知客戶端栏尚,這樣客戶端可以播放一個(gè)獎(jiǎng)勵(lì)動畫出來讓玩家知道自己獲得了獎(jiǎng)勵(lì),如果獎(jiǎng)勵(lì)需要玩家主動領(lǐng)取只恨,當(dāng)玩家拉取任務(wù)列表的時(shí)候译仗,可以根據(jù)任務(wù)的狀態(tài)”獎(jiǎng)勵(lì)未領(lǐng)取”,把沒有領(lǐng)取獎(jiǎng)勵(lì)的任務(wù)拉去下來官觅,并展示一個(gè)”領(lǐng)取”按鈕纵菌。當(dāng)玩家點(diǎn)擊領(lǐng)取的時(shí)候,服務(wù)器根據(jù)任務(wù)ID來獲取任務(wù)數(shù)據(jù)休涤,檢查任務(wù)的狀態(tài)是否為”獎(jiǎng)勵(lì)未領(lǐng)取”咱圆,如果是,再獲取任務(wù)的ID號功氨,根據(jù)任務(wù)的ID號獲取具體的獎(jiǎng)勵(lì)數(shù)值序苏,給對應(yīng)的數(shù)值加上對應(yīng)的獎(jiǎng)勵(lì),并修改任務(wù)的狀態(tài)未獎(jiǎng)勵(lì)已領(lǐng)取,并通知客戶端展示動畫捷凄。


客戶端的界面展示

任務(wù)系統(tǒng)的后臺邏輯設(shè)計(jì)好了以后忱详,剩下的就是任務(wù)系統(tǒng)的界面展示《宓樱客戶端登錄以后向服務(wù)器拉取這個(gè)玩家的所有任務(wù),一般狀態(tài)包含”已解鎖待執(zhí)行”,”正在進(jìn)行中”與”獎(jiǎng)勵(lì)未領(lǐng)取”的任務(wù)匈睁。拉取下來,客戶端顯示的時(shí)候還需要顯示任務(wù)的描述和獎(jiǎng)勵(lì)描述等桶错,所以需要把策劃的任務(wù)配置表從服務(wù)端拉取下來航唆,或者通過資源更新的方式來更新下來,這樣我們就能根據(jù)任務(wù)的tid來從描述表里面獲取任務(wù)描述與獎(jiǎng)勵(lì)描述,這樣客戶端就完整的展現(xiàn)出任務(wù)來了牛曹。當(dāng)有”領(lǐng)取獎(jiǎng)勵(lì)”佛点,”領(lǐng)取任務(wù)”按鈕的時(shí)候醇滥,通過向服務(wù)端發(fā)送對應(yīng)的請求來做對應(yīng)的處理黎比,服務(wù)端來更新任務(wù)的狀態(tài)即可超营。


以上就從6個(gè)維度詳細(xì)的描述了一個(gè)大型網(wǎng)絡(luò)游戲的任務(wù)系統(tǒng)應(yīng)該如何設(shè)計(jì),關(guān)注我可以學(xué)習(xí)到更多的大型網(wǎng)路游戲的架構(gòu)與設(shè)計(jì)相關(guān)知識分享阅虫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末演闭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子颓帝,更是在濱河造成了極大的恐慌米碰,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件购城,死亡現(xiàn)場離奇詭異吕座,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瘪板,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門吴趴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人侮攀,你說我怎么就攤上這事锣枝。” “怎么了兰英?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵撇叁,是天一觀的道長。 經(jīng)常有香客問我畦贸,道長陨闹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任薄坏,我火速辦了婚禮正林,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颤殴。我一直安慰自己觅廓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布涵但。 她就那樣靜靜地躺著杈绸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪矮瘟。 梳的紋絲不亂的頭發(fā)上瞳脓,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機(jī)與錄音澈侠,去河邊找鬼劫侧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的烧栋。 我是一名探鬼主播写妥,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼审姓!你這毒婦竟也來了珍特?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤魔吐,失蹤者是張志新(化名)和其女友劉穎扎筒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酬姆,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嗜桌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辞色。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片症脂。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖淫僻,靈堂內(nèi)的尸體忽然破棺而出诱篷,到底是詐尸還是另有隱情,我是刑警寧澤雳灵,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布棕所,位于F島的核電站,受9級特大地震影響悯辙,放射性物質(zhì)發(fā)生泄漏琳省。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一躲撰、第九天 我趴在偏房一處隱蔽的房頂上張望针贬。 院中可真熱鬧,春花似錦拢蛋、人聲如沸桦他。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽快压。三九已至,卻和暖如春垃瞧,著一層夾襖步出監(jiān)牢的瞬間蔫劣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工个从, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脉幢,地道東北人歪沃。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像嫌松,于是被迫代替她去往敵國和親沪曙。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容