Write game logic once in Rust. Ship native to Steam. Keep the web build for itch.io. Develop in Chrome with hot-reload.
invoke("tick_world")
Same frontend code. Auto-routes at runtime.
Full DevTools, hot-reload, shareable dev URLs. Drop into tauri dev only when testing desktop-specific behavior.
Rust has no garbage collector. Your simulation ticks at a consistent cost every frame, not whenever JS decides to collect.
Physics, pathfinding, and large entity counts run measurably faster in WASM than equivalent JS. On desktop, it's full native code.
The core/ crate has zero framework dependencies. Reuse it for a multiplayer server, a new target, or anywhere else.
-t three (default) · -t pixi · -t vanilla
Flagship tactical radar command loop. Exercises runtime bridge, app metadata, local profile persistence, asset loading, and alert event orchestration in one end-to-end scenario.
Simplest possible example. Increment, decrement, reset —
Rust logic called through the same invoke() API
that works on both web and desktop.
Two-player Pong with real physics. Ball collision, paddle clamping, score tracking — all in Rust, rendered with PixiJS at 60fps.
| Package | Registry | Purpose |
|---|---|---|
| webtau | crates.io | wasm_state! macro for WASM state management |
| webtau | npm | invoke() router + Tauri API shims |
| webtau-vite | npm | Vite plugin: wasm-pack automation + import aliasing |
| create-gametau | npm | Project scaffolder CLI |