screeps-game-api 0.20.1

WASM bindings to the in-game Screeps API
Documentation
screeps-game-api
================

[![Linux Build Status][actions-badge]][actions-builds]
[![crates.io version badge][cratesio-badge]][crate]
[![dependency status][deps-badge]][deps]
[![docs.rs version badge][docsrs-badge]][docs]

![Rusty Screeps Logo][logo]

Typed bindings to the Screeps in-game API for WASM Rust AIs.

Also the homepage for tools relating to writing [Screeps] AIs in Rust.

`screeps-game-api` is a Rust binding to the JavaScript APIs for programs compiled to WASM using
[`wasm-pack`].

Also in this organization is [`cargo screeps`][cargo-screeps], a binary program which wraps
`wasm-pack` and lets one directly upload Rust WASM code to Screeps servers.

These two tools go together well, but do not depend on eachother. `cargo-screeps` can compile and
upload any screeps WASM project buildable with `wasm-bindgen`'s `wasm-pack`, and `screeps-game-api` is
usable in any project built with `wasm-pack`.

Writing Screeps code in Rust can be nice, but it can also be annoying. If you have tips, tricks, or
other things you'd like to share, make an issue! We need to write more documentation, and if we have
enough ideas, we can start an mdbook for this repository.

- [cargo screeps usage docs][cargo-screeps]
- [screeps-game-api api docs][docs]
- [screeps-starter-rust example project]https://github.com/rustyscreeps/screeps-starter-rust/

If you need help or want to share feedback, feel free to open an
[issue](https://github.com/rustyscreeps/screeps-game-api/issues)
or come say "_Hi!_" on [the official Screeps Discord](https://discord.gg/screeps) in the `#rust`
channel!

---

Here's a quickstart for what you *need* to get going. More documentation will be made in the future.

```sh
# Install CLI dependency:

cargo install cargo-screeps

# Clone the starter

git clone https://github.com/rustyscreeps/screeps-starter-rust.git
cd screeps-starter-rust

# Copy the example config, and set up at least one deployment mode

cp example-screeps.toml screeps.toml
nano screeps.toml
# configure credentials (API key) if you'd like to upload directly,

# or a directory to copy to if you'd prefer to use the game client to deploy


# build tool:

cargo screeps --help
# compile the module without deploying anywhere

cargo screeps build
# compile plus deploy to the configured 'upload' mode; any section name you

# set up in your screeps.toml for different environments and servers can be used

cargo screeps deploy -m upload
# or if you've set a default mode in your configuration, simply use:

cargo screeps deploy
```

[screeps]: https://screeps.com/
[`wasm-pack`]: https://rustwasm.github.io/wasm-pack/
[actions-badge]: https://github.com/rustyscreeps/screeps-game-api/actions/workflows/build.yml/badge.svg
[actions-builds]: https://github.com/rustyscreeps/screeps-game-api/actions/workflows/build.yml
[cratesio-badge]: https://img.shields.io/crates/v/screeps-game-api.svg
[crate]: https://crates.io/crates/screeps-game-api/
[deps-badge]: https://deps.rs/repo/github/rustyscreeps/screeps-game-api/status.svg
[deps]: https://deps.rs/repo/github/rustyscreeps/screeps-game-api
[docsrs-badge]: https://docs.rs/screeps-game-api/badge.svg
[docs]: https://docs.rs/screeps-game-api/
[cargo-screeps]: https://github.com/rustyscreeps/cargo-screeps/
[logo]: ./logo.png