Skip to main content

Babylon.js Client

This client serves to be a generally accessible and usable client to use with games and worlds.

It also serves as an example of how to use the Vircadia World SDK in a web application using Babylon.js.

Configure​

vircadia.browser.config.ts
import { z } from "zod";

// Browser Client environment schema
const clientBrowserEnvSchema = z.object({
// Web Babylon JS Client
VRCA_CLIENT_WEB_BABYLON_JS_DEBUG: z
.union([
z.boolean(),
z
.string()
.transform(
(val) => val === "1" || val.toLowerCase() === "true",
),
])
.default(false),
VRCA_CLIENT_WEB_BABYLON_JS_SUPPRESS: z
.union([
z.boolean(),
z
.string()
.transform(
(val) => val === "1" || val.toLowerCase() === "true",
),
])
.default(false),
VRCA_CLIENT_WEB_BABYLON_JS_DEBUG_SESSION_TOKEN: z.string().default(""),
VRCA_CLIENT_WEB_BABYLON_JS_DEBUG_SESSION_TOKEN_PROVIDER: z
.string()
.default("system"),

VRCA_CLIENT_WEB_BABYLON_JS_META_TITLE_BASE: z.string().default("Vircadia"),
VRCA_CLIENT_WEB_BABYLON_JS_META_DESCRIPTION: z.string().default("..."),
VRCA_CLIENT_WEB_BABYLON_JS_META_OG_IMAGE: z
.string()
.default("/brand/logo_icon.webp"),
VRCA_CLIENT_WEB_BABYLON_JS_META_OG_TYPE: z.string().default("website"),
VRCA_CLIENT_WEB_BABYLON_JS_META_FAVICON: z
.string()
.default("/brand/favicon.svg"),

VRCA_CLIENT_WEB_BABYLON_JS_APP_URL: z
.string()
.url()
.default("https://app.vircadia.com"),

VRCA_CLIENT_WEB_BABYLON_JS_DEFAULT_WORLD_API_URI: z
.string()
.default("localhost:3020"),
VRCA_CLIENT_WEB_BABYLON_JS_DEFAULT_WORLD_API_URI_USING_SSL: z
.union([
z.boolean(),
z
.string()
.transform(
(val) => val === "1" || val.toLowerCase() === "true",
),
])
.default(false),

VRCA_CLIENT_WEB_BABYLON_JS_PROD_HOST: z.string().default("0.0.0.0"),
VRCA_CLIENT_WEB_BABYLON_JS_PROD_PORT: z.coerce.number().default(3025),

// Development Web Babylon JS Client
VRCA_CLIENT_WEB_BABYLON_JS_DEV_HOST: z.string().default("0.0.0.0"),
VRCA_CLIENT_WEB_BABYLON_JS_DEV_PORT: z.coerce.number().default(3066),
});

// Parse client environment variables
export const clientBrowserConfiguration = clientBrowserEnvSchema.parse(
// Fix TypeScript error with appropriate typing
(typeof import.meta !== "undefined"
? (import.meta as { env?: Record<string, unknown> }).env
: undefined) ?? process.env,
);

Development Environment​

VSCode + Volar (and disable Vetur).

Type Support for .vue Imports in TS​

TypeScript cannot handle type information for .vue imports by default, so we replace the tsc CLI with vue-tsc for type checking. In editors, we need Volar to make the TypeScript language service aware of .vue types.

Customize configuration​

See Vite Configuration Reference.

Project Setup​

bun install

Compile and Hot-Reload for Development​

bun dev

Type-Check, Compile and Minify for Production​

bun run build