Introducing The Island Collective A Social VR Canister
I am psyched to show you the first version of The Island Collective, our vision of what a truly decentralised VR experience, built on the Internet Computer, can look and feel like.
The Island - an immersive tropical paradise - has a few features that we’re really proud of. First is the general soothing vibe, with shallow waters, low light and chilled soundscape. It has been carefully optimised for VR so the experience feels smooth and responsive, while keeping the textures detailed and interesting.
Here’s the canister address https://bhl72-pyaaa-aaaai-qiefq-cai.raw.ic0.app/
On the Island you will find a beacon that lets you connect to the (p2p) network. This arrangement has a hand panel for interaction, a screen with information and a beacon that shows one of four states, indicating the connection status:
When people connect, you’ll see their avatars appear and move about. If you’re in VR, the hand positions and (colour-coded) pointers are also shown. There are also a few shared objects in the scene (footballs, basketballs and Borg cubes) which you can throw to each other.
Over the next months we will be adding new locations (such as a bowling alley) integrating other IC projects (such as Plug wallet) and extending the communication tools (audio channels, files).
Our roadmap shows highlights from the project plan, which will be published in more detail. We take a very pragmatic view to development and have structured our current project plan to make it realistic and achievable. We keep some time for dreaming, however, and have plenty of extra features, funny objects and unexpected twists lined up for the rest of the year.
Notes on Networking
For the multiplayer network we have chosen to use WebRTC, a peer-to-peer network that transmits data from one browser to another. This has a couple of challenges, but represents our dedication to a decentralised architecture. It is our first framework for sharing objects on the p2p network, and special effort has gone into making it scalable as we increase the room capacity (currently set at 6).
There is a signaling server that helps browsers to meet one-another, and we have open-sourced this code as part of the development. See this link. The signaling server is not yet on a canister, but I plan to move it there soon, once a couple of other tasks are completed.
The client uses STUN and TURN servers, using ‘stun:stun.l.google.com:19302’ (to be phased out) and ‘turn:openrelay.metered.ca:443’ (recently phased in), respectively. The signaling server uses an NGINX reverse proxy and the communication happens with sockets. I will soon be releasing the WebRTC code for a Unity-React App, which will be compatible with both IC Gallery’s WebGL template and other non-Unity applications that want to add p2p networking.
Notes on Physics
Under the hood, there is the Unity game engine, a custom WebXR implementation, as well as an interaction / physics system built from the ground up. All the shared objects have realistic estimations of geometric and material properties and the VR interactions derive their force from sliding-window estimations of momentum and torque.
An Important Acknowledgement
None of this would have happened without the DFINITY grant program and its team, which not only sponsored the initial prototype (ICPlaces), but showed continuous belief and support for our plans. A huge thank you to @alexa.smith @ililic @fulco and, of course, every single engineer at DFINITY that helped make this a (virtual) reality.