《守望先鋒》地圖工坊零基礎(chǔ)入門教程 地圖工坊新手教程

相關(guān)游戲 相關(guān)文章

精彩庫游戲網(wǎng) 2019-05-30 16:41:12

  守望先鋒地圖工坊是令人訝異的,它為我們帶來了實現(xiàn)自己的想法的機會,但是,要自己編寫一個先玩法需要一定的基礎(chǔ),下面為大家?guī)淼木褪峭婕摇盀{涯”編寫的地圖工坊零基礎(chǔ)新手教程,一起來看看吧。

《守望先鋒》地圖工坊零基礎(chǔ)入門教程 地圖工坊新手教程 1

  守望先鋒地圖工坊零基礎(chǔ)入門教程

  本文的目的是從0開始到入門。如果你已經(jīng)理解了地圖工坊是怎么回事了,那么本文可能對你幫助并不大。

  我們先用幾個問題來“揭開”地圖工坊神秘的“面紗”:

  地圖工坊是什么?它是一個功能更多的自定義模式。

  地圖工坊能做什么?現(xiàn)階段,它可以做一些很有意思的玩法,相信你已經(jīng)體驗過地圖工坊的作品了。

  地圖工坊不能做什么?它不能脫離游戲的基本框架,例如OW限制了只能有12個玩家,地圖工坊并不能讓你的房間能塞更多人?,F(xiàn)階段它也不能替換模型,不能改變地形。

  地圖工坊在哪里?它不難找,新建一個自定義房間,打開設(shè)置,你就會發(fā)現(xiàn)一個大大的“地圖工坊”按鈕。地圖工坊所有的設(shè)置就在這里面了。

  什么是規(guī)則

  地圖工坊是由很多條“規(guī)則”組成的。規(guī)則是什么?你可以把它看做是一條一條的“條例”。當“規(guī)則”該被運行的時候,它就會被運行。舉個例子:在生活中,如果你上班遲到了,那么老板就會扣你工資。當你早上鬧鈴響了,那么你就應該起床了。這些都是生活中的“規(guī)則”。

  規(guī)則由三個部分組成:事件,條件和動作。還是上面的例子,當你上班遲到,并且今天不是休息日的話,那么老板就會扣你工資。這條“規(guī)則”中,“上班遲到”是事件,“今天不是休息日”是條件,“扣工資”則是動作。

  那在游戲里怎么體現(xiàn)呢?例如,我們知道,DVA的核爆會對一定范圍內(nèi)的敵人造成傷害,那么,“機甲爆炸”是事件,“玩家在爆炸范圍內(nèi),且玩家和DVA是敵對關(guān)系”是條件,“造成傷害”則是動作。(PS:這里只是用“機甲爆炸”舉例子,讓你明白事件、條件、動作之間的關(guān)系)

  總而言之,規(guī)則即是:當某件事(事件)發(fā)生,且條件滿足時,就做一些動作。

《守望先鋒》地圖工坊零基礎(chǔ)入門教程 地圖工坊新手教程 2

  編寫規(guī)則

  相信你已經(jīng)知道“規(guī)則”是什么了,那么,接下來,我們就通過“規(guī)則”做一件簡單的事:讓玩家每次受傷時,回復10生命值。

  過程其實很簡單:玩家受傷→回血。那么相應的規(guī)則應該是什么樣?

  通過翻閱事件列表,我們發(fā)現(xiàn)有一個事件剛好合適:玩家受到傷害。那么我們就用它作為事件了。

  我們并沒有什么特別的要求,所以不需要“條件”。

  動作是給玩家回血。我們應該用什么動作?通過翻閱文檔,我們發(fā)現(xiàn)了一個“治療”的動作。它需要選擇幾個東西:玩家,治療者,治療量。

  “玩家”就是這個動作的目標,即給誰治療。我們怎么讓游戲知道,治療的目標是受傷的玩家呢?我們可以使用“事件玩家”。顧名思義,“事件玩家”指的是觸發(fā)事件的玩家。我們在上面使用了“玩家受到傷害”事件,那么,在這里“事件玩家”指的就是受到傷害的那個玩家。類似的,如果我們使用“玩家陣亡”作為事件,那么就可以用“事件玩家”來代指陣亡的那個玩家。

  在本例中,治療者是誰并不重要,所以我們選擇“無”就行了。

  最后,我們設(shè)定的治療量是10點,所以我們選擇“數(shù)字”,然后輸入10。

《守望先鋒》地圖工坊零基礎(chǔ)入門教程 地圖工坊新手教程 3

  變量

  沒接觸過編程的朋友可能會覺得這個東西有一些難以理解。但它并沒有想象中那么難。我們可以用數(shù)學來理解它。

  例如我們有一個等式:y=x+1。在數(shù)學上,我們把x叫做自變量:當我們放入不同的x時,y就不一樣。我們的“方程”只是定義了一個從x到y(tǒng)的過程。

  在我們上面的例子中,我們有一條動作:給事件玩家治療10點生命值。這里面,“事件玩家”是一個變量——因為觸發(fā)事件的玩家可以有很多個。過程是給玩家治療。而10我們一般把它叫做“常量”——因為它不會變,無論是哪個玩家受傷了,治療量都是10。

  當然了,這只是變量最基本的概念。其實變量就像一個“盒子”,我們可以把東西放進去,也可以把里面的東西拿出來。

  在OW中,變量和常量統(tǒng)稱叫“值”。

  實現(xiàn)“冰凍彈”

  現(xiàn)在我們來寫一點更復雜的規(guī)則。我們希望讓麥克雷的子彈變成“冰凍彈”——被麥克雷打中的玩家,就會被冰凍住1秒。

  同樣的,我們先想一想過程:玩家被麥克雷打中→把玩家凍住。

  我們發(fā)現(xiàn)“事件”并沒有“被麥克雷打中”的事件。怎么辦?這時候就該讓“條件”出馬了。被麥克雷打是受到傷害的一種,所以“事件”我們可以繼續(xù)用“玩家受到傷害”。但是我們有一個附加條件:傷害的來源應該是一名麥克雷玩家。

  我們翻閱文檔,找到“攻擊方”可以代指傷害來源。但我們應該直接拿它來做比較嗎?仔細想想,“玩家使用的是麥克雷”比較的應該是英雄,而不是玩家。因此,我們繼續(xù)找找怎么知道玩家用的什么英雄。最后,我們找到了“英雄”這個選項。條件便是:英雄(攻擊方) == 英雄(麥克雷)

  注意:等號的左右兩邊一定要是相同類型的,即類似事件玩家 == 英雄(麥克雷)是不正確的,因為左邊是玩家,右邊是英雄。正確的寫法是英雄(事件玩家) == 英雄(麥克雷)

  動作應該是什么?“冰凍”是官方提供的狀態(tài)之一,我們可以直接使用“設(shè)置狀態(tài)”:玩家,助攻者,狀態(tài),持續(xù)時間。

  “玩家”和上面一樣,使用“事件玩家”即可。助攻者即為“攻擊方”。狀態(tài)是“凍結(jié)”?!俺掷m(xù)時間”輸入“1”。

《守望先鋒》地圖工坊零基礎(chǔ)入門教程 地圖工坊新手教程 4

  兩個“特殊”的事件

  通過上面的內(nèi)容,我們已經(jīng)知道了規(guī)則是什么,以及基本都規(guī)則編寫。但你發(fā)現(xiàn),“事件”只有非常少的幾項。如果我們要做一些其他功能,例如,我們想讓玩家重生后馬上將他移到某個位置,無論是受到、造成傷害事件,還是陣亡事件,都不能滿足要求。這時候,就需要用到持續(xù)事件+條件了。

  持續(xù)事件和其他的事件都不太一樣。其他事件都是“當這件事發(fā)生時”,而持續(xù)事件則是“我會一直等著,直到條件滿足”。

  例如,我們可以用“存活”來判斷玩家陣亡與否。而結(jié)合我們上面所說的持續(xù)事件,我們可以寫出這樣的規(guī)則:

  事件:持續(xù) - 每名玩家

  條件:存活(事件玩家) == 真

  這是什么意思呢?根據(jù)上面的介紹,我們把它“翻譯”過來,就是:一直等,直到玩家活著的時候,就做下面的動作。

  官方文檔中有這樣的解釋:“當首次檢查就滿足條件時,則會執(zhí)行行動。當未滿足條件列表,但之后又滿足時,則會嘗試再次執(zhí)行行動”。

  因此,我們上面的規(guī)則,實際上就是:當玩家陣亡的時候,游戲就會等——等到玩家復活,然后做相應的動作。之后玩家又陣亡了,游戲又會繼續(xù)等。不斷重復上述的過程。

  類似的,我們現(xiàn)在要編寫一個規(guī)則,能響應不在地板上的玩家按互動鍵(F),那么我們就可以這樣寫

  事件:持續(xù) - 每名玩家

  條件:

  在地面上(事件玩家) == 假

  按鈕被按下(事件玩家, 互動) == 真

  動手做一個模式。

  通過上面的文章,我們已經(jīng)知道了如何編寫規(guī)則。但相信你還不知道如何編寫一個簡單的玩法。不知道大家是否玩過有“守望傳火”之稱的“燙手山芋”模式?這里,我們就以此模式為例子。

  注意:因為本文是一篇教程文章,所以不會完整覆蓋整個游戲模式。

《守望先鋒》地圖工坊零基礎(chǔ)入門教程 地圖工坊新手教程 5

《守望先鋒》地圖工坊零基礎(chǔ)入門教程 地圖工坊新手教程 6

  傳火

  我們想想這個模式是怎么玩的?帶著“火”的玩家通過攻擊別的玩家(不論是何種方式),就可以把“火”傳給別人。

  那么,這個過程用規(guī)則怎么描述?我們可以這樣說:當一名玩家受到傷害,并且他自己沒有火,但是攻擊他的玩家有火的時候,就把火傳給這名玩家。

  從上面的描述不難看出,我們應該選擇“玩家受到傷害”事件。但是,我們?nèi)绾沃劳婕矣袥]有“火”呢?不知道大家是否記得艾什的“延時雷管”——我們可以用點燃狀態(tài)來表示火。通過翻閱手冊,我們可以找到“具有狀態(tài)”和“設(shè)置狀態(tài)”、“清除狀態(tài)”幾個東西。這樣,我們就可以把條件組合出來。

  條件是受傷的玩家沒有火,而攻擊方有火。因為我們使用了“玩家受到傷害”事件,因此,我們使用“事件玩家”表示前者,“攻擊方”表示后者。條件便是:

  具有狀態(tài)(事件玩家, 點燃) == 假

  具有狀態(tài)(攻擊方, 點燃) == 真

  動作是把火“傳給”另一名玩家。“傳”的過程,又分為一名玩家“失去”火,和一名玩家“得到”火。因此,規(guī)則有兩條:

  設(shè)置狀態(tài)(事件玩家, 無, 點燃, 9999)

  清除狀態(tài)(攻擊方, 點燃)

  另外,“點燃”只是效果——能看不能用,所以,我們還得再加上一個“傷害”的動作:

  開始持續(xù)傷害(事件玩家, 無, 9999, 50)

  設(shè)置玩家變量(事件玩家, A, 上一個持續(xù)傷害效果ID)

  停止持續(xù)傷害(玩家變量(攻擊方, A))

  這里我們用到了變量。大家可以結(jié)合上面的變量小節(jié),想一想為什么要這樣做。(PS:你可以把變量想象成一個“盒子”,設(shè)置就是往“盒子”里放東西)

  最終的規(guī)則如圖所示:

