Skip to content
Snippets Groups Projects
README.md 3.15 KiB
Newer Older
Greg Fodor's avatar
Greg Fodor committed
[![Build Status](https://travis-ci.org/mozilla/hubs.svg?branch=master)](https://travis-ci.org/mozilla/hubs)
Robert Long's avatar
Robert Long committed

A prototype client demonstrating a multi-user experience in WebVR. Built with
[A-Frame](https://github.com/aframevr/aframe/)
Brian Peiris's avatar
Brian Peiris committed
## Getting Started
To run the client, run:
Greg Fodor's avatar
Greg Fodor committed
git clone https://github.com/mozilla/hubs.git
cd hubs
npm ci
npm start
```

## Building Static Files

To bundle javascript and generate the html templates, run:

```sh
npm run build
Greg Fodor's avatar
Greg Fodor committed
## 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.

Brian Peiris's avatar
Brian Peiris committed
See `.env.defaults` for the full set of environment variables that can modify
Greg Fodor's avatar
Greg Fodor committed
Hubs' behavior at build time.

Greg Fodor's avatar
Greg Fodor committed
## hubs.local Host Entry

When running the full stack for Hubs (which includes [Reticulum](https://github.com/mozilla/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.

Brian Peiris's avatar
Brian Peiris committed
## Query Params

Brian Peiris's avatar
Brian Peiris committed
- `allow_multi` - Allow multiple instances off the app in the same browser session
- `enable_screen_sharing` - Enable screen sharing
- `accept_screen_shares` - Display screens shared by other users
- `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
Greg Fodor's avatar
Greg Fodor committed
- `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.
Greg Fodor's avatar
Greg Fodor committed
- `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.
- `disableTunnel` - Tunnel vision is on by default. Disable the tunnel vision by this parameter.
Brian Peiris's avatar
Brian Peiris committed

Greg Fodor's avatar
Greg Fodor committed
## Additional Resources

* [Reticulum](https://github.com/mozilla/reticulum) - Phoenix-based backend for managing state and presence.
* [NAF Janus Adapter](https://github.com/mozilla/naf-janus-adapter) - A [Networked A-Frame](https://github.com/networked-aframe) adapter for the Janus SFU service.
* [Janus Gateway](https://github.com/meetecho/janus-gateway) - A WebRTC proxy used for centralizing network traffic in this client.
* [Janus SFU Plugin](https://github.com/mozilla/janus-plugin-sfu) - Plugins for Janus which enables it to act as a SFU.
* [Hubs-Ops](https://github.com/mozilla/hubs-ops) - Infrastructure as code + management tools for running necessary backend services on AWS.

Brian Peiris's avatar
Brian Peiris committed
[![Waffle.io - Columns and their card count](https://badge.waffle.io/mozilla/socialmr.svg?columns=all)](http://waffle.io/mozilla/socialmr)