1 line
3.8 KiB
JavaScript
1 line
3.8 KiB
JavaScript
"use strict";(self.webpackChunkstardust_website=self.webpackChunkstardust_website||[]).push([[533],{9305:function(t,e,s){s.r(e),s.d(e,{contentTitle:function(){return u},default:function(){return p},frontMatter:function(){return o},metadata:function(){return l},toc:function(){return d}});var n=s(7462),a=s(3366),r=(s(7294),s(3905)),i=["components"],o={sidebar_position:5},u="Making Clients",l={unversionedId:"getting-started/making-clients",id:"getting-started/making-clients",isDocsHomePage:!1,title:"Making Clients",description:"A Stardust client is at its core an executable that connects to a stardust server instance at $XDGRUNTIMEDIR/stardust-[0-32], sends and receives messages according to the Stardust protocol.",source:"@site/docs/getting-started/making-clients.md",sourceDirName:"getting-started",slug:"/getting-started/making-clients",permalink:"/docs/getting-started/making-clients",editUrl:"https://github.com/StardustXR/website/edit/main/docs/getting-started/making-clients.md",version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Starting",permalink:"/docs/getting-started/starting"}},d=[{value:"Rust",id:"rust",children:[]},{value:"stardust-xr",id:"stardust-xr",children:[]},{value:"Fusion",id:"fusion",children:[]},{value:"Molecules",id:"molecules",children:[]}],c={toc:d};function p(t){var e=t.components,s=(0,a.Z)(t,i);return(0,r.kt)("wrapper",(0,n.Z)({},c,s,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"making-clients"},"Making Clients"),(0,r.kt)("p",null,"A Stardust client is at its core an executable that connects to a stardust server instance at ",(0,r.kt)("inlineCode",{parentName:"p"},"$XDG_RUNTIME_DIR/stardust-[0-32]"),", sends and receives messages according to the Stardust protocol."),(0,r.kt)("h2",{id:"rust"},"Rust"),(0,r.kt)("p",null,"Stardust uses Rust due to its speed and reliability in build and runtime, so you will need to install cargo (preferably through ",(0,r.kt)("a",{parentName:"p",href:"https://rustup.rs/"},"rustup"),"). If you're unsure how to use Rust then a great guide is at ",(0,r.kt)("a",{parentName:"p",href:"https://doc.rust-lang.org/book/"},"https://doc.rust-lang.org/book/"),"."),(0,r.kt)("h2",{id:"stardust-xr"},"stardust-xr"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"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."),(0,r.kt)("h2",{id:"fusion"},"Fusion"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"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."),(0,r.kt)("p",null,"To get started, create a new Rust project using"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cargo new\n")),(0,r.kt)("p",null,"and include the ",(0,r.kt)("inlineCode",{parentName:"p"},"stardust-xr-fusion")," dependency in your ",(0,r.kt)("inlineCode",{parentName:"p"},"cargo.toml"),". Documentation will be available at ",(0,r.kt)("a",{parentName:"p",href:"https://docs.rs/crate/stardust-xr-fusion/latest"},"https://docs.rs/crate/stardust-xr-fusion/latest"),"."),(0,r.kt)("h2",{id:"molecules"},"Molecules"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"stardust-xr-molecules")," is an even higher level widget library built on Fusion similar to ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/microsoft/MixedRealityToolkit-Unity"},"MRTK")," to get your clients up and running faster. Documentation will be available at ",(0,r.kt)("a",{parentName:"p",href:"https://docs.rs/crate/stardust-xr-molecules/latest"},"https://docs.rs/crate/stardust-xr-molecules/latest"),"."))}p.isMDXComponent=!0}}]); |