《守望先鋒》地圖工坊零基礎(chǔ)入門教程 地圖工坊新手教程 7

  加分

  俗話說“萬事開頭難”。既然我們已經(jīng)把最基本的東西做出來了,那么我們就可以做下一個東西了:勝利判斷。我們的邏輯是:剩下一名玩家的時候,就給這名玩家加一分。

  我們不知道什么時候會剩下一名玩家——可能是某位玩家死亡后,但也可能是某位玩家退出游戲后。我們沒辦法確定到底是什么時候,但我們條件非常清楚:只剩下一名活著的玩家。因此,我們使用持續(xù)事件+條件來做這件事。我們翻閱手冊,可以找到一個叫做“存活玩家數(shù)量”的值。我們直接使用它:

  事件:持續(xù) - 全局

  條件:存活玩家數(shù)量(所有隊伍) == 1

  而我們要做的,就是給他加一分。我們在手冊中找到一個叫“所有存活玩家”的內(nèi)容,但注意:它是一個數(shù)組。因為游戲中可能有很多玩家存活,也可能一個都沒有。游戲沒有那么智能,它并不知道我們的規(guī)則一定只有一個玩家。因此,我們需要使用“數(shù)組中的值”:

  修改玩家分數(shù)(數(shù)組中的值(所有存活玩家(所有隊伍), 0), 1)

  接下來,我們要復活所有玩家,開始一局新的比賽:

  重生(所有玩家(所有隊伍))

  最終的規(guī)則如圖所示:

