Building a MUD in 2020
Tags: python, ux, gamedev, webdev
Published: 2020-04-21 18:59:51

---
title: Building a MUD in 2020
published: true
date: 2020-04-21 18:48:50 UTC
tags: Python,UX,GameDev,WebDev
canonical_url: https://shriker.ca/building-a-mud-in-2020/
cover_image: https://shriker.ca/content/images/2020/04/image.png
---

Why the hell not? The MUD medium, also known as multi-user dungeon (aka multi-user dimension and multi-user domain), has been around for over 30 years.

My online science fiction game, [Shadowlack](https://shadowlack.com/), has been around since 2002. It turns 18 in July 2020. Why not _add_ another _30 years of life_ by turning aspects of it into a MUD?

Shadowlack has lived as a short story format forum-based game (play-by-post game). It has survived through a lot over the years and has a lot of "stickiness" due to the world-building aspect of the game. If you can dream it up, we can likely find a unique fit for it in the game world.

The Shadowlack world has gone through a wide variety of incarnations. The game concept began in 1997 as a series of drawn comic panels. "The Comic" was even confiscated by teachers a few times. It had over 2,600 individual panel drawings.

It made the transition from paper to web in 2002. It has seen life on ezBoard, Ikonboard, Invision Power Board, phpBB, completely custom software, as well as XenForo. What's next?

### Introducing Evennia

[Evennia](http://www.evennia.com/) is an open-source server, library and toolkit for building multi-player online text games. I chose Evennia for my MUD due to it being written in Python, and the fact that it is bare bones.

Evennia is not thread-based and runs using one process using Asynchronous I/O. It gives the _appearance_ of everyone operating at the same time even though it is using sequential code. This means that there can be no race conditions or things that happen due to weird timing. The main drawback of this is that we cannot take advantage of multiple processors. For a text-based game of this size, it is acceptable.

### Django Web Framework

[Django](https://www.djangoproject.com/) is being used as Shadowlack's ORM. I've been using Django for around six years now for various projects. The cool thing about using Django is that anything that I can normally do with Django, I can easily extend to Evennia.

### Fate Core

What about game mechanics? I am deviating away from more traditional MUD-like games (though not entirely MUSH-like) due to the more character-driven narrative nature of Shadowlack. I have been working on a "Shadowlack Core Book," and the rule system of [Fate](https://www.evilhat.com/home/fate-core/) fits with how Shadowlack is structured. Fate is designed in such a way that it allows for non-obstructive roleplaying and less fiddling with dice than a typical Dungeons and Dragons game. The idea here is to keep character adventure and development on the forefront.

Fate in a MUD environment? Whaaaaat.

![We're going there! Here's pyramid-style Fate-flavoured character skill point allocation for Shadowlack.](https://shriker.ca/content/images/2020/04/image.png)<figcaption>We're going there! Here's pyramid-style Fate-flavoured character skill point allocation for Shadowlack.</figcaption>

### Accessibility-First

Given that it's a text-based game, Shadowlack has always had a fairly high amount of sight-impaired players, as well as those with motor impairments (RSI, cerebral palsy, muscular dystropy, etc). Right out of the gate, all development is being done with consideration for screen readers and a wide range of assistive technology.

Everything is keyboard accessible, and follows WAI-ARIA Best Practices. Additionally a screen reader mode is available in the game client, and then some! Check out the [A11Y Project](https://a11yproject.com/) if this sort of development interests you. They also do a phenomenal job at [busting myths](https://a11yproject.com/posts/myth-accessibility-is-blind-people/).

![Accessible keyboard navigation.](https://shriker.ca/content/images/2020/04/shadowlack-keyboard-nav.gif)<figcaption>Accessible keyboard navigation.</figcaption>

![Toggling between dark and light site themes.](https://shriker.ca/content/images/2020/04/shadowlack-dark-light-1.gif)<figcaption>Toggling between dark and light site themes.</figcaption>

### Web Client

No client? No problem. You can access the MUD-portion of the game using a browser and a web-based WebSocket client that _mimics_ Telnet. Or you can connect using your favourite MUD client. It's up to you.

### Forum For Life

Shadowlack's forum is here to stay if the new (_old_) MUD aspect of the game is unappealing. The hundreds of thousands of existing stories have a forever home. Asynchronous roleplaying will remain possible. How the MUD client and forum will interact is not set in stone, but the major zones (countries, moons, etc) will be accessible in either medium.

### Full Stack Development Ahead

Believe it or not, this is the first _actual_ game that I'm developing. I feel as though many developers start in games and then shift over. I've been programming software for over 20 years now (in API integrations, UX, securing development environments, and security flows), and it's been cool to see how easy it is to pull all of the different moving parts together. It's exciting.

### Contributing

Shadowlack is a labour of love and is kept alive by the community. I've been the sole developer at Shadowlack for 17 years. If you're interested in contributing to the project, check out our [Patreon](https://www.patreon.com/shriker) or hop on our [Discord](https://shadowlack.com/discord). I don't plan on being the only developer forever... and creative writers are always welcome. 😉