Skip to main content

Making Clients

A Stardust client is at its core an executable that connects to a stardust server instance at $XDG_RUNTIME_DIR/stardust-[0-32], sends and receives messages according to the Stardust protocol.

Rust#

Stardust uses Rust due to its speed and reliability in build and runtime, so you will need to install cargo (preferably through rustup). If you're unsure how to use Rust then a great guide is at https://doc.rust-lang.org/book/.

stardust-xr#

stardust-xr is a connecting library for servers and clients that deals with the lowest level of connecting to ensure basic compatibility is ensured. As a client developer you most likely won't need it, but it's good to know about it.

Fusion#

stardust-xr-fusion is the high level library you'll probably be using to create your clients. It features structs for all Stardust objects and trait-based + async systems for handling events from the server.

To get started, create a new Rust project using

cargo new

and include the stardust-xr-fusion dependency in your cargo.toml. Documentation will be available at https://docs.rs/crate/stardust-xr-fusion/latest.

Molecules#

stardust-xr-molecules is an even higher level widget library built on Fusion similar to MRTK to get your clients up and running faster. Documentation will be available at https://docs.rs/crate/stardust-xr-molecules/latest.