Skip to content
/ wasmbots Public

wasm. bots. πŸ€–πŸ§™β€β™‚οΈπŸ§šπŸ§™β€β™€οΈβš”οΈπŸ°πŸ€–

License

Notifications You must be signed in to change notification settings

sjml/wasmbots

Repository files navigation

WasmBots

(NB: this repo is active, but progress may be a little slow. see this video for more specifics.)

A multi-wizard arena where all the competitors are bots! (Always a latest build at GitHub Pages, but that site is the canonical deployment.)

WasmBots Teaser Image

The programming interface is described here, and there are pre-made libraries in a bunch of languages to get you started. You can also peruse the code for the example bots.

The documentation can also be useful, or maybe just the development history.,

Development

It's a big ole monorepo. Sorry about that; it's what happens when a proof-of-concept just grows organically. I presumptively registered a wasmbots org on GitHub just in case this becomes A Thingβ„’ in which case I'll split things out more productively.

Devbox

You can always build and run with devbox. (Installation instructions are here.)

Run devbox shell to be in a usable environment where you can run

Docker

The Dockerfile just pipes everything through devbox, but makes it a little more turnkey, especially if you're already a Docker user.

# produces a container with a built frontend, 
#   including example bots, served with Caddy
docker build -t wasmbots .

# to actually get it serving:
docker run -d -p 8080:80 wasmbots
# Then look for it in your favorite browser at:
#   `http://localhost:8080`
#   (change out the port number to whatever you want)
# this will drop you into a shell within the container
#   where all the tools are installed and paths are set
#   and everything. 
docker build --target dev -t wasmbots-dev .
docker run -it -v $PWD:/code wasmbots-dev

Manual Installation

If you don't want to install a whole other package manager, here's what I (used to) use to get up and running with Homebrew on macOS. Modify appropriately if you're using something else.

brew install deno node wabt emscripten rust zig go tinygo-org/tools/tinygo

Simple Checks

Regardless of how you get your dev environment running, you can verify everything is working as expected by running:

./scripts/_build_wasms.sh
./scripts/_validate_wasms.sh

That will build and validate all the example bots; it doesn't check their functionality at all, just that WebAssembly modules were produced that conform to the expected interface.