1 line
3.7 KiB
JavaScript
1 line
3.7 KiB
JavaScript
"use strict";(self.webpackChunkstardust_website=self.webpackChunkstardust_website||[]).push([[533],{9305:(t,e,s)=>{s.r(e),s.d(e,{contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>l});var a=s(7462),n=(s(7294),s(3905));const r={sidebar_position:4},i="Making Clients",o={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:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Setup",permalink:"/docs/getting-started/setup"}},l=[{value:"Rust",id:"rust",children:[]},{value:"stardust-xr",id:"stardust-xr",children:[]},{value:"Fusion",id:"fusion",children:[]},{value:"Molecules",id:"molecules",children:[]}],u={toc:l};function d(t){let{components:e,...s}=t;return(0,n.kt)("wrapper",(0,a.Z)({},u,s,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"making-clients"},"Making Clients"),(0,n.kt)("p",null,"A Stardust client is at its core an executable that connects to a stardust server instance at ",(0,n.kt)("inlineCode",{parentName:"p"},"$XDG_RUNTIME_DIR/stardust-[0-32]"),", sends and receives messages according to the Stardust protocol."),(0,n.kt)("h2",{id:"rust"},"Rust"),(0,n.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,n.kt)("a",{parentName:"p",href:"https://rustup.rs/"},"rustup"),"). If you're unsure how to use Rust then a great guide is at ",(0,n.kt)("a",{parentName:"p",href:"https://doc.rust-lang.org/book/"},"https://doc.rust-lang.org/book/"),"."),(0,n.kt)("h2",{id:"stardust-xr"},"stardust-xr"),(0,n.kt)("p",null,(0,n.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,n.kt)("h2",{id:"fusion"},"Fusion"),(0,n.kt)("p",null,(0,n.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,n.kt)("p",null,"To get started, create a new Rust project using"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"cargo new\n")),(0,n.kt)("p",null,"and include the ",(0,n.kt)("inlineCode",{parentName:"p"},"stardust-xr-fusion")," dependency in your ",(0,n.kt)("inlineCode",{parentName:"p"},"cargo.toml"),". Documentation will be available at ",(0,n.kt)("a",{parentName:"p",href:"https://docs.rs/crate/stardust-xr-fusion/latest"},"https://docs.rs/crate/stardust-xr-fusion/latest"),"."),(0,n.kt)("h2",{id:"molecules"},"Molecules"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"stardust-xr-molecules")," is an even higher level widget library built on Fusion similar to ",(0,n.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,n.kt)("a",{parentName:"p",href:"https://docs.rs/crate/stardust-xr-molecules/latest"},"https://docs.rs/crate/stardust-xr-molecules/latest"),"."))}d.isMDXComponent=!0}}]); |