Multi-user playgrounds


made a couple of multi-user playgrounds, to test my free stuff, and make it easier to use.

Basic multi-user playground:
how to set your avatar, create shared objects, handle network events.

Multi-user world example:
load mesh, create terrain, set your avatar, and enter.

Fully-featured example:
Choosing an avatar and entering a multi-user world.
Audio/video streaming, WebXR, motion tracking and everything else featured on home page.


These projects are amazing!

1 Like

This is awesome!!!

Are the sources open source? can the rest of the community share them and use them? And is there some form of documentation for them?

1 Like

I’ll bookmark this page… :wink:

Yes would love to see any documentation you have on this. I’m building a babylonjs VR starter pack, and I definitely want to include multiplayer (see player’s positions) and then also sync world (e.g. if you have a mesh changing, everyone sees how the mesh is changing). I’ve done the first, but not the second. So curious to learn more about what you have going on here. Thank you!

1 Like

Thanks guys!
Everything is open source. Server and client API/lib written by me, published under Apache 2 license. All content is free, published by respective authors under Creative Commons Attribution license (mostly downloaded from sketchfab).
It’s mostly one-man band, and a handful of early adopters.
So there isn’t much docs and such yet, it all depends on interest of community really, so ask away, and contribute.
I’m progressing towards publishing a node package, could use a helping hand :slight_smile:
Wiki: Wiki - - Redmine
Project page:GitHub - jalmasi/vrspace: VRSpace: Multiuser Virtual Reality Engine

That’s the point of shared object in first playground here. Left sphere creates a shared dolphin, and anyone can change a single property - start/stop animation. Right sphere creates an owned dolphin, and only owner can change a property - position. In both cases, everyone sees the properties changing right away.
How to do that, you need to ‘install’ a custom event handler - function named propertyChanged.
Hopefully playground code makes it easier, if not, just ask.


… but since you asked for it, jsdoc and javadoc now linked straight from the front page: :slight_smile:


wayyyyy pumped to dig into this!


Sorry my ignorance of the following questions:

  • how many users can share a “world/space” simultaneously?
  • the entrance on a “world/space” can be limited?

Congrats for this great work, and thanks for share!

Thank you!
By default, number of users per space is not limited. There is a server parameter to limit that (maxSessions) that can be specified either in config file or command line. Users that hit the limit remain in the queue for configurable timeout (zero by default) until someone leaves. An error is raised on timeout
Practical limits are a different story, and that’s all about what you’re doing with it, and usually client side imposes the limit. Take this for example: VRSpace:Avatars This loads all 50 characters available on the server, 550MB of content. Works fine on my PC, but kills browsers on android devices, including Oculus.
So the server provides a tool to help with that, EventRecorder, briefly explained starting at 4:45 in this video: DIY Multiuser VR for the Web on Vimeo (it does not record audio/video)
Like, record yourself X times to simulate expected situation, measure, debug, optimize.
(note to self - another playground)

1 Like

Amazing thinking and effort. I absolutely love the concept. Will follow…

1 Like

@Josip_Almasi can you show us more Multi-user playground examples, like this one Babylon.js Playground? Thanks! :slightly_smiling_face:

@REX_DUNGEUR can you be more specific in what you’d like to see? That particular example doesn’t really explain anything, just loads all the content and scripts from
Regardless, sure I’ll add more, currently I’m working on screen sharing, will add that one over the weekend.
(actually the same playground already includes portal to classroom where you can share your screen, still buggy)