Duck-themed multi-user virtual spaces in WebVR. Built with A-Frame.
Clone or download
Latest commit 17391df Dec 12, 2018

Build Status

The client-side code for, a multi-user experience in WebVR. Built with A-Frame.

Getting Started

To run the client, run:

git clone
cd hubs
npm ci
npm start

Then visit https://localhost:8080

Note: When running the Hubs client locally, you will still connect to the development versions of our Janus WebRTC and reticulum servers.

Building Static Files

To bundle javascript and generate the html templates, run:

npm run build

Sharing Your Changes

When running a local copy of Hubs as-is, you'll use Mozilla's "dev" Reticulm and Janus servers for storing your room information and relaying messages between users in the room.

This also means you can upload a modified copy of Hubs to a hosting provider as-is, and use it without having to set up your own servers. Simply run:

npm run build

and then upload the files in the dist folder to your hosting provider.

If you are running your own servers, you can modify the environment variables JANUS_SERVER and RETICULUM_SERVER when building to point Hubs to your own infrastructure.

See .env.defaults for the full set of environment variables that can modify Hubs' behavior at build time.

hubs.local Host Entry

When running the full stack for Hubs (which includes Reticulum) locally it is necessary to add a hosts entry pointing hubs.local to your local server's IP. This will allow the CSP checks to pass that are served up by Reticulum so you can test the whole app.

Query Params

  • allow_multi - Allow multiple instances off the app in the same browser session
  • avatar_scale - Scale your self!
  • quality - Either "low" or "high". Force assets to a certain quality level
  • mobile - Force mobile mode
  • no_stats - Disable performance stats
  • vr_entry_type - Either "2d", "vr", or "daydream". Used internally to force a VR entry type. Add "_now" to the end of the value to skip the audio check.
  • disable_telemetry - If true disables Sentry telemetry.
  • log_filter - A debug style filter for setting the logging level.
  • debug - If true performs verbose logging of Janus and NAF traffic.
  • debug_log - If true, enables an on-screen debug log and console. Useful for debugging on mobile devices.
  • disableTunnel - Tunnel vision is on by default. Disable the tunnel vision by this parameter.

Additional Resources - Columns and their card count