Playing in the MUD

For the last year or so, Jena and I have been collecting components to build ourselves some gaming PCs. Early in our marriage we spent a lot of time playing Unreal Tournament, Quake, Urban Terror, etc.

Unfortunately, the current market for high-end GPUs is beyond ridiculous. We got tired of waiting for what we wanted (at anything approaching retail price), so we ordered a pair of GeForce 750s for dirt cheap.

Now we're gaming, but we rekindled another old love: text-based MUD gaming.

It's been 20-odd years since we spent a lot of time mudding together, but the client landscape seems to have shrivelled up. I used to play with tinyfugue, but that has gone the way of Detroit, it seems, so I was hoping to find something to replace it.

I found a client written in Rust called BlightMUD. It's pretty capable. Looks nice, is reminiscent of tinyfugue in a way, but I feel like some messages go missing and sometimes the rendering gets goofed up.

Another hangup is that the scripting language is Lua. I've never had (and continue to not have) any desire to learn Lua. I don't know why. But it's just not something I'm interested in.

So how to script in a language I enjoy if it's not supported in the client I'm trying to use?

Well, I stumbled across a project called pycat. It's basically a proxy that sits between your client and the server. It allows you to do all your scripting in the proxy, so it doesn't matter what client you have.

Unfortunately, it has a lot of poorly documented functionality and I was in a hurry to get up and running, and most unfortunately, it seems to swallow certain keypresses. has a paging interface for their help pages, which have options like

`[Return or (C)ontinue, (B)ack, (Q)uit]”`

but pycat does something (that I haven't figured out) that munges up that functionality.

So, naturally, I'm writing something myself. In OCaml.