Cross Game Chat

Hello, I am the developer behind Gossip which is a new-ish chat network. I recently became aware of AresMUSH and was interested in adding support for Gossip since I have a fairly large ruby background.

I did however just discover the Ares Central server, which seems to be very close to a companion site to Gossip, called Grapevine. Before I start looking into adding support I just wanted to say hello and see if this was something anyone would be interested in (since you seem to have something similar going on.)

Anyways, this is a pretty cool project and I hope to see you all around. :wave:

Hello and welcome. I looked through Gossip/Grapevine and that does look neat. I certainly would have no problem with someone doing a community plugin for games that want it, but I donā€™t think it would fit very well in the core system. As you surmised - we kind of already have our own Grapevine in AresCentral. It does player accounts, game directory, achievements, and (eventually - I havenā€™t implemented it yet) cross-game communication. Linking a game up to two different social hubs (with two different sets of player identities and game identities) seems kind of problematic.

Iā€™m curious what the rest of the community thinks though.

Cool, I was actually only going to add in cross game chat to start anyways! The piece of Grapevine that this uses is just the game directory part, so simply registering your game for Gossip syncs it over to Grapevine.

I have a very simple websocket client set up now that should do the core features of Gossip, so Iā€™ll give it a go integrating and if anyone wants to use it itā€™ll be available.

For reference here are the Gossip websocket docs https://gossip.haus/docs

This is also all open source if you want to peak at anything, itā€™s written in Elixir though.

1 Like

Starting to look at this again. I have a client using Faye as the websocket client to Gossip, which runs on event machine. Is there a nice way for plugins to inject extra stuff inside of event machine? I am not very familiar with it, but I found the spot where you run EM.

The gossip plugin would also need to include extra ruby packages, is this a typical thing plugins do?

The last big question is I recommend you echo local channels over to gossip and send gossip messages back over the local channel, in order to do this I think I would need to hook into the channels plugin and echo around there. Is there a better way to get around this? Also based on the amount of hooks it seems like I need into the core of the engine, is this a non-starter?

For reference the start of my ruby client to gossip: https://github.com/oestrich/gossip-ruby

Honestly, I do think youā€™re going to run into some difficulties due to the competing ā€œconceptsā€ of your implementation versus Ares. The fact that Ares already has a separate web portal and websocket communication with the game, the way the channel system works, etc. Thatā€™s not to say these challenges are insurmountable, but it may be too ā€˜invasiveā€™ to really be workable as a plugin, if that makes sense.

If you do want to pursue it, what I would suggest is hooking into the web portal, not the game engine. This would not require any additional ruby code at all, any EventMachine weirdness, etc. It would just use the gameā€™s existing interfaces. Here is the main controller for the Ares web chat, as an example.

I think I may have confused things a tad by mentioning websockets. The game itself will connect to Gossip via websockets as its standardized and has TLS. No browser should be connecting to Gossip as a game. So given this, I think it would need to be integrated into the engine and not the web portal, which looks like the controller you linked is running in the browser?

What I hope to do is see chat going on a configured gossip-linked channel and push to to gossip, and when chat comes back from gossip echo it on the internal channel. Other parts of Gossip can be expanded on after I get this working (it has remote tells and a few other player reporting events.)

I do recommend giving the docs a scan as it might help explain what Iā€™m trying to do. https://gossip.haus/docs

Ah, I misunderstood.

Then yes, that would require custom changes to the engine, which Iā€™m afraid IMHO would make it a non-starter. Engine changes are unadvised and unsupported (making it not something that many Ares games would want), and what youā€™re describing would require some pretty invasive code changes.

If there was a way for the individual web browsers to just subscribe to the chat channel (via Faye or whatever) or for a plugin to periodically get/send messages with poll-driven architecture, then it would be more workable.

Unfortunately gossip needs the live socket and canā€™t be polled, so I guess Iā€™ll stop working on this.

Oh well. When you do get around to implementing cross chat on your central platform, feel free to gloss over the docs for Gossip and steal any idea that looks good! Iā€™ll also probably be doing the same :smile:

Since the Ares cross-game chat will be going through a central server (AresCentral), perhaps there will be a way to get AC and Gossip to talk together. Something to consider for the future anyway, when I get around to doing that. Thanks for looking into it though!