Screeps 设计角色系统

Screeps 设计角色系统_第1张图片
screeps 系列教程

前言

本文来讨论一下 Screeps 中最重要的系统 角色控制系统 的设计方案以及一些基本原则。注意,本文中讨论的内容可能与你的想法不同或者有更好的方法,欢迎评论或者私信交流~ 本文中的内容建立在你对 Screeps 世界的基本运作原理有一定了解的基础,请确认你已经通过了全部的教程,不然可能会对本文的内容产生疑惑。

本文的主要内容为文字描述 + 图片介绍,讨论的具体内容主要是角色系统的设计理念以及如何更好的管理和协作,至于每个角色的具体实现则不再本文的讨论范围之内。想要了解更多关于 Screeps 的内容?欢迎访问我的 《Screeps 文集》!

介绍

如果你已经通过了教程的话,那你肯定对role(角色) 这个单词并不陌生,在教程中一共出现了三个角色havester采集者upgrader升级者builder建造者。通过将不同职能的creep划分成不同的角色进行管理,是这个游戏的主要内容之一。接下来我们就来更加深入一点,讨论如何更方便高效的划分角色与管理角色,注意,本文中只包含日常殖民地运营中的角色,不包含对外扩张和征服的角色

我将角色划分为以下几种:

英文名 角色名 工作内容
havester 采矿者 将能量开采出来并存入指定的结构中。
upgrader 升级者 从指定的结构中取出能量升级房间控制器。
builder 建造者 从指定的结构中取出能量并建造结构。
transfer 运输者 将能量从指定结构取出并存入指定的结构。
repairer 维修者 从指定的结构中取出能量并修复受损的结构。
defender 防御者 驻守指定区域并防御。

havester > transfer > upgrader 基本链路

你可以看到,在工作内容里,只有havester是可以直接接触到矿的,其他的角色都是从 指定结构 中取出能量。为什么不都从矿里采呢?因为这样的角色必须 WORK工作、CARRY携带、MOVE移动 三个身体部件的数量平衡的全能型角色。这样才不会在路上浪费太多时间。但是像是upgraderhavester这种对WORK部件需求比较大的角色,如果MOVECARRY部件少一点,不久可以节省出一部分能量和空间来添加WORK组件了么。所以我们的基本角色划分就可以这样:

Screeps 设计角色系统_第2张图片
基本角色链路

这么做不仅可以保证upgraderhavester可以尽可能的“全力”工作。也可以减少路上拥堵,提高效率。其他需要能量的角色则就近从container中获取能量,矿可能只有 3、4 个天然开采位,container可是四面八方都可以取能量,这样一来也解决了矿附件的拥堵问题。这就是角色划分的基本原则之一:不要所有的角色都从矿里获取能量。当然,在前期人手紧缺的时候这个原则就显得不那么重要了。

这个角色链路可以实现的一个重要条件就是:从结构中获取能量不依赖WORK部件。也就是说,transfer角色可以在一个 tick 中填满自身的CARRY部件(只要结构里能量足够)而不需要哪怕一个WORK组件!

下面来看一个简单的例子,在这个例子中,upgraderhavester甚至都不需要移动就可以获取 / 存放能量。而transfer也只需要抱着能量玩命跑就可以了。:

Screeps 设计角色系统_第3张图片
简单例子

在解锁了Link建筑之后,我们就可以用其快速的在升级者、采集者和基地直接转移能量,从而让运输者可以有更多的时间来完成其他工作。

工作繁忙的 transfer

除了把能量从采集者身边的container运输到升级者身边的container。运输者还需要做下面的基本工作:

  • 将能量带到extension,维持正常的creep生成。
  • 将能量带到tower,维持基本的防御以及维护工作。
Screeps 设计角色系统_第4张图片
更多的工作

并且,一旦你的房间解锁了 Storage,这种角色划分也可以很轻松的将能量从 container 集中到 Storage 里,从而优化基地的运营方案。

更好的设计:注意,上面的图片只是便于理解不同角色直接的关系,而 container 的摆放并不是最好的方案。你可以直接把 container 造在 creep 的脚下来创造一个更好用的组合,在 Screeps 建筑布局规划 的“其他建筑”小节里可以找到更多信息。

builder 和 repairer 的浪漫

