Multiplayer canvas tool with programmable brushes!
Find a file
リキ萌 bff899c9c0 removing server-side brush rendering
brush rendering is now completely client-side.
the server only receives edits the client would like to do, in the form of PNG images of chunks, that are then composited onto the wall

known issue: it is possible to brush up against the current 256 chunk edit limit pretty easily.
I'm not sure it can be solved very easily though. the perfect solution would involve splitting up the interaction into multiple edits, and I tried to do that, but there's a noticable stutter for some reason that I haven't managed to track down yet.
so it'll be kinda crap for the time being.
2025-06-30 18:55:53 +02:00
.cargo a whole load of work in progress 2024-08-15 20:01:10 +02:00
admin s/liquidex/riki 2025-05-26 18:53:17 +02:00
crates removing server-side brush rendering 2025-06-30 18:55:53 +02:00
docs additional list functions (range, map, filter, reduce, flatten) (#74) 2025-05-27 22:25:29 +02:00
scripts implement brush cost gauges 2024-10-25 21:39:53 +02:00
static removing server-side brush rendering 2025-06-30 18:55:53 +02:00
template sidebar layout 2025-06-27 23:24:09 +02:00
.editorconfig initial commit 2024-08-10 23:10:22 +02:00
.gitignore beginning of haku2: a reimplementation of haku in Zig 2025-06-01 23:19:05 +02:00
Cargo.lock removing server-side brush rendering 2025-06-30 18:55:53 +02:00
Cargo.toml removing server-side brush rendering 2025-06-30 18:55:53 +02:00
jsconfig.json add jsconfig.json 2024-09-06 22:50:42 +02:00
Justfile #broken haku2: progress on making it work 2025-06-11 16:42:43 +02:00
README.md update readme again 2024-08-24 22:03:06 +02:00
rkgk.toml removing server-side brush rendering 2025-06-30 18:55:53 +02:00

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