Screeps 設(shè)計角色系統(tǒng)

screeps 系列教程

前言

本文來討論一下 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ù)量平衡的全能型角色尽超。這樣才不會在路上浪費太多時間。但是像是upgraderharvester這種對WORK部件需求比較大的角色梧躺,如果MOVECARRY部件少一點似谁,不久可以節(jié)省出一部分能量和空間來添加WORK組件了么。

所以我們可以發(fā)現(xiàn)掠哥,本文的設(shè)計中巩踏,只有harvester是可以直接接觸到礦的,其他的角色都是從 指定結(jié)構(gòu) 中取出能量续搀。我們一般把這種功能解耦稱為 挖運分離塞琼。

這么做不僅可以保證upgraderharvester可以盡可能的“全力”工作。也可以減少路上擁堵禁舷,提高效率彪杉。其他需要能量的角色則就近從存儲中獲取能量,礦可能只有 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ā):

  • 將能量帶到SpawnExtension,維持正常的 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 ~ 2creep擔任這個角色,到了有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é)助upgraderharvester的工作才写。比如我們可以先判斷下有沒有空閑的資源點開采位。如果有的話就變身harvester奖蔓,沒有的話就去協(xié)助upgrader升級房間控制器赞草。還有呢?對吆鹤,builder應(yīng)該在緊急時充當repairer的角色厨疙。畢竟它的身體結(jié)構(gòu)和repairer很相似。

所以現(xiàn)在我們可以總結(jié)一下builder的工作疑务,有壞掉的建筑就去修沾凄,有建筑工地就去干活,沒有工地就去當升級者或是開采者知允∪鲶埃總之,builder可以說是一個復(fù)合型人才角色:

builder 的工作

當前温鸽,如果你的 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é)助harvesterupgrader工作蛙卤,在關(guān)鍵時則轉(zhuǎn)變?yōu)?code>repairer來維修建筑狠半。而defender則比較專一,它們只負責(zé)房間的防御颤难,一旦發(fā)生緊急情況則發(fā)起反擊神年。

接下來,我們將更加深入一點乐严,來了解一個可靠的角色系統(tǒng)究竟是什么樣的瘤袖,歡迎點擊 Screeps 抽象角色系統(tǒng) 繼續(xù)閱讀~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市昂验,隨后出現(xiàn)的幾起案子捂敌,更是在濱河造成了極大的恐慌,老刑警劉巖既琴,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件占婉,死亡現(xiàn)場離奇詭異,居然都是意外死亡甫恩,警方通過查閱死者的電腦和手機逆济,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磺箕,“玉大人奖慌,你說我怎么就攤上這事∷擅遥” “怎么了简僧?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長雕欺。 經(jīng)常有香客問我岛马,道長棉姐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任啦逆,我火速辦了婚禮伞矩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘夏志。我一直安慰自己乃坤,他們只是感情好,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布盲镶。 她就那樣靜靜地躺著侥袜,像睡著了一般蝌诡。 火紅的嫁衣襯著肌膚如雪溉贿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天浦旱,我揣著相機與錄音宇色,去河邊找鬼。 笑死颁湖,一個胖子當著我的面吹牛宣蠕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播甥捺,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼抢蚀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了镰禾?” 一聲冷哼從身側(cè)響起皿曲,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吴侦,沒想到半個月后屋休,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡备韧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年劫樟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片织堂。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡叠艳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出易阳,到底是詐尸還是另有隱情附较,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布闽烙,位于F島的核電站翅睛,受9級特大地震影響声搁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捕发,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一疏旨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扎酷,春花似錦檐涝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凡纳,卻和暖如春窃植,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荐糜。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工巷怜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暴氏。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓延塑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親答渔。 傳聞我的和親對象是個殘疾皇子关带,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

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

  • 項目管理術(shù)語英漢對照表2018-7-20 A Abstract Resource 抽象資源 Abstraction...
    007明_陽閱讀 6,198評論 0 51
  • abandon, desert, forsake, leave, give up abandon :強調(diào)永遠或完全...
    sunxiaohang閱讀 2,317評論 0 3
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,324評論 0 10
  • 如果你不想再蕩著秋千唱著歌,那就請陪我走過世界的各個角落沼撕。 塵隨馬 《死亡》 ——死亡并不可怕宋雏,可怕的是重生。 ...
    隨鹿人閱讀 291評論 0 0
  • Hello world
    汪迎東閱讀 163評論 0 0