自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于LUA在網(wǎng)游任務(wù)中應(yīng)用教程

移動(dòng)開發(fā) iOS
關(guān)于LUA在網(wǎng)游任務(wù)中的應(yīng)用是本文要介紹的內(nèi)容,主要是來了解LUA中網(wǎng)游的問題,LUA生來是與游戲相關(guān)的。來看詳解。

關(guān)于LUA網(wǎng)游任務(wù)中的應(yīng)用是本文要介紹的內(nèi)容,主要是來了解LUA網(wǎng)游的問題。LUA生來是與游戲相關(guān)的;自從魔獸將它發(fā)揚(yáng)光大之后,越來越多的游戲公司使用它。

游戲邏輯中與其密切相關(guān)的是訪問NPC部分,彈出一個(gè)交易框、打造框、任務(wù)對(duì)話框等等,這些基本都是由LUA實(shí)現(xiàn);本文我想就自己最近的一點(diǎn)兒體會(huì),寫下關(guān)于游戲任務(wù)的lua實(shí)現(xiàn);

去年12月份,新游戲項(xiàng)目成立,分配給我的***個(gè)任務(wù)就是編游戲任務(wù);當(dāng)時(shí)我還不知lua為何物,先花了一天的時(shí)間基本熟悉了lua語法(主要是關(guān)于table結(jié)構(gòu)),C和lua的相互調(diào)用接口;然后摸索著上路了。

我個(gè)人比較喜歡自頂向下的學(xué)習(xí)方法,所以在這里先給出一個(gè)訪問任務(wù)NPC的大概輪廓:

1、玩家訪問NPC,客戶端將附帶NPCid的點(diǎn)擊消息發(fā)給服務(wù)器;

2、服務(wù)器查找關(guān)于此NPC的任務(wù)菜單(其實(shí)是個(gè)lua table),判斷玩家是否滿足條件(等級(jí)是否合適、前置任務(wù)是否完成、是否已經(jīng)做過。。etc)

3、如果滿足,服務(wù)器填充好表單信息,并給每個(gè)任務(wù)按鈕(因?yàn)橐粋€(gè)NPC處可能不止一個(gè)任務(wù))賦予一個(gè)從0開始的id索引,為每個(gè)按鈕注冊(cè)好回調(diào)函數(shù),由id來索引;表單信息發(fā)給客戶端,客戶端執(zhí)行,從而顯示合適的對(duì)話界面;

4、玩家點(diǎn)擊某個(gè)任務(wù)按鈕,客戶端將其對(duì)應(yīng)的id信息發(fā)給服務(wù)器,服務(wù)器執(zhí)行相應(yīng)回調(diào)。(比如接任務(wù)的時(shí)候這個(gè)回調(diào)大概就是acceptTask(taskid)之類的,交任務(wù)的時(shí)候這個(gè)回調(diào)大概就是commitTask(taskid))

真實(shí)情況還有很多種,由于接任務(wù)是最簡(jiǎn)單的,所以選來做說明。

編程序首先要確定好數(shù)據(jù)結(jié)構(gòu)。我最終定義的struct task大概包含以下成員:任務(wù)唯一id,類型,前置任務(wù),任務(wù)獎(jiǎng)勵(lì)道具、經(jīng)驗(yàn)、金錢,任務(wù)起始NPC(從這里接),任務(wù)終止NPC(到這里交),任務(wù)描述,未完成描述,完成描述,任務(wù)元素;還有個(gè)別字段,不是這里的重點(diǎn)就不提了。確定這個(gè)結(jié)構(gòu)前后斷斷續(xù)續(xù)就用了兩個(gè)星期,因?yàn)槲摇?。。從來沒打過網(wǎng)游,最開始的幾天下了幾個(gè)網(wǎng)游客戶端,注冊(cè)個(gè)號(hào)進(jìn)去玩,簡(jiǎn)單的了解任務(wù)是怎么回事。

關(guān)于任務(wù)元素我要詳細(xì)解釋一下:

