Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi User Support #163

Closed
TheBricktop opened this issue Aug 26, 2021 · 6 comments
Closed

Multi User Support #163

TheBricktop opened this issue Aug 26, 2021 · 6 comments
Assignees
Labels
feature request Request to alter functionality help wanted Extra attention is needed
Milestone

Comments

@TheBricktop
Copy link

Hello,
im thinking about adding networking to openbrush, probably using mirror networking or something easier like osc for starters.
How one could tackle synchronizing the painting area? By recording brush moves and passing them as a series of vectors with params or as a obj string?

@mikeskydev
Copy link
Member

Hi!
There's a small group of us that are also really interested in adding networking. There's a channel in our Discord where we've discussed and some investigation has been made, but no one's got particularly far https://discord.gg/xNFSVUdP42

Multibrush of course has the multiplayer capability, but is unfortunately closed source and using a closed source networking library.

Library choice is one of the main things to figure out. Personally, I'd like something that can be self hosted and run easily by anyone, to preserve this functionality as much as possible. It should support online matchmaking and rooms for general use, but also configurable to target a server on the local network for setups such as schools and museums, where internet access may not be as simple as a home user.

Some packages also have open source client libraries but closed source servers, which I feel is not the correct path either.

Members of the Tilt Brush team have spoken about unreleased multiplayer prototypes, and how they went about implementing the sync:

The code for the multiplayer prototype was fairly simple: serialize Command and squirt it across the network to a relay that bounced them reliably to all other people who joined the channel. Do a continual distributed leader election to decide a leader. On join, ask for the undo history and the leader sends it to you

https://discord.com/channels/783806589991780412/803681768049737799/803760281066930256

Command is referencing this class https://github.com/icosa-gallery/open-brush/blob/main/Assets/Scripts/Commands/BaseCommand.cs

@mikeskydev mikeskydev added enhancement Feature added help wanted Extra attention is needed labels Aug 26, 2021
@mikeskydev mikeskydev changed the title Networking implementation Multi User Support Aug 26, 2021
@mikeskydev mikeskydev added feature request Request to alter functionality and removed enhancement Feature added labels Aug 26, 2021
@andybak
Copy link
Contributor

andybak commented Aug 26, 2021

There's a useful discussion starting here: https://discord.com/channels/783806589991780412/804251629993197618/859193005286359080

I copied parts of it into the developer notes which lots of other useful pointers in it: https://docs.google.com/document/d/1BLKHNDjp-hZ8Ju03PhdU1crLOxURB14BtId8YKCp3tk/edit

@Daniel-Fan has also done some work on recording and replaying the avatar head and hands that might feed into this: https://github.com/Daniel-Fan/open-brush/tree/add-strokeIndicator

@billyquith
Copy link

Need to move to Unity 2020: #135

@mikeskydev mikeskydev added this to the Post 2.0 milestone Aug 9, 2022
@mikeskydev mikeskydev self-assigned this Jul 12, 2023
@gabrieldevsouza
Copy link

Is this still in progress?

@mikeskydev
Copy link
Member

Absolutely 😀

@mikeskydev mikeskydev modified the milestones: Future Roadmap, 3.0 Sep 21, 2023
@mikeskydev
Copy link
Member

The baseline pass of the multiplayer stack has been implemented, so I'm going to close this in favor of mini issues for the remaining tasks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request Request to alter functionality help wanted Extra attention is needed
Projects
Development

No branches or pull requests

5 participants