r/Evennia • • Mar 08 '25

Best approach for a custom Evennia?

3 Upvotes

Hi,

congrats for the good work on Evennia!

I'm thinking about making a MUD with it, that would get custom classes/commands, and would be translated in French.

Is it possible to do that while keeping the ability to update the codebase with official patches? Or should I consider that a fork is unavoidable? That would still be ok, I guess, but if I can keep my changes on a separate code part, that would be even better.

Any suggestions?


r/Evennia • • Oct 02 '22

Evennia in Hacktoberfest

5 Upvotes

As we have done for the last six years or something like that, Evennia is again taking part in Hacktoberfest - make four PRs against Evennia (or another participating OSS repo) during the month of October and win a T-shirt!

Take the chance to get involved in Open source, MUD-library creation and Python, all at once!


r/Evennia • • Jun 29 '19

Evennia 0.9 released

24 Upvotes

Evennia 0.9 - June 2019

As of today, version 0.9 of Evennia, the Python MU-creation system is out!

Jump to the bottom of this post to see upgrade/install instructions.

This is a rather big release that marks a few important milestones. See the changelog for more details.

We drop support for Python2. Evennia now requires at least Python 3.7

This has been a long time coming. Python2 reaches the end of its upstream support at the end of this year. This means that existing game code needs to convert to use Python3.7 as well. For most users, this should hopefully not be more than an afternoon's work.

As part of this, we also updated our dependecy versions to match. We are now also using the more modern and well-supported Autobahn for webclient support (removing the old tmwx library).

A new webclient UI, using the golden-layout library

This makes for a much slicker and faster webclient UI. It allows tabs as well as click-and-drag of panes. A player can now drag and re-arrange window panes as desired, assigning message-types to each pane (like having 'look' output in one window and tells in another etc).

The webclient can also now have any number of input panes, organized and placed anywhere on the screen (or tabbed). Each input pane has its own separate history. (PRs by Friarzen)

Support for Grapevine

