raylib-wasm
-
Library lets you run your raylib games in your browser and on your machine with NO CHANGES in your code.
-
We don't use emscripten or anything like that, just pure Rust and pure JavaScript, no dependencies (you only need to have wasm and raylib installed).
-
You can see a great example of using this library here: https://github.com/rakivo/rust-raylib-hotreload-wasm-template. This is a template, so you can start a new repo with it.
[!NOTE] Of course not all raylib functions are supported in browser at the moment, but if anyone is interested in this library, you can make a pull request, so I can see if I need to continue work on this peace of software.
A process of porting a function from native to JS
- Go to
src/web/fns.rs, add your desired function to theexternblock in theffimodule:
extern "C"
- If the function accepts any structs, you need to pass them via their address in memory:
pub unsafe
- Then, go to
raylib.js, find theWebAssembly.instantiateStreaming(fetch(WASM_PATH), {...line, and implement your function inJSthere. For instance, this is howDrawRectangleRecis implemented:
Inspiration
This project was inspired by tsoding/zozlib.js and tsoding/snake-c-wasm.