【screeps】配置无需游戏客户端的开发环境

 

本文将介绍一下如何在不引人注意的情况下摸鱼在不打开游戏客户端的情况下进行游戏。请确保本地已经装好了nodejsnpm,并对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退出。

然后会让你输入一个api tokenscreeps-multimeter需要这个token来获取你的游戏运行时信息。你可以点击screeps官方文档-Authentication Tokens来查看更多信息。

这个令牌可以点击获取 Screeps Token来生成一个。直接点击下面的Generate token即可。将获取到的token粘贴回输入框,然后按回车下一步。

这一步填写你所在服务器名称即可。

然后会让你选择配置项保存的文件名,默认即可。

然后你就会进入终端的主界面,游戏终端会花几秒的时间来连接服务器,当你看到上面的CPUMem字段刷新出来之后就代表连接成功了。如果过了一段时间终端报错退出,请检查你和服务器的网络连接状况。

现在你就可以像使用游戏里内嵌的终端那样使用这个本地终端了。他还提供了将代码映射成命令的功能,方便平时的使用。具体的用法可以参考github – screeps-multimeter README.md

我想连接私有服务器该怎么做?

只需在输入api token时不填直接回车,他就会让你提供私有服务器的主机名,端口以及用户名和密码,依次填写即可。

本地自动提交代码

有了终端之后还不够,我们还需要能从本地提交代码,最好是可以保存文件后就自动提交。接下来就使用grunt-screeps包来实现本地提交代码,使用grunt-contrib-watch实现保存文件后自动提交。

要使用上面两个插件我们需要先安装grunt,直接执行下面两条命令即可:

# 全局安装 grunt 命令行工具
npm install -g grunt-cli
# 在项目中安装 grunt 及 grunt-screeps、grunt-contrib-watch 模块
npm install grunt grunt-screeps grunt-contrib-watch –save-dev

安装完成后在项目中新建一个Gruntfile.js文件,并填入如下内容,注意将其中的YOUR_EMAILYOUR_PASSWORD的值改成你的邮箱和密码,而default是提交到的分支、ptr是是否提交到测试服。

module.exports = function(grunt) {
// 加载任务依赖
grunt.loadNpmTasks(‘grunt-screeps’);
grunt.loadNpmTasks(‘grunt-contrib-watch’);
// 定义任务
grunt.initConfig({
// screeps 代码上传任务
screeps: {
options: {
email: ‘YOUR_EMAIL’,
password: ‘YOUR_PASSWORD’,
branch: ‘default’,
ptr: false
},
dist: {
src: [‘dist/*.{js,wasm}’],
}
},
// 代码变更监听任务
watch: {
files: “dist/*.*”,
tasks: [ “screeps” ]
}
});
// 注册默认任务
grunt.registerTask(“default”, [“watch”])
}

然后我们在项目目录下新建个dist文件夹,并把我们的代码复制进去。注意!一定要确保dist文件夹中的代码存在!上传之后dist文件夹里的文件会直接覆盖你的线上文件。如果dist里什么都没有时执行了上传命令,那你的线上代码就会直接消失。当你确认完之后就可以执行如下命令启动任务了:

grunt

执行之后你会发现控制台输出了以下内容:

Running “watch” task
Waiting…

这就代表着你的代码已经成功被监听了,这时候我们随便找个dist文件夹中的文件编辑一下然后保存,就可以看到如下输出:

>> File “dist\main.js” changed.
Running “screeps:dist” (screeps) task
Committed to Screeps account “hpgless@outlook.com” branch “default”.

Done.
Completed in 5.011s at Sat Aug 17 2019 22:23:31 GMT+0800 (中国标准时间) – Waiting…

这就说明代码上传成功,这时你打开multimeter或者网页screeps或者游戏客户端都可以看到你的修改了。

关于官方示例Gruntfile.js会导致代码上传遗漏的问题说明

如果你曾经使用过这里提到的官方示例任务,就会发现有时上传会遗漏一部分文件,从而导致线上丢失文件从而报找不到xx模块的错误,这个问题也有其他人发现并在screeps-grunt的github仓库上提了issue以及对应的pr,不过这个项目好像已经不再维护了,如果你感兴趣的话可以点击对应的链接进行查看。

总结

本文介绍了如何在不打开游戏客户端的情况下进行游戏,首先安装screeps-multimeter模块,经过简单的配置后就可以访问游戏终端了。然后安装grunt-screepsgrunt-contrib-watch,安装完成后就可以使用grunt screeps提交项目中dist文件夹下的文件到服务器。而grunt-contrib-watch则可以监听文件从而实现保存后直接提交代码。

HoPGoldy

前端学习者,偶尔玩玩服务器

相关文章