《守望先鋒》地圖工坊零基礎(chǔ)入門教程 地圖工坊新手教程 8

《守望先鋒》地圖工坊零基礎(chǔ)入門教程 地圖工坊新手教程 9

  隨機傳火

  現(xiàn)在大體框架已經(jīng)有了,但是,我們還沒處理一些特別的情況:例如,當玩家死亡時,或者玩家退出游戲,導致“火”不見了的時候,我們需要將“火”隨機給一名玩家。和上面一樣,我們使用持續(xù)事件+條件。

  我們的條件應該是,當所有玩家都沒有火的時候。換句話說,就是有火的玩家數(shù)量=0的時候。游戲并不能直接獲取到有火的玩家,但我們可以利用“已過濾的數(shù)組”來做到這一點:我們從所有存活玩家里,篩選出有火的玩家,不就可以了?

  換成條件,就應該這樣寫:數(shù)量(已過濾的數(shù)組(所有存活玩家, 具有狀態(tài)(當前數(shù)組元素, 被點燃))) == 0。(如果這條規(guī)則你不太看得懂,請嘗試把括號拆開,從里到外,結(jié)合手冊,一點一點看)

  動作則是從存活玩家里面,隨機選擇一個玩家,讓他有“火”。同樣的,我們又要用到“數(shù)組”了:

  設(shè)置全局變量(A, 數(shù)組隨機取值(所有存活玩家(所有隊伍)))

  設(shè)置狀態(tài)(全局變量(A), 點燃)

  開始持續(xù)傷害(全局變量(A), 無, 9999, 50)

  設(shè)置玩家變量(全局變量(A), A, 上一個持續(xù)傷害效果ID)

  最終規(guī)則如下:

