Rust developer. I build sandboxed plugin systems and tools that read closed binary formats, mostly for games.
Stormlight: a moddable game engine that ships no content
A MOBA engine on Bevy with an authoritative server. Every unit, ability and effect comes from a WebAssembly mod, which the engine runs in a sandbox.
- stormlight-shared: the wasmtime host. The guest imports nothing, and every call runs in a fresh store under a fuel budget and a memory cap. Every decode of guest memory is bounds-checked and fuzzed.
- stormlight-sdk: the mod
ABI and a
no_stdguest SDK. Abilities are serialisable data, and one macro generates every wasm export. - stormlight-example-mod: a complete mod that CI builds and loads into the real host.
unsafe is forbidden throughout, and tests are property- and fuzz-based
(bolero).
m3-to-glb: a closed 3D model format → glTF 2.0
A converter for a proprietary game model format, written from the reverse-engineered
binary layout. It converts meshes, materials, skeletons, animations and particle
effects. It uses zero-copy parsing, SIMD and an unsafe-free library, and it is
fuzzed and on crates.io.
All 33,365 models in the source game's archive convert to valid files.
Rust: no_std, wasm32, SIMD, zero-copy parsing, property and fuzz testing
Engines & runtimes: Bevy · Lightyear (netcode) · wasmtime
Reverse engineering: binary formats, Ghidra
Environment: Linux · Nix · GitLab CI / GitHub Actions
