Evennia: a modern way to create MU*s

ko-fi Written by Andruid
The yellow-and-teal Python logo and the text: Evennia the open-source MU* creation system written in Python.

Learn about Evennia, the Python MU* creation system, from Griatch, the developer who's been working on the project for more than a decade.

Table of Contents

    Today’s post is an interview with Griatch, the developer who maintains the Evennia codebase.

    If you’ve been keeping up with the blog, you know this isn’t the first interview to mention Evennia. Jumpscare, Lucien, Opie, and Alora each had positive things to say about the system.

    I’ve also personally spent some time coding in Evennia, and I can definitely say it’s been a fun way to learn Python and tinker with systems.

    Whether you’re looking for a codebase to start your own multi-user (MU*) game, or just curious about the Evennia project, I hope you enjoy today’s interview!

    Meet Griatch, Evennia’s Maintainer

    Born and raised in Sweden, Griatch works as a senior engineering manager at an IT company, but you might be surprised to discover that he also has a background in astrophysics.

    “My field was computer modeling of the regions around new-born stars where planets form,” he told me.

    This early work with computers is what got him interested in programming, but along the way, he’s also picked up quite a few hobbies.

    He creates music and writes books, for example. And for the past 20 years, he’s been making digital paintings.

    “I only use open-source software, originally starting out in GIMP. Over time, I have gradually been switching to MyPaint and now Krita for my art,” he said.

    Digital painting of a creature in a red robe pulling a sleigh full of presents with a snowy landscape in the background.
    The Sleigh Trip, a Christmas Card painted by Griatch (used here with his permission). To view more of his awesome artwork, check out his gallery on DeviantArt.

    As for how Griatch got into the world of MU*s, he admitted that he’s relatively new to the niche.

    “I never played them during their heyday in the ’90s and early 2000s. Rather, I am a long-time tabletop roleplayer and game master. Over time it became harder to get a group together, so I was looking for other outlets.”

    He tried an RP server on World of Warcraft but found the roleplaying stifled by the technical limitations of the game. He also tried a play-by-post forum game, but that wasn’t quite what he was looking for, either.

    It wasn’t until around 2008 that Griatch found his first RP MUD. It had just the right blend of storytelling and mechanics.

    “To this day I hold that, short of having a video call with a human game master, MUs represent the best roleplaying experiences you can get online.”

    From playing a MU* to developing a MU* engine

    Quote by Griatch, pulled from the text.

    Being a programmer, it didn’t take Griatch long to go from trying a MUD to wanting to make his own. He looked around at the open-source resources available but ultimately wanted something that would allow him to focus fully on development using Python.

    “Most existing Python MU* projects were very rough or abandoned at the time,” he said.

    For a while, he tried refactoring a Python MUSH project, but the more time he spent with the code, the more he realized that rather than using Python to implement a different language (MUSHcode), he wanted to have an engine where Python could be used for everything.

    That’s when he came upon Evennia.

    “Evennia was originally created by an American named Greg Taylor back in 2006,” said Griatch. “I started contributing to the server, and as Greg’s life got too busy, I took over the development of Evennia in 2010. I think it’s safe to say that there’s very little left of the original code at this point, but the general principles remain.”

    These days, Griatch’s goal of creating his own MU* has taken a backseat to his work on Evennia, though he still has lots of ideas.

    “As the Evennia maintainer, my main responsibility is to keep the project going – to provide direction, fix bugs, and of course add new features,” he said.

    “In addition, I write most of the documentation and tutorials, which is an important aspect of making it so that people can use the system.”

    Evennia: an open-source MU* creation system written in Python

    Welcome to Evennia! The Python MUD/MU* creation system. You are looking at the start of your game's website, generated out of the box by Evennia. It can be expanded into a full-fledged home for your game.
    Evennia and its default website. On the right, it’s being accessed by two installed MUD clients (tintin++ and Mudlet), as well as the included HTML5 web client.

    In Griatch’s words, Evennia is an open-source Python MU* creation system.

    “Creation system” is a description I rather like, because it’s a bit more explanatory and less jargony than calling it a “codebase.”

    With Evennia, you get a fully functioning but empty MU* game. It comes out of the box with all the essential parts needed to run your own MUD/MU*, such as networking components, interfaces, and foundational structures for accounts, characters, rooms, and objects.

    It also comes with a functioning website and a built-in browser-based client, which removes the need to build either of these things from scratch.

    “Unlike many other MU* platforms, Evennia was not branched off a specific game, so it doesn’t impose a specific game system (combat, magic, races, etc.) on your project,” said Griatch.

    “We assume you’ll want to make your own anyway. Instead, we provide a large library of community-supported contribs you can optionally pick from and build on if you want.”

    Contribs are optional code snippets and systems contributed by the Evennia community.
    Evennia’s Contribs page, which lists available code snippets and systems that you can drop into your game rather than build them from scratch. For example, a bartering system.

    This means you don’t have to learn, rewrite, or refactor anyone else’s custom code in order to implement the systems and type of game you want. And using systems designed by someone else is completely optional.

    Some things to note if you’re thinking about using Evennia:

    • Evennia is meant for game creators who want flexibility over the game they create.
    • Evennia supports a modern developer experience, where you use a proper code editor, version control, and object orientation.
    • All code is written in Python, which is relatively easy to learn compared to other programming languages (for example, see the interactive Python tutorial).
    • And because it’s written in Python, you’ll have full access to Python’s vast ecosystem of third-party resources.
    • You will implement your game by overriding Evennia’s base classes and telling Evennia where to import your own code from.

    If you’ve never worked with a codebase before, it’s helpful to know that for many of them, once you start customizing the code, it can be quite difficult to update it to a newer version so that you can enjoy the latest fixes and improvements.

    With Evennia, due to the way you will implement your own or contributed systems, it’s much easier to update without breaking your game. And when there’s a change that might have a bigger impact, the documentation is there to guide you through it.

    In fact, making it easy to update Evennia is something that Griatch tries to keep in mind when introducing changes. It’s one of many lessons he’s learned over the years.

    “Fixing quirks must be balanced against how much doing so would affect existing users,” he said.

    Evennia’s documentation and source code

    Speaking of documentation, something else that sets Evennia apart is the way it’s documented.

    “Evennia’s core code is written to be read, and we also have some of the most extensive documentation in the MU* world,” Griatch explained. “For this reason, we have a lot of community members using Evennia as a fun way to learn Python and general programming from scratch.”

    And I’m one of them! 😊

    But even for a more seasoned programmer, working with Evennia can be a valuable experience.

    “On a personal level, it helps me hone my programming skills,” said Griatch. “Writing code that is meant for everyone to read and understand has taught me a lot of good code practices. For example, Evennia’s source code is extensively commented on and covered by a large test suite.”

    Evennia, a public repository available on Github.
    Evennia’s source code is available on GitHub.

    If the idea of learning Python from the ground up seems daunting to you, don’t worry – there’s a whole Discord community (and lots of contribs to look at) to help you learn the ropes.

    “We have many very active contributors,” said Griatch. “They help with everything from fixing typos and bugs to creating large features and refactoring core Evennia systems. Reviewing code changes from contributors is another one of my important responsibilities.”

    And while it may have been more work, the focus on human-readable code and solid documentation has ultimately paid off – and in more ways than one.

    “One of the main lessons I have learned is how fulfilling it is to have others using your code and being able to teach others about it. I used to have to explain how everything works, now others can teach in my place. That’s pretty mind-blowing to me,” he said.

    Drawbacks to using Python?

    I asked Griatch if Evennia faces any unique challenges or limitations, and he did mention something: while Python is extremely flexible and easy to learn, it’s heavier on computer resources than C or C++, which are used by many legacy codebases.

    “In C/C++, you can get away with really stupid and inefficient code and still be performant(ish). In contrast, you need to follow better code practices when using an event-driven, asynchronous Python server like Evennia.

    That said, in practice this seldom matters on modern hardware. A text game is not very heavy to begin with.”

    Still, if performance is a concern, I recommend reading Evennia’s documentation on databases. A little bit of research and planning up front can save you from extra work later.

    Accessibility and built-in screenreader mode

    If you’re learning about Evennia for the first time, it’s worth noting that it comes with built-in screen reader support.

    “We have several vision-impaired contributors and users that contribute code to the project,” said Griatch.

    In MU* games, ASCII art is commonly used for things like decorative borders and maps, but such text-based visuals don’t translate well into speech. Including them can diminish the experience for players who use a screen reader.

    Fortunately, Evennia’s screenreader mode effectively removes ASCII art (and unnecessary color) from the game’s output, so that screen readers don’t attempt to read those characters aloud:

    Comparison between before and after screenreader mode is enabled. Before, there is color and ASCII printed to the screen. After, there is only readable text.
    What it looks like before and after screenreader mode is enabled.

    However, while Evennia does its best to support accessibility, Griatch cautioned that there’s only so much that can be automated.

    “It’s up to each game developer to design their game with accessibility in mind, avoiding using colors or ASCII art as the only way to convey information, for example. We point this out in many places in our documentation,” he said.

    If accessibility is something that interests you, bookmark the interviews with Niamh, Klor, and Khufu and check those out next. They’re packed with similarly thoughtful advice.

    Recommended resources

    I asked Griatch if he had any resources to recommend to someone who may be thinking of building their own MU* engine or their own MU*.

    “I usually say that if you want to create a particular, playable game, you should start from an existing engine or codebase. If you want to create a game engine, that’s fine, but expect to be doing that henceforth and not get to your dream game any time soon,” he told me.

    “Making any multiplayer game is a lot of work as it is. Tools like Evennia help you focus on the gamey bits rather than on MU* networking protocol (non-)standards.”

    To dive into these topics further, Griatch recommended reading two of his articles:

    Both are part of the Evennia Beginner Tutorial, but he says they can easily be read with other game engines in mind.

    What’s next for Griatch and Evennia

    As for what’s on the roadmap? Well, Griatch is working on improving the Evennia Beginner Tutorial.

    “As part of the tutorial, I’m developing a complete little demo MUD from scratch. It comes with full source code and tutorial lessons. Even if people don’t like that particular style of MUD (it’s based on Ben Milton’s Knave tabletop RPG rules), I hope it will help people get going.”

    Beginner Tutorial. Welcome to Evennia! This multi-part Beginner Tutorial will help you get off the ground and running.
    Introduction to Evennia’s Beginner Tutorial.

    If you’re curious, you can view Griatch’s progress in Part 3 of the tutorial, which is where he’s adding instructions for the demo MUD.

    (Just keep in mind that it’s unfinished as of the time of this writing.)

    Looking to the future, Griatch hopes that Evennia can help people explore the medium of MU*s further.

    “The number of game types included under the label of ‘MU*’ is vast,” he said. “I feel that there are a lot of modernizations and usability improvements that can be explored to help new players find their way to text-based gaming.”

    For example, one area ripe for improvement is accessibility on mobile devices.

    “Mobile is where a lot of younger audiences are found. There is more we can do to help spread MU*s outside of the traditional telnet realm, such as make our browser web client even more powerful and flexible on mobile devices.”

    Project support: past and future

    Quote by Griatch, pulled from the text.

    Wrapping up the interview, I asked Griatch if there was anyone he’d like to thank for their inspiration and support over the years.

    “Firstly, Greg Taylor for creating Evennia in the first place. Secondly, all of the great Evennia contributors to our code on GitHub. We have 1700 stars on GitHub, which is pretty wild.

    And of course our community as a whole! This is a good place to ask questions and get help from other developers. We discuss game design, and people show off their latest progress.

    While many are seasoned game devs, we have plenty of complete newbies learning to code as well. Check out our Discord channel and also Discussion forums.”

    He added, “Without the community there would be no Evennia, simple as that.”

    Lastly, if you’re interested in becoming part of the Evennia community or contributing to the project, you have options!

    “As a free, open-source project, we depend on help from the community,” said Griatch. “Anything helps, from spreading the word by writing a blog post to reporting a bug or fixing some code. Or just being active in our community, asking and answering questions.

    Financial support is not expected or assumed, but if you feel generous you can also drop a coin in my proverbial hat or become a Patreon.”

    A big thank you to Griatch for taking the time to share his experiences working on Evennia, the Python MU* creation system! I enjoyed getting to learn more about the person behind the project, as well as how it all came about.

    For more ways to support the project, check out this page on the Evennia website. Also, keep an eye out for more interviews with insightful game creators and game engine developers!

    Oh, and I’m not the first person to interview Griatch. In 2019, he was a guest on Episode 4 of the Titans of Text podcast. Check it out!

    Smiling blonde woman wearing glasses.
    About the author

    Andruid is a writer, roleplayer, storyteller, and nerd who tries to live by Bill and Ted wisdom, i.e. “Be excellent to each other.”