前言
本文來討論一下 Screeps 中最重要的 角色系統(tǒng) 的設(shè)計方案以及一些基本原則。注意镇饺,本文中討論的內(nèi)容可能與你的想法不同或者有更好的方法,歡迎評論或者私信交流~ 本文中的內(nèi)容建立在你對 Screeps 世界的基本運作原理有一定了解的基礎(chǔ)挚冤,請確認你已經(jīng)通過了全部的教程呢诬,不然可能會對本文的內(nèi)容產(chǎn)生疑惑。
本文的主要內(nèi)容為文字描述 + 圖片介紹富蓄,討論的具體內(nèi)容主要是角色系統(tǒng)的設(shè)計理念以及如何更好的管理和協(xié)作剩燥,至于每個角色的具體實現(xiàn)則不再本文的討論范圍之內(nèi)。想要了解更多關(guān)于 Screeps 的內(nèi)容立倍?歡迎訪問我的 《Screeps 文集》灭红!
介紹
如果你已經(jīng)通過了教程的話,那你肯定對role
(角色) 這個單詞并不陌生口注,在教程中一共出現(xiàn)了三個角色harvester
采集者变擒、upgrader
升級者 和builder
建造者。通過將不同職能的creep
劃分成不同的角色進行管理寝志,是這個游戲的主要內(nèi)容之一娇斑。接下來我們就來更加深入一點,討論如何更方便高效的劃分角色與管理角色材部,注意毫缆,本文中只包含日常殖民地運營中的角色,不包含對外擴張和征服的角色乐导。
我將角色劃分為以下幾種:
英文名 | 角色名 | 工作內(nèi)容 |
---|---|---|
harvester |
采礦者 | 將能量或元素礦開采出來并存入指定的結(jié)構(gòu)中苦丁。 |
upgrader |
升級者 | 從指定的結(jié)構(gòu)中取出能量升級房間控制器。 |
builder |
建造者 | 從指定的結(jié)構(gòu)中取出能量并建造結(jié)構(gòu)物臂。 |
carrier |
運輸者 | 將能量從指定結(jié)構(gòu)取出并存入指定的結(jié)構(gòu)旺拉。 |
repairer |
維修者 | 從指定的結(jié)構(gòu)中取出能量并修復(fù)受損的結(jié)構(gòu)产上。 |
defender |
防御者 | 駐守指定區(qū)域并防御。 |
房間運營分析
配合上面的基本角色蛾狗,我們來分析一下房間運營的策略蒂秘。在 Screeps 中,能量是維持房間運營的重要資源淘太,而 能量的采集姻僧、流轉(zhuǎn)和使用 就是房間運營的三大要素。
更好的設(shè)計:注意蒲牧,上面的圖片中 container 擺放在 Harvester 的身邊撇贺,這并不是最好的方案。你可以直接把 container 造在 Harvester 的腳下來創(chuàng)造一個更好用的組合冰抢,在 Screeps 建筑布局規(guī)劃 的“其他建筑”小節(jié)里可以找到更多信息松嘶。
harvester > carrier > upgrader 基本鏈路
在教程中,所有的角色都包含能量采集的階段挎扰,這有可能導(dǎo)致能量礦(Source)附近堆積大量的 creep 從而影響采集效率翠订。并且這樣的角色必須 WORK
工作、CARRY
攜帶遵倦、MOVE
移動 三個身體部件的數(shù)量平衡的全能型角色尽超。這樣才不會在路上浪費太多時間。但是像是upgrader
和harvester
這種對WORK
部件需求比較大的角色梧躺,如果MOVE
和CARRY
部件少一點似谁,不久可以節(jié)省出一部分能量和空間來添加WORK
組件了么。
所以我們可以發(fā)現(xiàn)掠哥,本文的設(shè)計中巩踏,只有harvester
是可以直接接觸到礦的,其他的角色都是從 指定結(jié)構(gòu) 中取出能量续搀。我們一般把這種功能解耦稱為 挖運分離塞琼。
這么做不僅可以保證upgrader
和harvester
可以盡可能的“全力”工作。也可以減少路上擁堵禁舷,提高效率彪杉。其他需要能量的角色則就近從存儲中獲取能量,礦可能只有 3榛了、4 個天然開采位在讶,container
可是四面八方都可以取能量煞抬,這樣一來也解決了礦附件的擁堵問題霜大。這就是角色劃分的基本原則之一:不要所有的角色都從礦里獲取能量。當然革答,在前期人手緊缺的時候這個原則就顯得不那么重要了战坤。
這個角色鏈路可以實現(xiàn)的一個重要條件就是:從結(jié)構(gòu)中獲取能量不依賴
WORK
部件曙强。也就是說,carrier
角色可以在一個 tick 中填滿自身的CARRY
部件(只要結(jié)構(gòu)里能量足夠)而不需要哪怕一個WORK
組件途茫。
在解鎖了Link
建筑之后碟嘴,我們就可以用其快速的在升級者、采集者和中央存儲之間轉(zhuǎn)移能量囊卜,從而讓運輸者可以有更多的時間來完成其他工作娜扇。而對于剛開始游戲的新手來說,可能短時間內(nèi)無法構(gòu)建起上面描述的運營系統(tǒng)栅组,你可以通過自己嘗試著簡化這個模型雀瓢,并按模塊的逐步進行實現(xiàn)。
工作繁忙的 Carrier
Carrier 可以說是房間中的核心角色玉掸。除了保障房間中的能量流轉(zhuǎn)刃麸,只要是房間中存在的資源轉(zhuǎn)移需求都可以交由它來完成。所以 carrier 的邏輯開發(fā)是這個游戲中的一個難點司浪,下面是三個新手會接觸到的 carrier 工作泊业,你可以根據(jù)自己的代碼酌情進行開發(fā):
- 將能量帶到
Spawn
和Extension
,維持正常的 creep 生成(在教程中由 Harvester 統(tǒng)一負責(zé))啊易。 - 將 Harvester 采集好的能量轉(zhuǎn)移至中央存儲來方便其他 creep 使用(在中后期可以由 Link 建筑代替)吁伺。
- 將能量帶到
Tower
,維持基本的防御以及維護工作租谈。
注意:對于新手來說箱蝠,采集(Harvester)和運輸(Carrier)的分離可能會出現(xiàn)一些導(dǎo)致房間宕掉的問題,例如 Harvester 存在垦垂,但是 Carrier 由于能量不足無法孵化宦搬,這就導(dǎo)致了雖然能量還在采集,但是由于沒有人將能量搬運至 Spawn 從而導(dǎo)致房間 creep 無法持續(xù)生成劫拗。
所以间校,你大可不必上來就開始實現(xiàn) Carrier敬扛,先用教程代碼慢慢了解各個 creep 之間的供求關(guān)系个曙,在熟悉之后,再開始著手實現(xiàn)挖運分離酪耕,與此同時酒繁,你也應(yīng)該思考如何解決此類房間停擺問題滓彰,以及房間停擺之后的重啟機制。
builder 和 repairer 的浪漫
作為支撐殖民地發(fā)展的猛男州袒,builder
必須是三種身體部件都包含的全能型選手揭绑,它需要WORK
來更快的建造結(jié)構(gòu),需要CARRY
來攜帶更多的能量避免少跑路,以及合理的MOVE
組件來跋山涉水他匪。而它的本質(zhì)工作“建造”也不是時刻都有的菇存,比如我晚上給它安排了一些建造工作,但是之后的兩天里我都沒有時間去管他們邦蜜,那他們豈不是開始摸魚了依鸥?所以,我們可以拿他們來做更多的事悼沈。但是在此之前贱迟,我們先來了解一下repairer
維修者。
維修者負責(zé)維修房間內(nèi)受損的建筑絮供,它其實是一個存在感很低的角色关筒,在前期我們可以分配 1 ~ 2
個creep
擔任這個角色,到了有tower
的時候我們就可以逐步的將repairer
的數(shù)量降為 0
了杯缺。所以這個角色在后期更像是一種預(yù)備方案蒸播,出現(xiàn)什么問題導(dǎo)致沒辦法修復(fù)結(jié)構(gòu),比如說因為某些原因tower
失效了萍肆,這時候就應(yīng)該有其他角色臨時轉(zhuǎn)變成repairer
袍榆。你總不想辛辛苦苦挖的穿山隧道一晚上都沒了吧。
ok塘揣,讓我們把視線移回builder
身上包雀,當它們開始摸魚的時候應(yīng)該怎么做呢?首先亲铡,builder
在沒有事干時應(yīng)去協(xié)助upgrader
和harvester
的工作才写。比如我們可以先判斷下有沒有空閑的資源點開采位。如果有的話就變身harvester
奖蔓,沒有的話就去協(xié)助upgrader
升級房間控制器赞草。還有呢?對吆鹤,builder
應(yīng)該在緊急時充當repairer
的角色厨疙。畢竟它的身體結(jié)構(gòu)和repairer
很相似。
所以現(xiàn)在我們可以總結(jié)一下builder
的工作疑务,有壞掉的建筑就去修沾凄,有建筑工地就去干活,沒有工地就去當升級者或是開采者知允∪鲶埃總之,builder
可以說是一個復(fù)合型人才角色:
當前温鸽,如果你的 creep 發(fā)布系統(tǒng)足夠靈活的話保屯,你也完全可以選擇在完成建造工作后直接停止孵化 builder。
repairer 并不只維修建筑
從上一小節(jié)中我們可以看到,在有了Tower
建筑之后配椭,repairer 角色的存在感就低了很多虫溜。其實雹姊,維修者還有一個非常重要的工作需要做的就是:修墻股缸。
你可能會想,我讓Tower
一起把墻修了不就好了吱雏,其實不然敦姻,如果把修墻的任務(wù)分配給Tower
的話,修墻動輒需要幾十上千 K 的能量歧杏,會讓Tower
的能量消耗速度非沉耄快,從而可能導(dǎo)致在需要Tower
擊入侵者時沒有足夠多的能量犬绒。并且在修距離較遠的墻時旺入,Tower
的修復(fù)效果衰減特性也會極大的浪費能量。
所以凯力,在Tower
接替了房間的維修工作后茵瘾,你可以將維修者的主要任務(wù)設(shè)置為修墻。從而不斷的提升房間的被動防御能力咐鹤。
嚴陣以待的 defender
除了 tower 和墻壁(wall拗秘、rampart)之外,你也可以準備一些 creep 來應(yīng)對那些對房間發(fā)動攻擊的入侵者祈惶。注意雕旨,這些單位并不需要常駐,你可以通過代碼來判斷房間狀態(tài)捧请,當出現(xiàn)危險情況時再進行孵化凡涩。
npc 入侵和玩家入侵
簡單介紹一下 npc 入侵。npc 入侵者是有等級區(qū)分的疹蛉,在房間等級小于等于3時突照,產(chǎn)生的npc 是比較弱的,Tower
自己就完全可以應(yīng)付得了氧吐。而在房間等級4以上時產(chǎn)生的入侵者可能會給你的防御帶來不少壓力讹蘑,但是一般來說,只要有完備的墻壁防御筑舅,面對 npc 入侵完全不需要動用 defender座慰。
而玩家入侵則要嚴重的多,一般來說翠拣,當一個玩家決定對你發(fā)起進攻時版仔,你的 tower 是沒辦法將其及時處理掉的(6個 tower 一起也不行)。這時候就需要針對其入侵進行針對性的孵化我們的防御單位。當然蛮粮,這一部分代碼的優(yōu)先級比較靠后益缎,你可以先完成 tower 和刷墻的相關(guān)邏輯,再來將 defender 的代碼補充完整然想。這篇文章 提到了有關(guān)防御的策略莺奔,你可以閱讀后再考慮如何實現(xiàn)你的 defender。
總結(jié)
本篇文章介紹了 screeps 中幾個比較常用的角色以及相互協(xié)作的工作鏈变泄。harvester
負責(zé)專心挖礦令哟,upgrader
負責(zé)專心升級,carrier
負責(zé)在幾個重要的結(jié)構(gòu)間轉(zhuǎn)移能量妨蛹,builder
要做的事情比較多屏富,有建筑工地時建筑建筑,沒有時協(xié)助harvester
和upgrader
工作蛙卤,在關(guān)鍵時則轉(zhuǎn)變?yōu)?code>repairer來維修建筑狠半。而defender
則比較專一,它們只負責(zé)房間的防御颤难,一旦發(fā)生緊急情況則發(fā)起反擊神年。
接下來,我們將更加深入一點乐严,來了解一個可靠的角色系統(tǒng)究竟是什么樣的瘤袖,歡迎點擊 Screeps 抽象角色系統(tǒng) 繼續(xù)閱讀~