#game-server #screeps #build #deployment #upload #wasm-pack #nodejs

app cargo-screeps

将Rust WASM代码部署到Screeps游戏服务器的构建工具

22个版本

0.5.2 2024年1月15日
0.5.1 2023年4月16日
0.5.0 2023年3月13日
0.4.0 2022年9月9日
0.0.5 2018年3月13日

#7游戏

每月23次下载

MIT 协议

44KB
822

cargo-screeps

Linux Build Status crates.io version badge dependency status

将Rust WASM仓库部署到 Screeps 游戏服务器的构建工具。

cargo-screeps 包裹 wasm-pack,增加了从输出文件中删除node.js和Web JavaScript代码的功能,并允许直接上传到Screeps服务器。

本组织中的另一个主要项目是 screeps-game-api,它是对游戏中Screeps API的类型安全绑定。

这两个工具配合得很好,但它们不相互依赖。cargo-screeps 可以编译和上传任何可以用 wasm-bindgenwasm-pack 构建的Screeps WASM项目,而 screeps-game-api 可以在任何用 wasm-pack 构建的项目中使用。


构建选项

build:

配置在 [build] 配置部分。无必填设置。

  1. 运行 wasm-pack --target nodejs 来构建Screeps:世界机器人或 wasm-pack --target web 来构建Screeps:竞技场机器人
  2. 修改生成的模块的JavaScript加载器文件,使其与Screeps兼容;添加了 TextEncoder/TextDecoder 的polyfill,并在将 build_mode 设置为 world(默认)时,用与Screeps:世界兼容的模块加载函数替换node兼容的模块加载函数

deploy:

根据 --mode 设置运行指定的部署模式,或运行 default_deploy_mode 配置设置,如果没有指定。

  1. 运行构建
  2. 根据模式是否上传(有身份验证凭据)或复制(有 destination)来部署构建的代码

如果复制(当 destination 已定义时)

  1. include_files 指定的目录(默认为 pkgjavascript)编译 .js.mjs 以及 .wasm/.bin 文件到指定的目录和分支
  2. 如果启用了修剪功能,则删除 <目标目录>/<分支名称>/ 中的所有其他文件

如果正在上传(当定义了 auth_tokenusernamepassword 时)

  1. include_files 指定的目录(默认为 pkgjavascript)读取编译好的 .js.wasm 文件。
  2. 读取用于上传选项的 screeps.toml
  3. 将所有读取的文件上传到指定分支的服务器上,使用文件名作为服务器上的文件名

上传:

cargo screeps deploy -m upload 的快捷方式。

复制:

cargo screeps deploy -m copy 的快捷方式。

配置选项

无命名空间

  • default_deploy_mode:当未设置 --mode/-m 选项时,控制 cargo screeps deploy 使用哪种模式。

[build]

此配置设置通用构建选项。

  • build_mode:模块应该为哪个游戏构建;worldarena
  • build_profile:应该使用的构建配置;releasedevprofiling
  • out_name:用于在 pkg 目录中由 wasm-pack 创建的模块的名称。默认为 Cargo.toml 中定义的 crate 名称。
  • extra_options:您希望传递给 wasm-pack 的任何额外命令行标志,例如启用功能。

这些选项中的任何一个都可以通过自己的构建部分来覆盖给定模式。例如,

[upload.build]
extra_options = ["--features=alliance_behavior"]

将在运行 upload 模式时构建名为 alliance_behavior 的功能。

配置模式

配置模式可以将构建的文件复制到目标目录,或使用 Screeps API 上传到目标服务器。

模式应具有文件系统目标以复制到,或上传的认证凭据(可选,服务器信息)。

可选地,它还可以有一个子表 [mode.build],以覆盖任何全局 [build] 选项。

复制选项

用于部署到文件系统位置的选项。

  • destination:复制文件到的目录

    如果此路径不是绝对路径,则将其解释为相对于 screeps.toml 的相对路径。

  • branch:要复制的“分支”

    这是destination的子目录,js/wasm文件将被复制到其中。默认为"default"

  • prune:如果为true,则会在目标/分支目录中找到的额外文件将被删除。默认为false

上传选项

部署到Screeps服务器的选项。

  • auth_token:您的Screeps账户的授权令牌

  • username:您的Screeps用户名或电子邮件

  • password:您的Screeps密码

    可以提供auth_token或用户名/密码。当两者都设置时,将使用授权令牌。对于私有服务器,使用screepsmod-auth设置密码。

  • branch:要复制的“分支”

    这是要部署到Screeps服务器上的“分支”。默认为"default"

  • prefix:如果设置,则向上传路径添加URL前缀。使用"ptr""season"分别上传到公共测试领域和季节性服务器。

  • hostname:要上传到的主机名

    例如,这可能是screeps.comlocalhostserver1.screepsplu.us。默认为screeps.com

  • ssl:是否使用ssl连接到服务器

    这通常适用于主服务器,对于私有服务器则为false。默认为true

  • port:连接到服务器的端口号

    这通常应设置为私有服务器为21025。默认为443

更新cargo screeps

要更新cargo-screeps,只需使用--force-f)标志重复安装过程。

更新后,您可能需要执行完整的cargo clean,以删除使用旧版cargo-screeps构建的任何旧工件。

cargo install -f cargo-screeps
cargo clean
cargo screeps build

依赖项

~23–42MB
~656K SLoC