Constructing the Social VR Web
Gavan Wilhite
AltspaceVR
What new tech is being built
How our browser works
Why we work on the VR web
AltspaceVR
why we work on the VR web
our service
communicate with anyone on the planet in the most natural and fufilling way possible
many platforms
operating systems
headsets
many devices
controllers
body sensors
many people
over 150 countries represented
live events have audiences in the thousands
widespread access to high-quality VR
be together
do things together
people want information, applications, and games
in VR, people can
- meet
- discuss
- laugh
- attend
but they want more
they want the web
across all platforms, instantly, and safely
What does this look like?
Holograms Against Humanity
- three.js + socket.io + node.js
- 5,000+ games played last month
- open source
What makes it successful?
- humor
- encourages communication
- jump-in, jump-out
So, how does it work?
Traditional Browser
Browser
Engine
Game
Engine
+
VR Browser
=
+
Application
Browser
Engine
=
+
Application
We built a VR browser
and a SDK to make it easy to use
VR Web
Traditional
Browsers
+
Low-level
VR APIs
+
Polyfills
VR Browsers
+
High-level
VR APIs
two paths to the VR web
one incremental,
one experimental
both make sense,
given goals and starting points
Chromium
three.js
A-Frame /
<html></html>
game engine
application
scene
browser engine
web app
Implementation
Three.js Renderer
-
Three.js is renderer agnostic
-
So we wrote our own renderer
-
Converts the three.js scene graph to Unity objects
-
Supports a subset of performant materials
Javascript APIs
getUser()
// public information about the user
// useful for nameplates / highscores
getSpace()
// information about the space
// useful for persistence
getEnclosure()
// enclosure dimensions and scaling
// useful for reactive VR design
getThreeJSTrackingSkeleton()
// returns polled skeleton as fused from all body sensors
// useful for using the location of body parts as input
getGamepads()
// returns all gamepad-like input devices, including 6dof
// useful for game input or manipulation of objects
Have automatic access to
-
VOIP
-
Activities
-
Events
-
Avatars
-
Environments
Live on the web
-
Host at any URL
-
Use any backend
-
No gatekeepers
With the SDK,
you can make apps and games that
Fullspace
- Environments
- Decorations
- Immersive games
- Avatar-attached items
- Designed for VR
"Fullscreen"
Enclosed
- Tabletop games
- Visualizations
- Objects
- Interfaces
- Designed for VR or AR
"Windowed"
look for the
tick marks
AltPDB
- Visualize proteins
- Dynamically loads from RCSB PDB
- Multiple display modes
Live interactive lessons
- Content is synchronized
- Presenter can indicate parts of the molecule using body trackers
- Audience can ask questions
We've got the basics, but we want more
We want reusable, high-performance building blocks
What next?
The 2D web needed <textarea>, <image> and <iframe> as native building blocks
What are the equivalents for the VR web?
Building blocks
Native Components
NEW!
a new way to extend the web with native functionality
A-Frame
which brings us to the most important question..
Why is Brian on fire?
-
Built by Mozilla
-
Entity / Component / System
-
Uses Three.js
A bit about A-Frame
-
Implemented by the browser, rather than in Javascript
-
Directly access game engine features
-
Use platform infrastructure
-
Look for the "n-"
Native Components
<a-entity position="0.5 1.25 3" n-spawner="res:interactables/basketball">
Text
Object
Spawner
Collider
Native Components
Container
Sound
Skeleton
released from Beta today
Text
-
In-world or UI
-
Rendered natively with signed distance fields
Native Components
Common Grounds
- Conversation starter
- Required dynamic text
- Needed to stay in the background while not consuming resources
Native Components
Object
-
Pulls in a native 3D model
-
Growing library of free assets
-
Makes building apps / environments quick
-
Particle effects (like fire!) are popular
SVVR Poster
- SDF text + super resolution
- 3D graphic design with a text editor
- 12k screenshot sent directly to print shop
Check it out at the booth
- Tutorials running every day
- Meet developers hanging out in VR
- Pick up custom HaH cards
Native Components
Spawner
-
Rigidbody objects
-
Natively synced
-
Player lifespan
Fireball
- Built in a day
- No custom assets
- "Secure" high-score system
Uses a variety of components
- Object
- Text
- Spawner
Native Components
Skeleton
-
Attach objects to a unified tracking skeleton
-
Zero latency
-
Zero bandwidth overhead
-
Makes use of our exisiting avatar network traffic
Armory
- Super simple
- 100 lines of HTML
- Works with all body trackers
Native Skeleton
<a-mixin id="parent-to-head"
position="0 0.05 0.03"
n-skeleton-parent="part: head;"
sync
sync-n-skeleton-parent>
</a-mixin>
Native Components
Collider
-
Static bodies
-
Integrated with movement system
-
Supports arbitrary meshes
Crystal Cave
- Fullspace environment
- Great hack for being "underlava"
- Unveiled at a meetup
Native Components
Container
-
Counts how many objects are in a volume
-
Enables door triggers or lock / key setups
-
Internally solves many edge cases
-
Automatically synced via object synchronization
The Gauntlet
- Container around spikes..
- ..for very loud screams
Native Components
Sound
-
Spatialized
-
Placed at the entity transform
-
Ogg / MP3
Lost in Time
- Guided story
- Large environment
- Entirely A-Frame
Uses a variety of components
- Sound
- Particles (Object)
- Text
- Containers
- Colliders
Two brand new components!
Native Components
NEW!
Browser
-
Similar to <iframe>
-
Enables the placement of sub-apps
-
Useful for events and other fullspace apps
-
Creates browser-ception
-
Natively synchronized, parsed in layout phase
Native Components
NEW!
Portal
-
Instantly travel to elsewhere in the same space,
or to another space entirely -
Enables the creation of multi-space events
-
Use our interface, or customize it with your own
Can't wait to see what gets made
I'm excited
We've barely scratched the surface of what is possible
The tools are here, and getting better every day
The community is amazing
Developer Community
-
Outside of VR
-
Slack
-
Dev portal
-
-
Inside of VR
-
Collaboration sessions
-
Thursday meetups
-
let's build the future of the web together
work with us - jobs.altvr.com
join the community - developer.altvr.com
Constructing the Social VR Web
By Gavan Wilhite
Constructing the Social VR Web
- 142