作为支撑殖民地发展的猛男,builder必须是三种身体部件都包含的全能型选手,它需要WORK来更快的建造结构,需要CARRY来携带更多的能量避免少跑路,以及合理的MOVE组件来跋山涉水。而它的本质工作“建造”也不是时刻都有的,比如我晚上给它安排了一些建造工作,但是之后的两天里我都没有时间去管他们,那他们岂不是开始摸鱼了?所以,我们可以拿他们来做更多的事。但是在此之前,我们先来了解一下repairer维修者。

维修者负责维修房间内受损的建筑,它其实是一个存在感很低的角色,在前期我们可以分配 1 ~ 2creep担任这个角色,到了有tower的时候我们就可以逐步的将repairer的数量降为 0 了。所以这个角色在后期更像是一种预备方案,出现什么问题导致没办法修复结构,比如说因为某些原因tower失效了,这时候就应该有其他角色临时转变成repairer。你总不想辛辛苦苦挖的穿山隧道一晚上都没了吧。

什么时候算是紧急情况?

比如某个结构的耐久跌到 30% 以下了。如果再不维修可能这个结构就坏掉消失了。这种情况并不是没有可能发生,比如编写tower逻辑时出现了错误但没有发现、tower被别人摧毁了、给tower供给能量的transfer因为某些原因数量不足甚至消失了、能量产出效率不够导致tower没有足够的能量供给了。结构的数量太多导致超出当时transfer的能力了,都有可能导致这种事情的发生。

ok,让我们把视线移回builder身上,当它们开始摸鱼的时候应该怎么做呢?首先,builder在没有事干时应去协助upgraderhavester的工作。比如我们可以先判断下有没有空闲的资源点开采位。如果有的话就变身havester,没有的话就去协助upgrader升级房间控制器。还有呢?对,builder应该在紧急时充当repairer的角色。毕竟它的身体结构和repairer很相似。

所以现在我们可以总结一下builder的工作,有坏掉的建筑就去修,有建筑工地就去干活,没有工地就去当升级者或是开采者。总之,builder可以说是一个复合型人才角色:

Screeps 设计角色系统_第5张图片
builder 的工作

repairer 并不只维修建筑

从上一小节中我们可以看到,在有了Tower建筑之后,repairer 角色的存在感就低了很多。其实,维修者还有一个非常重要的工作需要做的就是:修墙

你可能会想,我让Tower一起把墙修了不就好了,其实不然,如果把修墙的任务分配给Tower的话,修墙动辄需要几十上千 K 的能量,会让Tower的能量消耗速度非常快,从而可能导致在需要Tower击入侵者时没有足够多的能量。并且在修距离较远的墙时,Tower的修复效果衰减特性也会极大的浪费能量。

所以,在Tower接替了房间的维修工作后,你可以将维修者的主要任务设置为修墙。从而不断的提升房间的被动防御能力。

严阵以待的 defender

除了towerrampart之外,你也可以准备一小队creep来应对那些对房间发动攻击的入侵者。

这种角色的creep并不参与殖民地的正常运营 因为负责战斗的creep并不需要WORK或者CARRY部件,而是呆在房间中交通最方便或者最重要的入口处待命。一旦房间内出现敌方单位则主动发起进攻。在完成任务后再返回指定位置待命。

有一点值得注意的是,npc 入侵者是有等级区分的,在房间等级小于等于3时,产生的npc 是比较弱的,Tower自己就完全可以应付得了。而在房间等级4以上时产生的入侵者可能会给你的防御带来不少压力,所以可以考虑 RCL<4时不生成防御者,RCL>=4时在入侵者进攻时再生成防御者。

Screeps 设计角色系统_第6张图片
npc 入侵者等级

总结

本篇文章介绍了 screeps 中几个比较常用的角色以及相互协作的工作链。havester负责专心挖矿,upgrader负责专心升级,transfer负责在几个重要的结构间转移能量,builder要做的事情比较多,有建筑工地时建筑建筑,没有时协助havesterupgrader工作,在关键时则转变为repairer来维修建筑。而defender则比较专一,它们只负责房间的防御,一旦发生紧急情况则主动发起反击。

接下来,我们将更加深入一点,来了解一个可靠的角色系统究竟是什么样的,欢迎点击 Screeps 抽象角色系统 继续阅读~

你可能感兴趣的:(Screeps 设计角色系统)