deathandmayhem / jolly-roger

Dead men tell no tales!
MIT License
18 stars 5 forks source link

Add Discord chat integration #321

Closed zarvox closed 3 years ago

zarvox commented 3 years ago

( depends on #320 )

I'm still not sure exactly what we want this to look like.

We could emulate the existing slack integration, and just have a single channel where we send announcements, new puzzle creation, and puzzle solved messages. This might be a good place to start.

We could also do some amount of programmatic chat bridging, either with the same unidirectional #firehose approach that we've done on Slack to date, or possibly we could look into trying something bidirectional and broken out by puzzle chat, since Discord doesn't have the same ToS limitations that Slack did.

quentinmit commented 3 years ago

I am skeptical that we should create one chat per puzzle. I think that could quickly get unwieldy (though I guess we could auto-archive channels when the puzzle is solved?)

We should consider creating voice rooms of some kind, though.

zarvox commented 3 years ago

We should consider creating voice rooms of some kind, though.

Were you thinking long-lived ones, or ones associated with specific puzzles? Having the former live in Discord seems plausible to me, but for the latter, I'm inclined to keep the audio calls within jolly-roger.

quentinmit commented 3 years ago

The former, definitely, but maybe also the latter. If we can pull off Discord it has video + screen sharing built-in which might be a good upgrade for some puzzles. I think there are some integration features that can let your "game" join people into voice channels automatically.

(But, definitely lower priority than all the other integration stuff.)

Have you had any thoughts about how to do audio calls within jolly-roger? Integrated Mumble? Something else?

zarvox commented 3 years ago

Have you had any thoughts about how to do audio calls within jolly-roger? Integrated Mumble? Something else?

Yes -- a WebRTC-backed mesh group call implementation. While my work-in-progress group call code (see https://github.com/deathandmayhem/jolly-roger/compare/webrtc-demo -- it's not a polished product, but more of a technology demo) does this for both video and audio today (and I've tested it successfully with four participants in a single call), I intend to scale it back to just audio, since I don't want to have to operate anything that deals with actual audio/video streams serverside, and doing a bunch of mesh video streams will eat more bandwidth than I want to rely on people having, and video isn't that critical anyway. Since audio streams use only a tiny fraction of the bandwidth that video streams do, I think we can make mesh WebRTC audio connections scale to a substantial number of users per call, without incurring overly burdensome load on our servers, or having to stand up and operate an AV mixer.

zarvox commented 3 years ago

All right, we've landed:

I consider this issue complete.