![](https://img.haomeiwen.com/i13523736/cc180001f08ff5c6.png)
本文将介绍一下如何 在不引人注明的情况下摸鱼 在不打开游戏客户端的情况下进行游戏。请确保本地已经装好了nodejs
及npm
,并对npm
的使用有一定的了解。
ok,我们先来拆分下需求,想要愉快的进行游戏需要如下几点:
- 有一个可以交互的游戏终端 就像游戏里嵌入的
console
那样 - 本地代码保存后会自动提交到服务器运行
准备工作
我们先来做一些最基本的准备工作。首先新建一个文件夹,命名为headless-screeps
或其他你喜欢的名字。然后npm init
一路回车完成初始化,再npm install @types/screeps @types/lodash@3.10.1
安装自动补全。接下来就可以安装本地终端了。
安装本地游戏终端
安装screeps-multimeter
。这个是第三方模块,可以实现游戏中console
一样的功能。唯一的缺点就是 不支持中文输出。git 地址在这里 github - screeps-multimeter 。打开cmd
,切换到上一步新建的游戏文件夹路径,然后执行下面命令即可安装。
npm install screeps-multimeter --save-dev
安装完成后打开./package.json
,在scripts
字段下添加一个新属性start
,如下:
...
"scripts": {
"start": "multimeter"
},
...
然后执行如下命令即可启动游戏终端:
npm start
初始化终端
启动之后就会弹出如下页面,提示你没有找到配置文件,按任意键进行初始化,或者按Ctrl + C
退出。
![](https://img.haomeiwen.com/i13523736/30a42fc379360f53.png)
然后会让你输入一个api token
,screeps-multimeter
需要这个 token 来获取你的游戏运行时信息。你可以点击 screeps 官方文档 - Authentication Tokens 来查看更多信息。
![](https://img.haomeiwen.com/i13523736/c028da2bc2eb620a.png)
这个令牌可以点击 获取 Screeps Token 来生成一个。直接点击下面的Generate token
即可。将获取到的token
粘贴回输入框,然后按回车下一步。
![](https://img.haomeiwen.com/i13523736/a6fc0a3d50dd8fe0.png)
这一步填写你所在服务器名称即可。
![](https://img.haomeiwen.com/i13523736/d3b53d1a90454cc4.png)
然后会让你选择配置项保存的文件名,默认即可。
![](https://img.haomeiwen.com/i13523736/0c92ee04e2923cbe.png)
然后你就会进入终端的主界面,游戏终端会花几秒的时间来连接服务器,当你看到上面的CPU
和Mem
字段刷新出来之后就代表连接成功了。如果过了一段时间终端报错退出,请检查你和服务器的网络连接状况。
![](https://img.haomeiwen.com/i13523736/3c21709cb0d98393.png)
现在你就可以像使用游戏里内嵌的终端那样使用这个本地终端了。他还提供了将代码映射成命令的功能,方便平时的使用。具体的用法可以参考 github - screeps-multimeter README.md 。
我想连接私有服务器该怎么做?
只需在输入api token
时不填直接回车,他就会让你提供私有服务器的主机名,端口以及用户名和密码,依次填写即可。
本地提交代码
有了终端之后还不够,我们还需要能从本地提交代码。接下来就使用grunt-screeps
包来实现这个功能。
grunt-screeps
是官方提供的一个用于上传代码的模块,但是要使用它我们也需要安装grunt
,直接执行下面两条命令即可:
# 全局安装 grunt 命令行工具
npm install -g grunt-cli
# 在项目中安装 grunt 及 grunt-screeps 模块
npm install grunt grunt-screeps --save-dev
安装完成后在项目中新建一个Gruntfile.js
文件,并填入如下内容:本段代码取自 官方使用示例,请以官方文档为准,注意将其中的email
、password
的值改成你的邮箱和密码。
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-screeps');
grunt.initConfig({
screeps: {
options: {
email: 'YOUR_EMAIL',
password: 'YOUR_PASSWORD',
branch: 'default',
ptr: false
},
dist: {
files: [
{
expand: true,
cwd: 'dist/',
src: ['**/*.{js,wasm}'],
flatten: true
}
]
}
}
});
}
然后我们在项目目录下新建个dist
文件夹,并把我们的代码复制进去。注意!一定要确保dist
文件夹中的代码存在!上传之后dist
文件夹里的文件会直接覆盖你的线上文件。如果dist
里什么都没有时执行了上传命令,那你的线上代码就会直接消失。当你确认完之后就可以执行如下代码上传命令了:
grunt screeps
当命令行输出Done.
时即为上传成功。
实现保存自动上传
上一小节我们实现了输入grunt screeps
之后上传代码,这还不够,我们要做到改完代码后一保存就自动上传,使用的模块就是大名鼎鼎的nodemon
。
什么是
nodemon?
nodemon
是一个服务,在启动之后他将主动监听指定文件夹中的文件修改,一旦发现修改则立刻执行给定命令。
首先执行如下命令安装nodemon
:
npm install nodemon --save-dev
然后在package.js
的scripts
中添加一个新的属性uploader
,添加的命令意思是 监听dist
文件夹,一旦发现更改就执行grunt screeps
:
...
"scripts": {
"start": "multimeter",
"uploader": "nodemon --exec 'grunt screeps' --watch dist"
},
...
然后在命令行中执行如下命令即可启动监听:
npm run uploader
这时你再回到dist
文件夹中编辑你的代码并保存之后,你就可以看到命令行终端中输出了正在执行grunt screeps
的信息:
[nodemon] restarting due to changes...
[nodemon] starting `grunt screeps`
Running "screeps:dist" (screeps) task
Committed to Screeps account "hpgless@outlook.com" branch "default".
Done.
[nodemon] clean exit - waiting for changes before restar
总结
本文介绍了如何在不打开游戏客户端的情况下进行游戏,首先安装screeps-multimeter
模块,经过简单的配置后就可以访问游戏终端了。然后安装grunt-screeps
,安装完成后就可以使用grunt screeps
提交项目中dist
文件夹下的文件到服务器。最后安装了nodemon
模块来监听dist
文件夹,从而实现保存后直接提交代码。
网友评论