Multiplayer canvas tool with programmable brushes!
the goal is to rewrite haku completely, starting with the VM---because it was the most obvious point of improvement the reason is because Rust is kinda too verbose for low level stuff like this. compare the line numbers between haku1 and haku2's VM and how verbose those lines are, and it's kind of an insane difference it also feels like Zig's compilation model can work better for small wasm binary sizes and of course, I also just wanted an excuse to try out Zig :3 |
||
---|---|---|
.cargo | ||
admin | ||
crates | ||
docs | ||
scripts | ||
static | ||
template | ||
.editorconfig | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
jsconfig.json | ||
Justfile | ||
README.md | ||
rkgk.toml |
rakugaki - digital multiplayer graffiti
rakugaki is a multiplayer paint canvas with programmable brushes!
At the heart of rakugaki is the brush - a little program for manipulating pixels on a wall. Brushes are written in a tiny programming language called haku.
I wanna try it out!
Since the app is currently in very early alpha stages, there's no public instance at the moment.
You're free to spin up a server for your friends though! Here's the setup procedure for production instances.
# As of writing this, 1.81 is not yet released, so we have to use Rust nightly.
rustup toolchain install nightly-2024-08-11
rustup default nightly-2024-08-11
rustup target add wasm32-unknown-unknown
# We use `just` to wrangle the process of building the client-side WebAssembly and the server.
cargo install just
# Now it's time to run the backend!
just port=8080 profile=release
Then, you can connect to localhost:8080
to see the app in action.
For development, I recommend using cargo watch
for live reloading.
just
defaults to a sensible development configuration.
If you need to override the port, use the port
variable as shown above.
cargo install cargo-watch
cargo watch -- just