Recent Posts

Grapevine Updates for October 2019

Posted on 31 Oct 2019

The last month of Grapevine has started work on a new part of Grapevine we're calling Decanter. This will be a place to share news about all things text.

I am also giving one of the keynotes for The Big Elixir next week and have been working hard on that. I hope to see you there (or maybe on YouTube when it's uploaded!)

If you're new please check out the ExVenture & Grapevine Patreon page and consider supporting to help pay for servers or get your own hosted instance of ExVenture!

Links for ExVenture & Grapevine:

Decanter

Decanter is a new part of Grapevine that will let you publish news about your game into a centralized place. Think of it as a new gaming news site that only covers text games, the best kind of games.

It's still under construction so it's hard to show what it looks like yet. I haven't really gotten the styles in place for it to be public. But if you're extra curious, you can download the latest Grapevine code and check it out locally.

The plan is for anyone to submit a news article, and one of our editors will review it and publish the post. Posts are done in markdown and you can preview before submitting them. I still need to let you optionally attach your game to a post. If you attach your game I'll be able to display it nicely so people know what they're reading about.

We're hoping that this leads to a better landing page for news and updates than say /r/MUD. This works well, but I think we can deliver a much better landing spot for people new to MUDs and looking to learn more and see what's out there.

Hacktoberfest

Grapevine was part of Hacktoberfest this year and I got a lot of great submissions! I was happy to see new people (or people at all!) submitting PRs and enhancing Grapevine.

Some of those include: - An updated settings sidebar which lists all of your games, removing the table of them - Analytics for events, so admins can see how many times they're viewed - Generating a session token for the web client for mobile app usage - Documentation updates and fixing broken seeds

Thanks again to everyone who submited a PR during October!

Small Updates

  • The HCL parser was renamed to UCL
  • UCL parses comments now

Social

We have a few new patrons this month, welcome! Thanks for supporting both ExVenture and Grapevine. If you would like to support both projects, check out the Patreon.

Titans of Text has had a lot of episodes come out. If you're in the MUD community and want to be on an episode, reach out to us! We want to have you on.

Once again, I'll be at The Big Elixir next week giving the keynote on Friday. I'll be talking about moving from an entirely stateless application to a stateful application using ExVenture and Grapevine as examples of you can achieve that. I think it's turning out to be pretty good so I hope to see you there.

Next Month

For next month, I'm hoping to wrap up the MVP of decanter and it loose on the world. I may also play around with some web client stuff again or actually get back into ExVenture. I've been having a lot of fun extending MidMUD for NaMuBuMo and it's made me feel nostalgic for working on ExVenture again.

Grapevine Updates for September 2019

Posted on 30 Sep 2019

The last month of Grapevine has picked up pace, I've been working through a lot of little things here and there to get back into the development groove.

If you're new please check out the ExVenture & Grapevine Patreon page and consider supporting to help pay for servers or get your own hosted instance of ExVenture!

Links for ExVenture & Grapevine:

Mobile Client

I started on a mobile client for Grapevine. This uses react native and connects similarly as the web client. This means it will proxy everything through my servers. I am going to head this route because it will be significantly less development to have a web client and a mobile client going if they use the same telnet backing code.

I haven't spent a ton of time of it yet, but after a few hours I have it connecting, displaying, and sending text to a real game. It's pretty encouraging.

Grapevine's mobile client

Hosted Sites

I spent a bit of time working on the settings for a hosted site. I mostly wanted to figure out how to allow for safe markdown display based on input from anyone. I got this working by finding a library that will strip text down to only markdown allowed tags.

See Spigot's hosted site.

Spigot's hosted site

IO Lists

After ElixirConf this year I switched Spigot to using IO lists instead of strings. This got a pretty great speed boost, which you can read more about on the SmartLogic Blog.

Small Tweaks

  • Receive an alert anytime your game has a failed scrape
  • Admin panel for channels
  • Fix bug when creating a new game and adding an image
  • gossip-elixir is on latest telemetry
  • API for the games page
  • Record timestamp of activity through the web client
  • Social fields on a game
  • Generic events
  • List current events on the homepage
  • Display the play button even when signed out
  • Rate limit channel sends

Social

We have a few new patrons this month, welcome! Thanks for supporting both ExVenture and Grapevine. If you would like to support both projects, check out the Patreon.

Titans of Text has had a lot of episodes come out. If you're in the MUD community and want to be on an episode, reach out to us! We want to have you on.

Next Months

Next month is NaMuBuMo, so I will hopefully be working on a world for that. I've been playing around with a file based format for running a game, as a twist to ExVenture. We'll see if it sticks, but I like where it's headed.

Grapevine Updates for June - August 2019

Posted on 28 Aug 2019

The last few months of Grapevine has been fairly slow, but I'm getting back around in the swing of things and finally feel like I have enough small things to talk about in an update post!

If you're new please check out the ExVenture & Grapevine Patreon page and consider supporting to help pay for servers or get your own hosted instance of ExVenture!

Links for ExVenture & Grapevine:

New Game Stats

The most recent additions are new statistics for games that have MSSP or are connected to the web socket. There are three new graphs: the last 48 hours with min/max/average, the last 7 days of player counts, and the last 7 days broken up into hour of day to show the min/max/average of connected users per hour.

These are pretty neat to see with real statistics. You can see player count fluxuate as they come and go during the day and night. I'm looking at adding more historical data as well, but there is only ~8 months of data on the server so there isn't a huge use right now until more data builds up.

Below is a screen shot of the later two charts:

Grapevine game statistics

New Web Chat Client

During June, I updated the web chat client to not suck. I'm pretty sure it was broken sometime after the merge of Gossip and Grapevine and no one noticed, me included. It is now much nicer, and looks very similar to the web client for playing games.

This merges the tab interface previously in place, to show a single stream across all channels, which is fairly similar to what you'd be expecting in a game connection. You can see which channel you're chatting in with the select box next to the text area. You can swap channels by doing using a slash command to prefix your message (e.g. /gossip hello, to switch to the gossip channel and say hello.)

Grapevine web chat

Small Tweaks

  • Discord link for game profiles
  • Breaking apart the data layer into a separate application
  • Records chat messages for reply in the web chat
  • Connect/disconnect buttons in the web client
  • Hide players in the socket connection
  • Nicer error for web client is enabled for signed in users only
  • Save web client sessions for viewing length in the admin

Social

We have a few new patrons this month, welcome! Thanks for supporting both ExVenture and Grapevine. If you would like to support both projects, check out the Patreon.

Titans of Text has had a lot of episodes come out. If you're in the MUD community and want to be on an episode, reach out to us! We want to have you on.

Next Months

I'm still starting to slowly get back into growing Grapevine again and I don't want to jump too deep back into it to completely burn out. So I'll most likely keep doing small tasks and possibly work on some clustering stuff from before as that's pretty exciting.

Grapevine Updates for May 2019

Posted on 31 May 2019

The last month of ExVenture and Grapevine continued the pace of last month, mostly continuing work on the web client and test server.

Links for ExVenture & Grapevine:

Modals

New to the web client are modals. These are sent as a known GMCP message that opens up a modal. The text is processed as ANSI escape codes for coloring and acts as a draggable terminal for now.

There are more plans in the future but I got it working at all and kept moving on. I would like to make this be stylable from the game, to enable some pretty cool flows. Letting users have a wizard of prompts, receiving input, button presses, display images, etc. Lots of cool things can be done here and done fairly generically from the game's perspective, so another client like Mudlet can have a package that does the same.

Grapevine web client with modals

Color Processing

I completely rewrote the color processing part of the web client. Before I was using Anser and in a fairly bad way. Partially sent escape codes didn't process properly and I wasn't merging the buffer after processing it. It was a stop gap that worked well enough to get where we're at.

The rewrite is a fully custom parser utilitizing small bits from Anser (namely the really ugly regex to parse the escape code properly.) Past that it handles parse errors and merging new text in to update the last line. All of the lines except for the last line are considered "sealed" and that lets react not have to re-render anything once it renders. This keeps the parse and DOM updates to a minimal.

So far this new parser is very fast, sticking to about 0.3ms for each step. I am pretty happy with this and may pull it out into its own package.

ExVenture

Movement is starting on ExVenture again. I fixed a few bugs for a new patron that picked the hosting tier. While fixing those bugs, the itch to work on ExVenture again popped up. I am starting to plan out some refactors I can do to help bring in some ideas from Spigot into the main project.

I'm hopeful that Grapevine will slow down and I can get back to some minor refactors.

Small Tweaks

  • Grapevine, Send the user's real IP if enabled for a game
  • Grapevine, Load speech synthesis voices and display, starting on text to speech
  • Grapevine, Detail list for events
  • ExVenture, Fix some bugs around Character.Simple
  • ExVenture, Fix changing your password

Social

We have a few new patrons this month, welcome! Thanks for supporting both ExVenture and Grapevine. If you would like to support both projects, check out the Patreon.

Titans of Text has had two more episodes come out. We talked with Griatch from Evennia and Janey from Stillborn. These were both great episodes and we have some really exciting ones lined up. It's pretty great to have a fairly large backlog of people to talk to.

I have also continued streaming over on Twitch every Monday at 12 PM EST doing ExVenture or Grapevine development. Join me over at https://www.twitch.tv/smartlogictv.

I am also going to be one of the keynote speakers for The Big Elixir this year, talking about ExVenture. I am very excited for this and I hope to see you there!

Next Month

Next month I'm thinking I'll start working on the chat side of Grapevine, making that nicer and more in line with the web client. More advanced features of the web client may be on hold for a brief period, but I may also get pulled back in as this is the part of Grapevine that people use. I would like to start some small refactors of ExVenture as well.

Grapevine Updates for April 2019

Posted on 30 Apr 2019

The last month of ExVenture and Grapevine continued the pace of last month, mostly being touch ups, and the addition of a new test server.

Links for ExVenture & Grapevine:

Spigot

I started on a new test server to easily send new GMCP messages without needing to modify ExVenture to properly send the events I am looking to act on in Grapevine.

I am also using this as an opportunity to better layout a game server using some better principles learned with more Elixir development time. Commands now act as controllers, keeping light and mostly rendering "views" back to the telnet session. I'm playing around with a better layout for internal processes as well. I'm pretty happy with the direction this is headed, and I might do a deeper blog post soon.

OAuth & Telnet

As part of Spigot, I finally got an initial dream for Grapevine working. You can click "Play" in Grapevine and be signed into a MUD using OAuth of sorts. It takes the standard OAuth flow and shoves it into the telnet IAC flow. TLS is required for this to work in order to keep things more secure.

Sample flow:

Server: IAC DO OAUTH
Client: IAC WILL OAUTH
Client: IAC SB OAUTH Start {host: "grapevine.haus"} IAC SE
Server: IAC SB OAUTH AuthorizationRequest {response_type: "code", client_id: "...", 
  scope: "...", state: "..."} IAC SE
Client: Requests confirmation from the user, displays a standard OAuth request asking
  for scopes and the connection
User: Approves request
Client: IAC SB OAUTH AuthorizationGrant {state: "same as above", code: "..."} IAC SE

Server then goes through standard OAuth

See the current draft spec on a gist.

Web Client

I was able to get around to letting you pick the font and font size for the web client. It doesn't save yet, so each session you need to tweak it. I got part of the way through saving preferences and then was side tracked and haven't gone back yet.

I am getting very close to starting to add cool things to the web client, such as modals, sound, and text to speech. I keep stalling in Spigot, trying to get it to a nice spot. Its in a good enough place that I can go back to working on the reason it exists, extending Grapevine!

Small Tweaks

  • Event listing page
  • Homepage featured games
  • About page
  • Site map
  • Contact form
  • LiveView for concurrent player counts
  • Discourse SSO
  • Invalid byte in the JSON stream
  • Web client play button logic fix
  • Socket connections should enable the player graph
  • TLS cert pinning for self-signed certs
  • Langing page after registration

Social

We have a few new patrons this month, welcome! Thanks for supporting both ExVenture and Grapevine. If you would like to support both projects, check out the Patreon.

Titans of Text has had two more episodes come out. We talked with DarkWind and Sindome. A few more episodes are already lined up, they should be pretty good ones. We're finally on all of the podcast aggregators including iTunes.

Grapevine also got a forum which uses your Grapevine login to sign into. If you're looking for a place for more long-form discussions around MUDs, this is the place.

I have also continued streaming over on Twitch every Monday at 12 PM EST doing ExVenture or Grapevine development. Join me over at https://www.twitch.tv/smartlogictv.

Next Month

Next month I would like to start working on more advanced features for the web client. I am starting with modals, and possibly adding in sound or text to speech next. I'm sure I'll keep working on Spigot as well, smoothing out that while it's still small. I would really like to start develing into ExVenture again. It's been too long since I worked on it.

Creative Commons License
This site's content is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License unless otherwise specified. Code on this site is licensed under the MIT License unless otherwise specified.