《守望先鋒》地圖工坊零基礎(chǔ)入門教程 地圖工坊新手教程 10

  修復問題:死亡掉火

  現(xiàn)在邀請幾個好友,或者多開賬號進入游戲。開始一局游戲。你們愉快的傳火中,有一名玩家陣亡了。但是,你們發(fā)現(xiàn),“火”并沒有傳給下一個人。房主打開“地圖工坊查看器”一看,哎?隨機傳火的規(guī)則怎么沒有運行呢?

  原來,死亡是不會自動掉火的,我們還需要手動處理它:

  事件:玩家陣亡

  具有狀態(tài)(事件玩家, 點燃) == 真

  “掉火”其實就是把狀態(tài)去掉,所以動作也很簡單,基本上就是上面的規(guī)則復制粘貼:

  清除狀態(tài)(事件玩家, 點燃)

  停止持續(xù)傷害(玩家變量(事件玩家, A))

  最終規(guī)則如下:

《守望先鋒》地圖工坊零基礎(chǔ)入門教程 地圖工坊新手教程 11

  總結(jié)

  通過幾條規(guī)則,我們就寫出了一個簡單的“燙手山芋”模式。相信你也發(fā)現(xiàn)了,這并不是什么難事。你需要的,只是把一件事變成一件件小事,然后用規(guī)則來完成它。

  以上就是為大家?guī)淼氖赝蠕h地圖工坊的新手使用教程,大家可以去游戲中試試哦。

更多內(nèi)容:守望先鋒專題守望先鋒論壇

這些是你想要的嗎?

相關(guān)游戲

網(wǎng)友評論

0條評論