Starting Tutorial (Part 1)

Welcome to Evennia! This multi-part Tutorial will help you get off the ground. It consists of five parts, each with several lessons. You can pick what seems interesting, but if you follow through to the end you will have created a little online game of your own to play and share with others!

Lessons of Part 1 - “What we have”

  1. Introduction (you are here)

  2. Building stuff

  3. The Tutorial World

  4. Python basics

  5. Game dir overview

  6. Python classes and objects

  7. Accessing the Evennia library

  8. Typeclasses and Persistent objects

  9. Making first own Commands

  10. Parsing and replacing default Commands

  11. Creating things

  12. Searching for things

  13. Advanced searching with Django queries

In this first part we’ll focus on what we get out of the box in Evennia - we’ll get used to the tools, and how to find things we are looking for. We will also dive into some of things you’ll need to know to fully utilize the system, including giving you a brief rundown of Python concepts. If you are an experienced Python programmer, some sections may feel a bit basic, but you will at least not have seen these concepts in the context of Evennia before.

Things you will need

A Command line

First of all, you need to know how to find your Terminal/Console in your OS. The Evennia server can be controlled from in-game, but you will need to use the command-line to get anywhere. Here are some starters:

Note that we only use forward-slashes / to show file system paths in this documentation. Windows users need to convert this to back-slashes \ in their heads.

A MUD client

You might already have a MUD-client you prefer. Check out the grid of supported clients for aid. If telnet’s not your thing, you can also just use Evennia’s web client in your browser.

In this documentation we often use ‘MUD’ and ‘MU’ or ‘MU*’ interchangeably as labels to represent all the historically different forms of text-based multiplayer game-styles, like MUD, MUX, MUSH, MUCK, MOO and others. Evennia can be used to create all those game-styles and more.

An Editor

You need a text-editor to edit Python source files. Most everything that can edit and output raw text works (so not Word).

  • Here’s a blog post summing up some of the alternatives - these things don’t change much from year to year. Popular choices for Python are PyCharm, VSCode, Atom, Sublime Text and Notepad++. Evennia is to a very large degree coded in VIM, but that’s not suitable for beginners.

Hint: When setting up your editor, make sure that pressing TAB inserts 4 spaces rather than a Tab-character. Since Python is whitespace-aware, this will make your life a lot easier.

Set up a game dir for the tutorial

Next you should make sure you have installed Evennia. If you followed the instructions you will already have created a game-dir. You could use that for this tutorial or you may want to do the tutorial in its own, isolated game dir; it’s up to you.

  • If you want a new gamedir for the tutorial game and already have Evennia running with another gamedir, first enter that gamedir and run

      evennia stop 
    

If you want to run two parallel servers, that’d be fine too, but one would have to use different ports from the defaults, or there’d be a clash. We will go into changing settings later.

  • Now go to where you want to create your tutorial-game. We will always refer to it as mygame so it may be convenient if you do too:

     evennia --init mygame
     cd mygame 
     evennia migrate 
     evennia start --log
    

    Add your superuser name and password at the prompt (email is optional). Make sure you can go to localhost:4000 in your MUD client or to http://localhost:4001 in your web browser (Mac users: Try 127.0.0.1 instead of localhost if you have trouble).

    The above --log flag will have Evennia output all its logs to the terminal. This will block the terminal from other input. To leave the log-view, press Ctrl-C (Cmd-C on Mac). To see the log again just run

     evennia --log
    

You should now be good to go!