oestrich

oestrich

Gossip, a cross game (text-based) chat platform

One of the cool things that has spun off of ExVenture is Gossip, located at https://gossip.haus/.

Gossip is a cross game chat platform for text games (aka MUDs.) Gossip uses websockets as the underlying protocol for servers to connect to. The protocol is heavily documented so that anyone can connect their game to.

While Gossip is a Phoenix application, it does not use normal channels so as to not force the Phoenix protocol on to other (possibly non-elixir) applications.

There are some pretty cool websocket things (I think) going on in this project and the corresponding Elixir client that I’ve written, located also on GitHub.

https://github.com/oestrich/gossip

P.S. The name gossip comes from MUDs where the main chat channel was called gossip.

First 7 of 7 Posts Switch mode

Ankhers

Ankhers

When naming this project, did you take into consideration the gossip protocol? It is a very well known protocol. If I were to see this project listed somewhere, I would think it was an Elixir implementation of it.

oestrich

oestrich OP

I did, but as far as I could tell there isn’t a specific implementation of a gossip protocol and was more of a generic term. So I went with it, I think it fits the theme of MUDs pretty well.

Qqwy

Qqwy

TypeCheck Core Team

Wooh! Very cool!

i love Multi-User Dungeons and I love what you’ve been building here. I’ll take some time to dig into the internals, because this is exactly my cup 'o tea. Thanks for sharing!

oestrich

oestrich OP

I launched a new piece of Gossip over the weekend called Grapevine. This part of Gossip is for players to go on and connect in game characters to their profile. The eventual plan is something akin to Xbox Live or the PlayStation Network, but for text based games.

To make this new site work, I have them plug into the normal websocket for games that then gets upgraded to have more events. The big set of events right now are the sync events. I just did a blog post about them and linked to some spots in each code base for how it works.

https://blog.oestrich.org/2018/10/gossip-sync-protocol

You can also find Grapevine on GitHub: GitHub - oestrich/grapevine: The MUD Chat Network · GitHub

oestrich

oestrich OP

Some new updates, Gossip now scrapes older games using the MSSP protocol to get player counts. This was pretty cool to write, there is a simple telnet client that parses out binary telnet options.

I’m also starting to work on achievements. I have the CRUD set up for them, and they’ll push over to Grapevine for display. It’s always really fun to get new things pushing across the backbone sync between Gossip and Grapevine.

Next I’ll be working on unlocking achievements for characters over on Grapevine, the fun part.

oestrich

oestrich OP

In the last month Gossip has been merged with and renamed to Grapevine. The split was fairly confusing so while it’s still early I went with combining the two sites.

Other news, I’m working on a general purpose telnet web client for older games. This uses an internal gen_tcp gen_server that processes the possible binary telnet options in the stream and then forwards the text to the web browser. I was also able to keep the session alive between browser reloads with a DynamicSupervisor.

https://s3.amazonaws.com/midmud/images/2019-01-31-grapevine-web-client.png

I also did this on my weekly live coding stream as well if you want to watch the supervisor part in action.

Something I still need to figure out is how to deploy a new release without taking down existing connections. I think this means I need to spin up separate nodes, having all of the telnet connections living on a separate note that rarely needs to be redeployed.

oestrich

oestrich OP

Since last week I’ve been able to add a set of generic gauges to the client, for games that support the GMCP protocol. The GMCP protocol is an out of band stream inside of a telnet connection. I’m hoping to do a blog post about the binary pattern matching that enables this parsing sometime in the next few weeks.

— All posts loaded —

Where Next?

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2977 91561 914
New
byu
@chrismccord : I just saw the Extract AGENTS.md from Phoenix.new into phx.new generator commit to the phoenix project. My initial shotgu...
New
arcanemachine
I was working on an Ecto migration and I needed a timestamp. So, for the nth time, I looked up the different data types for timestamps, a...
New
AstonJ
Just a general thread to post chat/news/info relating to AI/ML stuff that may be relevant for Nx now or in the future. Got anything to sh...
New
type1fool
I just stumbled on a newly redesigned elixir-lang.org. :tada: It looks like @Software_Mansion did the work, and I think it is generally a...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
alexslade
Fly’s CEO posted this recently - Turn And Face The Strange · The Fly Blog It says that Fly is going all-in on sprites, which is a worry ...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
akoutmos
@hugobarauna and I (Alex Koutmos) have been hard at work on writing a book on Nerves that takes you from simply blinking LEDs to building...
New
bjorng
We want to introduce a new native datatype to Erlang: native records. Although replacing all tuple records with native records is not our...
New

We're in Beta

About us Mission Statement