介绍
Screeps-Commander是一个用于Screeps游戏的npm模块,可以使你更容易地控制你的Screeps游戏角色。Screeps是一款基于战略的小型在线游戏,玩家需要控制自己的虫洞基地,与其他全球的Screeps玩家一起争夺领地。
Screeps-Commander提供了一些方便的功能,包括快速生成和管理游戏角色,以及更容易地编写和组织复杂的角色代码。
在本文中,我们将介绍如何使用Screeps-Commander包,并提供一些示例代码和指导建议。
安装与配置
首先,我们需要将Screeps-Commander安装到我们的Screeps项目中。在Screeps项目的根目录下运行以下命令来安装Screeps-Commander:
npm i screeps-commander --save
接下来,我们需要配置Screeps-Commander以适应我们的项目。首先,在我们的项目中创建一个叫做screepsconfig.js
的文件,并在其中添加以下代码:
module.exports = { username: 'YOUR_USERNAME_HERE', password: 'YOUR_PASSWORD_HERE', branch: 'DEFAULT_BRANCH_HERE', ptr: false, };
这将允许我们使用Screeps-Commander包来连接到我们的Screeps账户,并在代码上传时指定分支。确保将YOUR_USERNAME_HERE
、YOUR_PASSWORD_HERE
和DEFAULT_BRANCH_HERE
替换为你的Screeps帐户凭据和所选的分支名称。如果你要将代码上传到Screeps的私有服务器,请将ptr
设置为true
。
使用Screeps-Commander
现在,我们已经完成了安装和配置,可以开始使用Screeps-Commander来控制我们的游戏角色了。
角色定义
首先,我们需要为我们的Screeps角色编写代码。这时候需要定义一个角色类,类里面包括run
方法和shouldRun
方法,这些方法在每个游戏tick里都会周期性被调用。run
方法控制角色在某个tick所要执行到命令,shouldRun
方法控制角色是否应该执行命令。
例如,我们要定义一个叫做builder
的角色,用于建造和维护基地结构。我们可以在我们的项目中创建一个名为builder.js
的文件,并在其中添加以下代码:
-- -------------------- ---- ------- ----- ------- - ---------- - -- ---------------------- -- ---------------------------- -- -- - --------------------- - ------ ------------- ---------- - -- ----------------------- -- ----------------------------- -- -- - --------------------- - ----- ------------- -------- - -- ----------------------- - ----- ------- - ----------------------------------------- -- ---------------- - -- ------------------------ -- ----------------- - ------------------------ - ------------------- - ------- --------- - --- - - - ---- - ----- ------- - ------------------------------ -- -------------------------- -- ----------------- - ------------------------ - ------------------- - ------- --------- - --- - - - ---------------- - ------ ----- - - -------------- - - ------- --
这个角色会收集和存储资源,然后建造附近的建筑。你可以根据你的需求更改Builder
角色的定义。
角色管理
现在,我们已经定义了我们的Screeps角色,接着我们需要使用Screeps-Commander来组织和管理这些角色。
首先,我们需要在我们的项目中创建一个名为roles.js
的文件,以便我们可以让Screeps-Commander找到我们定义的角色。我们可以在该文件中导入并声明我们的角色类。例如,在roles.js
文件中添加以下内容:
-- -------------------- ---- ------- ----- - ------- - - --------------------- -------------- - - -------- - ------ -------- ------------- -- ------------- --- -- --
这里我们将Builder
角色导入并声明了一个叫做builder
的角色。我们还指定了最小和最大的角色实例数量。你可以根据你的需求更改这些参数。
接下来,我们需要在我们的Screeps启动文件(例如main.js
)中导入Screeps-Commander,并将我们的角色和Screeps-Commander进行关联。例如,在我们的main.js
文件中添加以下内容:
const { ScreepsCommander } = require('screeps-commander'); const roles = require('./roles'); const commander = new ScreepsCommander(roles); module.exports.loop = () => { commander.tick(); };
在这个例子中,我们将我们定义的角色传递给ScreepsCommander
构造函数中,然后在我们的游戏循环中调用commander.tick()
方法。当我们调用tick()
方法时,Screeps-Commander将自动管理我们的角色实例,从而让我们更加轻松地编写和组织角色代码。
示例代码
现在,我们已经完成了Screeps-Commander的安装和使用,让我们通过一个完整的示例来介绍使用Screeps-Commander的过程。
在这个示例中,我们将创建三个角色来执行不同的任务:采集器、传递者和攻击者。采集器负责收集资源,传递者负责将资源传递到我们的基地,而攻击者则负责保护我们的领地免受入侵者的攻击。
我们将在我们的项目中创建三个文件,每个文件都包含一个角色类。我们将这些文件命名为harvester.js
、upgrader.js
和attacker.js
。这些角色类如下所示:
harvester.js
-- -------------------- ---- ------- ----- --------- - ---------- - -- ------------------------------ - -- - ----- ------- - ------------------------------ -- -------------------------- -- ----------------- - ------------------------ - ------------------- - ------- --------- - --- - - ---- - ----- ------- - -------------------------------- - ------- ----------- -- - ------ - ------------------------ -- ------------------- -- ----------------------- -- --------------- -- ----------------------- -- ---------------- -- ------------------------------------------------ - - -- -- --- -- --------------- - -- - -- --------------------------- ---------------- -- ----------------- - ------------------------ - ------------------- - ------- --------- - --- - - - - ---------------- - ------ ----- - - -------------- - - --------- --
upgrader.js
-- -------------------- ---- ------- ----- -------- - ---------- - -- ----------------------------- -- -- - ----- ------- - ------------------------------ -- -------------------------- -- ----------------- - ------------------------ - ------------------- - ------- --------- - --- - - ---- - -- ----------------------------------------------- -- ----------------- - ----------------------------------- - ------------------- - ------- --------- - --- - - - ---------------- - ------ ----- - - -------------- - - -------- --
attacker.js
-- -------------------- ---- ------- ----- -------- - ---------- - ----- ------- - ------------------------------------- -- ---------------- - -- ------------------------- -- ----------------- - ------------------------ - ------------------- - ------- --------- - --- - - ---- - -- ------------------- - ----- ---- - ------------------------------ -- ------ - ------------------ - ------------------- - ------- --------- - --- - - - - ---------------- - ------ ----- - - -------------- - - -------- --
接下来,我们需要在我们的roles.js
文件中指定我们的角色并设置他们的数量。
-- -------------------- ---- ------- ----- - --------- - - ----------------------- ----- - -------- - - ---------------------- ----- - -------- - - ---------------------- -------------- - - ---------- - ------ ---------- ------------- -- ------------- -- -- --------- - ------ --------- ------------- -- ------------- -- -- --------- - ------ --------- ------------- -- ------------- -- -- --
接下来,我们需要在我们的main.js
文件中实例化我们的 ScreepsCommander
对象。
const { ScreepsCommander } = require('screeps-commander'); const roles = require('./roles'); const commander = new ScreepsCommander(roles); module.exports.loop = () => { commander.tick(); };
至此,我们已经完成了整个示例,我们的Screeps角色将自动采集资源并将其转移到基地中。如果有任何入侵者,攻击者将出现并击败入侵者。这里,通过Screeps-Commander的优秀封装程度,我们大量的逻辑得到了简化,让游戏开发变得更加高效。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005601d81e8991b448de484