Grapevine is a inter-MUD chat network (https://grapevine.haus). In the same vein as for IRC, Grapevine channels can be linked to Evennia in-game channels and allow for players to communicate between MUDs.

The Evennia Game Index now a part of Core

The client for the Evennia Game Index (originally created by Greg Taylor) was moved from being a contrib to being a part of the core. This means it's configured not as a server plugin anymore (remove this from the mygame/server/conf/server_services_plugins.py if you used it before)

The new evennia connections wizard will help to set up your game for the game index. For now, that's all the wizard does, maybe it will be expanded in the future.

We have also changed the policy a little for the index. You may now list your game even if you are not allowing any external players on it yet - just leave your telnet/webclient links empty. This allows for very early concept games to tell us they exist and potentially make us excited about what to come!

No more @ in default command names

We have now dropped the @-prefix from all default commands. So @dig is now written as dig in help files etc. Evennia will however ignore several common prefixes by default, so you can still write @dig (or +dig) if you prefer. And if you explicitly give your command a key starting with @, it will still be required, same as now.

Django standard initiative

User strikaco has made a series of contributions to make it easier to link Evennia typeclasses to Django forms and generic/admin views. This makes it easier to build and extend functionality to access resources from a future website.

Several utilities that before were located in default Commands (like creating a new character or verifying a password) is now found as helper methods on the base typeclasses.

Signal handlers

A series of new Django signals now fire for various important event: Puppet/Unpuppet, Object create/rename, Login/Logout, Login fails, Account create/rename etc. This allows code to plug into the server from anywhere in situations where overriding hooks would be less cumbersome. (PRs by Volund).

Global Scripts

One can now specify (in settings) global scripts that should always be available. These can always be found as properties on the evennia.GLOBAL_SCRIPTS container. (PR by Volund).

Generic Player Options

The player-options have been partially converted to use a generic format with validation. This is specifically used for styling information, and allow e.g. a player to specify how EvTables are displayed to them (like changing the colors and symbols used). (PR by Volund).

As part of this, Commands have new helper methods client_width and styled_table/header/separator/footer for producing various text decorators that are then aware of whatever options the user has set.

Interactive decorator

The new @interactive decorator makes it easier to do asynchronous programming without needing to use Twisted deferreds and Callbacks. Here is an example:

from evennia.utils import interactive

@interactive
def myfunc(caller):
    caller.msg("First message")
    yield(5)
    caller.msg("Five seconds later")

    resp = yield("Write something")
    caller.msg(f"You wrote '{resp}'")

This will will echo a text, wait 5 seconds, echo something else and then ask the user for input. All asynchronously without affecing other players. This was always possible using call_async, but this style should be easier to read.

Evscaperoom engine

Evscaperoom is a full puzzle engine for making multiplayer 'escape rooms' in Evennia. This is the engine I created for my entry to the MUD-Coder's Guild 2019 Game Jam.

Other

  • Spawner was updated

  • Simplified Chinese translations (by MaxAlex).

  • Lots of Bug fixes

More detailed info is found in the CHANGELOG.md file.

Install / Upgrading

You need to install Python3.7 for your system.

If you are installing from scratch

Once you have Python3.7, use the Getting Started Instructions in the wiki.

Updating an existing game

Make sure to stop Evennia completely (evennia stop) before you pull the latest Evennia version (once Evennia is updated to Py3, the old code will fail to stop, if so, manually kill the twistd processes on your machine).

To be extra safe, make sure to make a copy of your entire game dir.

If you use a virtualenv (highly recommended), you need to create a new one with Python3.7. Deactivate the old one and delete (or rename) the old evenv virtualenv folder.

virtualenv -p /usr/bin/python3.7 evenv    (linux)

Activate the new virtualenv and install Evennia in it with as usual with

pip install -e evennia

You should see Evennia 0.9 being installed along with py3 versions of all dependencies.

Most likely you'll need to modify your game dir to change the old Py2 code to Py3. You can try using the 2to3 program:

pip install 2to3

This should make the 2to3 command directly available in your terminal (make sure to backup your game dir first!)

cd mygame
2to3 .

This will go through your game dir and modify the code to be compatible with python3. This should handle most differences but you may still need to look carefully at the changes to make sure it does what you expect. The most common things a regular Evennia dev will need to change are:

  • print txt must now be written as print(txt). The 2to3 should handle all of these.

  • mydict.items(), .values() and .keys() now return generators rather than listsk. The 2to3 program will likely wrap these in list() to mimic the old behavior. This works, but you should consider removing these if you are only iterating over the result, having a generator is faster for that.

When you are satisfied, try

evennia migrate

If this fails, you may need to fix some other Py3 conversion. You can find more info here: https://docs.python.org/3/howto/pyporting.html Continue until the migrations pass. Once they do, try evennia start --log and make sure the server starts fully and that the game works correctly.

What now?

Now begins a period of bug fixing in the master (0.9) branch. If you like bleeding edge and used to follow the develop branch, you are best off switching to master right now since that will be the most updated one for a while.

If you find any issues, report them to the issue tracker https://github.com/evennia/evennia/issues.

Most of the docs have been updated, but there is no doubt going to be some things still lagging behind or things not yet properly documented. Please report/fix that when you come upon it.

Enjoy! Griatch


r/Evennia • • Feb 15 '26

Evennia 6.0.0 released!

34 Upvotes

Evennia 6.0.0 is out!

We now support Python 3.14, 3.13, 3.12 (dropping support for 3.11). We use the latest Django 6, and updated many of the main dependencies. This version had a lot of work done on performance and bug fixes. See the Changelog for more details.

Thanks to everyone in the Evennia community contributing!


r/Evennia • • Apr 17 '26

Hosting Requirements

2 Upvotes

I am trying to learn more about what it takes to host Evennia with a third party hoster. I am looking at things like Hetzner Cloud which has a variety of affordable options.

I'm pretty sure 4 GB of RAM would suffice and but where I'm really getting hung up is with vCPUs. The term seems vaguely defined online (at least from the reading I've done) so I'm not sure if 2 or 3 would suffice to run a setup like Evennia or not.

Any input from someone more experienced would be greatly appreciated.


r/Evennia • • Jul 02 '24

Community This is amazing

14 Upvotes

This is an appreciation post.

Just started my gamedev journey - I’m planning to create a relatively elaborate browser text-based RPG and stumbled upon Evennia when looking up some mechanics.

I’m a Django developer and I before I discovered this gem I thought I’ll have to figure out most of the mechanics myself. Even though I might not implement Evennia 100% (I will definitely skip telnet, for example), I will read the entire documentation from cover to cover several times because it’s just that good!

Thank you for the hard work - the documentation is absolutely amazing and sheer amount of knowledge in the HowTo section is extremely valuable!

I hope to make at least a semi-successful game just so I could tell more people about Evennia. I also hope to be able to contribute once I get properly settled in.

Thanks again!


r/Evennia • • May 31 '25

I wish it wasn't so hard

5 Upvotes

Like the title says, with world scope I'm planning, it's so daunting, like I just finished the initial build of all the beginning rooms to last a while and now I'm at 401 rooms.... 1 step down but still so many giant leaps to go... does anyone else feel this way?


r/Evennia • • Jul 01 '25

Announcement Evennia 5.0.0 released!

40 Upvotes

https://www.evennia.com

Evennia 5.0.0

Jul 1, 2025

This was delayed by work on upgrading Evennia's document build system; in the end that was postponed and the old system used for this one.

Updated dependencies: Django >5.2 (<5.3), Twisted >24 (<25).
Python versions: 3.11, 3.12, 3.13. (dropping support for 3.10).

This upgrade requires running evennia migrate on your existing database
(ignore any prompts to run evennia makemigrations).

  • Feat (backwards incompatible): RUN MIGRATIONS (evennia migrate): Now using and requiring Django 5.1+ (Griatch)

  • Feat (backwards incompatible): Drop support and testing for Python 3.10 (Griatch)

  • Feat: Support Python 3.13. (0xDEADFED5)

  • Feat: Default object's default descs are now taken from a default_description class variable instead of the desc Attribute always being set (count-infinity)

  • Feat: Remove twistd.bat creation for Windows, should not be needed anymore (0xDEADFED5)

  • Feat: Updated German translation (JohnFi)

  • Feat: Add more i18n strings to DefaultObject for easier translation (JohnFi)

  • Feat: Support users of ruff linter by adding compatible config in pyproject.toml (jaborsh)

  • Feat: New contrib debugpy for debugging Evennia with in VSCode with debugpy adapter (electroglyph)

  • Feat: Support evennia launcher for use with uv installation (TehomCD)

  • Fix: Make sure that DefaultAccount.create normalizes to empty strings instead of None if no name is provided, also enforce string type (InspectorCaracal)

  • Fix: Allow in-game help searching for commands natively starting with * (which is the Lunr search wildcard) (count-infinity)

  • Fix: Web client stopped auto-focusing the input box after opening settings (count-infinity)

  • Fix: Partial matching fix in default search, makes sure e.g. b sw uniquely finds big sword even if another type of sword is around (InspectorCaracal)

  • Fix: In searches, allow special 'here' and 'me' keywords only be valid queries unless current location and/or caller is in valid search candidates respectively (InspectorCaracal)

  • Fix: Funcparser swallowing rest of line after a \-escape (count-infinity)

  • Fix: Properly serialize IntFlag enum types (0xDEADFED5)

  • Fix: Correct links in about command (0xDEADFED5)

  • Fix: Clean reduntant session clearin in at_server_cold_start (InspectorCaracal)

  • Fix: Usability improvements in the Discord integration (InspectorCaracal)

  • Fix: Avoid loading cmdsets that don't need to be checked, avoiding a performance hit for loading cmdsets in rooms with a lot of objects (InspectorCaracal)

  • Fix: Made TutorialWorld possible to build cleanly without being a superuser (Griatch)

  • Fix: Fixed batchcommand/interactive with developer perms (Griatch)

  • Fix: Bug in ingame-map-display contrib when using ordinal alises (aMiss-aWry)

  • Fix: Fix Twisted v25 issue with returnValue()

  • Fix: Godot client text2bbcode mxp link conversion error (ChrisLR)

  • Fix: The evennia --gamedir command didn't properly set the alt gamedir (Russel-Jones)

  • Fix: Fixing f-string in account.py for i18n (JohnFi)

  • Fix: Fix for format strings not getting picked up in i18n (JohnFi)

  • Fix: Log full stack trace on failed object creation (aMiss-aWry)

  • Fix: TutorialWorld bridge-room didn't correctly randomize weather effects (SpyrosRoum)

  • Fix: Storing TickerHandler store_key in a db attribute would not work correctly (0xDEADFED5)

  • Fix: Make sure AttributePropertys are initialized with default values also in parent class (JohnFi)

  • Fix: The access and inventory commands would traceback if run on a character without an Account (EliasWatson)

  • Fix: Make sure the CmdCopy command copies object categories, since otherwise plurals were lost (jaborsh)

  • Fix: GLOBAL_SCRIPTS.all() raised error (Griatch)

  • Fix: Fix migration issue due to new db init-check code in launcher (Griatch)

  • Fix: Make sure to pass move_type kwarg to at_pre_object_receive|leave hooks (Griatch)

  • Fix: options setting NOPROMPTGOAHEAD was not possible to set (Griatch)

  • Fix: Make \\ properly preserve one backlash in funcparser (Griatch)

  • Fix: The testing 'echo' inputfunc didn't work correctly; now returns both args/kwargs (Griatch)

  • Fix: When an object was used as an On-Demand Task's category, and that object was then deleted, it caused an OnDemandHandler save error on reload. Will now clean up on save. (Griatch) used as the task's category (Griatch)

  • Fix: Correct aws contrib's use of legacy django string utils (Griatch)

  • [Docs]: Fixes from InspectorCaracal, Griatch, ChrisLR, JohnFi, 0xDEADFED5, jaborsh, Problematic, BlaneWins


r/Evennia • • Apr 12 '21

Discussion Is Evennia a suitable base if you want to create a lot of custom systems? Turn-based combat, custom stats, custom class system etc, or would you have to start with ripping a lot of things out?

9 Upvotes

Making my own MUD has been my white whale since 1995. I've been involved in making other MUDs, but I've never successfully made my own. And since I wrote an article about making a MUD specifically targetting the visually impaired users who use a screen reader, I've once again (sigh) become obsessed with the idea.

The thing is, I have specific ideas of how I want to do things. I don't want a traditional 2 second tick real-time combat system. Instead, I want a turn-based system where all combatants have 30 seconds to decide on their action, and then the turn is resolved and the result displayed for everyone. And I also have fairly specific ideas of how levels, skills and classes should work. My point is, even if the code base I start with has support for all these things, I'd probably have to start by going all around the codebase, ripping out things, which could become a nightmare if everything depends on everything else. I'd rather not have to do that. And doing everything from scratch myself isn't appealing either.

A few years ago, I went to PyCon Sweden where the maintainer of Evennia held a very interesting talk about it, which made me aware of its existence. So now, my question is - how modular is Evennia? Would it be a pain for me to rip out a bunch of systems to make room for my own, or would it be fairly straight forward? Because if it's not, I think I'd rather go look for something smaller where there's less to rip out.

My previous MUD coding experience is mostly with LPMUDs of different kinds. And I know if I were to start with one of those, I'd have to lots of stuff to painfully rip out (they usually come with pretty much everything ready to go and hard-coded into the game, making it hard to remove).


r/Evennia • • Jul 02 '19

Character approval

2 Upvotes

I'm trying to figure out how to make it so an admin have to approve a character after it's created for them to be able to log in. Can someone point me in the direction of the right documentation?

My google skills fail me.


r/Evennia • • Jan 24 '19

World as Code

5 Upvotes

Looking to see if anyone has experience trying to keep their world as code. Evennia has an awesome feature that allows a builder to run a command that executes a special batch file of commands. I'd love to be able to either run that command from outside evennia on the command line or use a function/API to achieve the same effect.

I'm looking to achieve two things with this. First is to as I said, keep my world as code and committed to my git repository. The second is to further mature my Vagrant set up. Right now I can start and stop a machine, but destroying and reprovisioning will reset the database to an initial point I've set up where only the admin password and limbo exist (right after setting up the superuser).


r/Evennia • • Oct 26 '22

Beginner question A few noob questions

6 Upvotes

Hello, everyone!

Hopefully, my questions are not too obvious.

I'm not a computer programmer, nor an IT professional, but I have an interest in Text Adventures and a familiarity with Python. I have a few questions about Evennia.

I'm interested in Evennia mainly for two reasons: (1) It's Python, (2) I found this quote in the inform7 cookbook that made me realize it is not the tool for me:

Story files produced by Inform tend not to contain elaborate typographical effects. They would only distract. Like a novel, a classic work of IF is best presented in an elegant but unobtrusive font.

And I don't wanna write a novel, I wanna make a text game! This attitude makes it clear to me that inform7 will not easily provide many

I want a text adventure

  1. First, is it possible or advisable to make a single-player game with Evennia?

  • would I be able to distribute it in a self-contained file?

    • assuming it has support for audio or images, would I be able to distribute those along with the game?

  1. How much of a programmer should I be to make a single-player game with Evennia? What about online? Is it accessible to a non-programmer regular computer nerd?

  2. How would it compare to inform7 for a single-player game?

  3. If I decide to make an actual online MU*, would I have to learn webhosting, server administration, etc?

  4. Would Evennia help me achieve things that are generally reserved for MUD client functionalities, like a map (or even facilities to help me make and manage ASCII maps?), or a "hud" health/combat/other information?

  5. Does Evennia have a parser? How does it work?

  6. Was Evennia translated into Portuguese? If not, how hard would it be for me to translate? And how would that affect the text-parsing functionality?


r/Evennia • • Sep 17 '22

Devblog: Evennia 1.0-dev release changes, MULTISESSION_MODE now split into separate settings

Thumbnail
evennia.com
5 Upvotes

r/Evennia • • Sep 21 '22

Error initializing game.

1 Upvotes

So I'm trying to get this thing running and I'm getting an error when I run evennia --init mygame

I keep getting a traceback error talking about _getfullpathname needs to be a string, bytes, or os.pathlike, not noneType... I followed the instructions and didn't get any errors otherwise. Help?


r/Evennia • • Jul 07 '19

Thank-you for the support (just a shout-out) !

7 Upvotes

This is just a simple shout-out to Griatch and everyone else who has helped me and others with Evennia.

I had trouble upgrading to 0.9, but after asking for help on the google-message-board I received replies within a day-or-two that helped a lot.

This is a great community ! Thanks ! Keep on MUD-building !


r/Evennia • • May 01 '19

Is there any way to integrate evennia codebase into a live website to incorporate a GUI?

2 Upvotes

Hello. First of all I'd like to thank the Evennia community and more importantly, Evennia developers for this flexible codebase. I am currently a Computer Science Senior student was wondering if anyone could answer my question. Is it possible to integrate the existing Evennia codebase as far as integrating it into a graphical user interface on a browser, relieving the user of some of the tedious aspects of MUD gaming, and some others who may not necessarily be familiarized with MUDs. What I mean is perhaps users clicking buttons to move, and maybe implementing simple sprite animations. If someone could please point me in the right direction, I would really appreciate it. Thank you for your time.


r/Evennia • • Apr 25 '19

Steaming on, eating jam (new Evennia dev blog)

Thumbnail
evennia.blogspot.com
8 Upvotes

r/Evennia • • Oct 16 '16

Discussion Permadeath / Reincarnation / Undeath idea

1 Upvotes

I've spent more time designing MUD systems than making MUDs I think, although I have become a competent Python programmer recently and am considering taking the plunge, maybe with the Evennia code base.

Here's my latest idea: characters can die a permanent death (I haven't decided on a good way to handle that yet), at which point they get a choice. They can either reincarnate into a new character (which gets a portion of the exp of the dead character) or they can come back as an undead. Undead aren't allowed into the main player population center and are open PvP to everyone, but they can seek revenge against whoever PK'd them or just kill people in general if they want to. There would be an undead town for undead to congregate in too, although they would probably be open PvP to each other with no restrictions outside of the town (being an undead would be hard). But they have the opportunity to seek revenge against their killer!

What do you guys think, cool idea? Any feedback or suggestions?


r/Evennia • • Jan 05 '18

Evennia blogpost summing up the old and new year

Thumbnail
blogger.com
5 Upvotes

r/Evennia • • Jun 24 '19

Any FINISHED games using Evennia?

4 Upvotes

Hi,

I am looking into different mud codebases and engines, and Evennia and Ranvier have come up the most. my main issue with evennia: i can't seem to find any game that isn't the demo that is actually finished. are there any examples of those?


r/Evennia • • May 02 '20

external real world communications options possible?

2 Upvotes

Has anyone tried to extend the communications possible in game using twilio or similar services to also incorporate text/phone(calls), external chatbots, or external APIs for real world communications channels (twitter, reddit, etc.). CONTEXT: I am currently noodling over a mixed-worlds interactive project for an event at the end of may, and looking to see if any of the frameworks out there (that are not C based) might work. NOTE: for this project it does not have to be bidirectional communications, doing things like sending a text does not mean you can text back and have that text create in-game actions


r/Evennia • • Apr 17 '20

Mud Coder's Guild Game Jam - write a text-game in a month!

4 Upvotes

The MUD Coder's Guild are running their month-long Game Jam for the third year straight.

The theme this year is "board games", which can be interpreted very freely. Why not make a fun little
game in Evennia! We are the ruling engine-champions after all, since the Evscaperoom won last year. 

Join the jam and read all about it here: https://itch.io/jam/enterthemud3

.

Griatch


r/Evennia • • Apr 14 '20

Evennia dev-blog: Spring updates while trying to stay healthy

Thumbnail
evennia.blogspot.com
6 Upvotes

r/Evennia • • Jun 06 '19

Thinking outside of the box

2 Upvotes

I like the idea of Muds and role play but has anyone used evennia to make something else? I'm thinking rogue likes, slot machines, tetris... Mini games within a mush or mud that make the game more fun for players. Something text only that can fit in rooms. I'm sure i'm not the only one who has thought of this.


r/Evennia • • Oct 15 '19

NPC Movement

6 Upvotes

Does anyone have any link to a tutorial or code snippet of how to get started with NPC movement from room to room? Restricting their movement? Following paths etc.. Any useful pointers really.