我最初的理解是,任務(wù)是要做讓你做一定的事情,然后你才能夠完成這個(gè)任務(wù),得到獎(jiǎng)勵(lì)。于是將它抽象成任務(wù)元素。名字可能有點(diǎn)怪,感覺有點(diǎn)順口當(dāng)時(shí)我就這么定了。

任務(wù)元素有類型之分。最常見的兩種類型是 怪物 和 物品。很多任務(wù)都是要求殺掉多少個(gè)怪、收集多少物品來完成。這也是最簡(jiǎn)單最基本的。

后來由于策劃需求的不斷提出,我又增加了一些類型,比如某任務(wù)要求你尋訪一些NPC,那么類型為 VISIT,即訪問。

有些任務(wù)讓你答題,又有了類型QUESTION;等等。

游戲啟動(dòng)時(shí),任務(wù)數(shù)據(jù)導(dǎo)入lua,為每一個(gè)跟任務(wù)相關(guān)的NPC構(gòu)造lua表,表名后綴就是相應(yīng)的npc ID,便于查找。

接任務(wù)的流程開頭已經(jīng)簡(jiǎn)單說過了,這里再將完成任務(wù)簡(jiǎn)單說一下。

每當(dāng)玩家接了一個(gè)新任務(wù),那么這個(gè)任務(wù)的任務(wù)元素會(huì)被添加到玩家結(jié)構(gòu)(class Player)的任務(wù)管理器(Task Manager)中。任務(wù)管理器用一個(gè)map來實(shí)現(xiàn)管理多個(gè)任務(wù)的功能。

當(dāng)玩家訪問這個(gè)任務(wù)的終止NPC時(shí),會(huì)判斷任務(wù)元素是否完成了,如果完成會(huì)構(gòu)造提交任務(wù)的對(duì)話框,玩家點(diǎn)擊完成就可獲得該任務(wù)獎(jiǎng)勵(lì)。

如果沒有完成,終止NPC就會(huì)說一句相應(yīng)任務(wù)的“未完成描述”。比如可能是一句“連那些毛猴都收拾不了,你真讓我失望”。

上面描述的是最簡(jiǎn)單、最常見的任務(wù)類型。實(shí)際的游戲任務(wù)花樣百出,想用很統(tǒng)一的框架實(shí)現(xiàn)是有些難度。但是由于LUA的靈活性(個(gè)人認(rèn)為實(shí)質(zhì)上是table結(jié)構(gòu)靈活,簡(jiǎn)直***),策劃的一些無法想象的需求(他們拿魔獸的任務(wù)來向我描述需求,可是我根本沒碰過魔獸。所以說有些游戲經(jīng)驗(yàn)還是挺好的?。?,很多情況下我都用lua table配表,再寫幾個(gè)功能函數(shù),大致搞定。不過感覺自己的某些想法可能有些“任性”,目前來說是夠用了,未來就難說了,畢竟我無法想象還有什么形式的任務(wù)。

小結(jié):關(guān)于LUA網(wǎng)游任務(wù)中應(yīng)用教程的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-23 16:37:05

Lua數(shù)學(xué)庫

2011-08-24 17:09:35

LUA閉包函數(shù)

2011-08-24 13:56:12

Lua游戲

2011-08-24 13:27:07

Lua 游戲C接口腳本

2011-08-23 17:06:03

2011-08-23 15:34:56

Lua模式 匹配

2011-08-24 14:14:13

LUA環(huán)境 配置

2011-08-23 16:48:41

Lua 5.1API 函數(shù)

2011-08-23 13:54:10

LUA全局變量

2011-08-24 15:42:38

LUA源代碼

2011-08-24 15:34:44

MinGWLua環(huán)境配置

2011-08-25 15:41:42

Lua源碼

2011-08-23 15:57:21

Lua元表元方法

2011-09-06 17:37:01

LUA應(yīng)用

2011-08-25 17:25:55

LUADelphi

2011-08-15 13:44:07

iPhone開發(fā)UITableView

2011-09-06 13:58:28

MTK系統(tǒng)

2011-08-24 11:08:09

Lua

2011-08-25 16:20:33

Lua腳本變量

2011-08-23 17:33:08

LuaMetatable
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)