<li><p><em><aclass="reference external"href="Glossary.html#account">account</a></em> - the player’s account on the game</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#admin-site">admin-site</a></em> - the Django web page for manipulating the database</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#attribute">attribute</a></em> - persistent, custom data stored on typeclasses</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#channel">channel</a></em> - game communication channels</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#character">character</a></em> - the player’s avatar in the game, controlled from
<li><p><em><aclass="reference external"href="Glossary.html#core">core</a></em> - a term used for the code distributed with Evennia proper</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#django">django</a></em> - web framework Evennia uses for database access and web integration</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#field">field</a></em> - a <em><aclass="reference external"href="Glossary.html#typeclass">typeclass</a></em> property representing a database
column</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#git">git</a></em> - the version-control system we use</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#github">github</a></em> - the online hosting of our source code</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#migrate">migrate</a></em> - updating the database schema</p></li>
<li><p><em><aclass="reference external"href="#multisession-mode">multisession mode`</a></em> - a setting defining how users connect to Evennia</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#puppet">puppet</a></em> - when an <aclass="reference external"href="Glossary.html#account">account</a> controls an in-game
<li><p><em><aclass="reference external"href="Glossary.html#property">property</a></em> - a python property</p></li>
<li><p><em>evenv</em> - see <em><aclass="reference external"href="Glossary.html#virtualenv">virtualenv</a></em></p></li>
<li><p><em><aclass="reference external"href="Glossary.html#repository">repository</a></em> - a store of source code + source history</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#script">script</a></em> - a building block for custom storage, systems and time-keepint</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#session">session</a></em> - represents one client connection</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#ticker">ticker</a></em> - Allows to run events on a steady ‘tick’</p></li>
<li><p><em><aclass="reference external"href="Glossary.html#twisted">twisted</a></em> - networking engine responsible for Evennia’s event loop and
<li><p><em>upstream</em> - see <em><aclass="reference external"href="Glossary.html#github">github</a></em></p></li>
<li><p><em><aclass="reference external"href="Glossary.html#virtualenv">virtualenv</a></em> - a Python program and way to make an isolated Python install</p></li>
<p>The term ‘account’ refers to the <aclass="reference external"href="Glossary.html#player">player’s</a> unique account on the game. It is
represented by the <codeclass="docutils literal notranslate"><spanclass="pre">Account</span></code><aclass="reference external"href="Glossary.html#typeclass">typeclass</a> and holds things like email, password,
configuration etc.</p>
<p>When a player connects to the game, they connect to their account. The account has <em>no</em>
representation in the game world. Through their Account they can instead choose to
<aclass="reference external"href="Glossary.html#puppet">puppet</a> one (or more, depending on game mode) <aclass="reference external"href="Glossary.html#character">Characters</a> in
<p>In the default <aclass="reference external"href="Components/Sessions.html#multisession-mode">multisession mode</a> of Evennia, you immediately start
<p>This usually refers to <aclass="reference external"href="Glossary.html#django">Django’s</a><em>Admin site</em> or database-administration web page
(<aclass="reference external"href="https://docs.djangoproject.com/en/2.1/ref/contrib/admin/">link to Django docs</a>). The admin site is
an automatically generated web interface to the database (it can be customized extensively). It’s
reachable from the <codeclass="docutils literal notranslate"><spanclass="pre">admin</span></code> link on the default Evennia website you get with your server.</p>
<p>The term <em>Attribute</em> should not be confused with (<aclass="reference external"href="Glossary.html#property">properties</a> or
<aclass="reference external"href="Glossary.html#field">fields</a>. The <codeclass="docutils literal notranslate"><spanclass="pre">Attribute</span></code> represents arbitrary pieces of data that can be attached
to any <aclass="reference external"href="Glossary.html#typeclass">typeclassed</a> entity in Evennia. Attributes allows storing new persistent
<p>A <em>Channel</em> refers to an in-game communication channel. It’s an entity that people subscribe to and
which re-distributes messages between all subscribers. Such subscribers default to being
<aclass="reference external"href="Glossary.html#account">Accounts</a>, for out-of-game communication but could also be <aclass="reference external"href="Glossary.html#character">Objects (usually
Characters)</a> if one wanted to adopt Channels for things like in-game walkie-
talkies or phone systems. It is represented by the <codeclass="docutils literal notranslate"><spanclass="pre">Channel</span></code> typeclass. <aclass="reference external"href="Communications#channels">You can read more about the
<p>The <em>Character</em> is the term we use for the default avatar being <aclass="reference external"href="Glossary.html#puppet">puppeted</a> by the
<aclass="reference external"href="Glossary.html#account">account</a> in the game world. It is represented by the <codeclass="docutils literal notranslate"><spanclass="pre">Character</span></code> typeclass (which
is a child of <aclass="reference external"href="Glossary.html#object">Object</a>). Many developers use children of this class to represent
offered by Evennia’s <aclass="reference internal"href="Howto/Starting/Part1/Searching-Things.html"><spanclass="doc">default search functions</span></a>. One will then need
<p><aclass="reference external"href="https://git-scm.com/">Git</a> is a <aclass="reference external"href="https://en.wikipedia.org/wiki/Version_control">version control</a>
tool. It allows us to track the development of the Evennia code by dividing it into units called
<em>commits</em>. A ‘commit’ is sort of a save-spot - you save the current state of your code and can then
come back to it later if later changes caused problems. By tracking commits we know what ‘version’
of the code we are currently using.</p>
<p>Evennia’s source code + its source history is jointly called a <aclass="reference external"href="Glossary.html#repository">repository</a>.
This is centrally stored at our online home on <aclass="reference external"href="Glossary.html#github">GitHub</a>. Everyone using or
developing Evennia makes a ‘clone’ of this repository to their own computer - everyone
automatically gets everything that is online, including all the code history.</p>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">git</span><spanclass="pre">clone</span><spanclass="pre"><github-url></span></code> - clone an online repository to your computer. This is what you do when
you ‘download’ Evennia. You only need to do this once.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">git</span><spanclass="pre">pull</span></code> (inside local copy of repository) - sync your local repository with what is online.</p></li>
<div><p>Full usage of Git is way beyond the scope of this glossary. See
<aclass="reference internal"href="Coding/Version-Control.html"><spanclass="doc">Tutorial - version control</span></a> for more info and links to the Git documentation.</p>
<p>That should be it (see <aclass="reference external"href="Glossary.html#virtualenv">virtualenv</a> if you get a warning that the <codeclass="docutils literal notranslate"><spanclass="pre">evennia</span></code>
command is not available). See also <aclass="reference internal"href="Coding/Updating-Your-Game.html"><spanclass="doc">Updating your game</span></a> for more details.</p>
<p>This term refers to the <codeclass="docutils literal notranslate"><spanclass="pre">MULTISESSION_MODE</span></code> setting, which has a value of 0 to 3. The mode alters
how players can connect to the game, such as how many Sessions a player can start with one account
<p>In general Python (and other [object-oriented languages](https://en.wikipedia.org/wiki/Object-
oriented_programming)), an <codeclass="docutils literal notranslate"><spanclass="pre">object</span></code> is what we call the instance of a <em>class</em>. But one of Evennia’s
core <aclass="reference external"href="Glossary.html#typeclasss">typeclasses</a> is also called “Object”. To separate these in the docs we
try to use <codeclass="docutils literal notranslate"><spanclass="pre">object</span></code> to refer to the general term and capitalized <codeclass="docutils literal notranslate"><spanclass="pre">Object</span></code> when we refer to the
typeclass.</p>
<p>The <codeclass="docutils literal notranslate"><spanclass="pre">Object</span></code> is a typeclass that represents all <em>in-game</em> entities, including
<aclass="reference external"href="Glossary.html#character">Characters</a>, rooms, trees, weapons etc. <aclass="reference internal"href="Components/Objects.html"><spanclass="doc">Read more about Objects here</span></a>.</p>
<p><em><aclass="reference external"href="https://pypi.org/project/pip/">pip</a></em> comes with Python and is the main tool for installing third-
party Python packages from the web. Once a python package is installed you can do <codeclass="docutils literal notranslate"><spanclass="pre">import</span><spanclass="pre"><packagename></span></code> in your Python code.</p>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">pip</span><spanclass="pre">install</span><spanclass="pre"><package-name></span></code> - install the given package along with all its dependencies.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">pip</span><spanclass="pre">search</span><spanclass="pre"><name></span></code> - search Python’s central package repository <aclass="reference external"href="https://pypi.org/">PyPi</a> for a
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">pip</span><spanclass="pre">install</span><spanclass="pre">--upgrade</span><spanclass="pre"><package_name></span></code> - upgrade a package you already have to the latest version.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">pip</span><spanclass="pre">install</span><spanclass="pre"><packagename>==1.5</span></code> - install exactly a specific package version.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">pip</span><spanclass="pre">install</span><spanclass="pre"><folder></span></code> - install a Python package you have downloaded earlier (or cloned using
git).</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">pip</span><spanclass="pre">install</span><spanclass="pre">-e</span><spanclass="pre"><folder></span></code> - install a local package by just making a soft link to the folder. This
means that if the code in <codeclass="docutils literal notranslate"><spanclass="pre"><folder></span></code> changes, the installed Python package is immediately updated.
If not using <codeclass="docutils literal notranslate"><spanclass="pre">-e</span></code>, one would need to run <codeclass="docutils literal notranslate"><spanclass="pre">pip</span><spanclass="pre">install</span><spanclass="pre">--upgrade</span><spanclass="pre"><folder></span></code> every time to make the
changes available when you import this package into your code. Evennia is installed this way.</p></li>
<p>For development, <codeclass="docutils literal notranslate"><spanclass="pre">pip</span></code> is usually used together with a <aclass="reference external"href="Glossary.html#virtualenv">virtualenv</a> to install
all packages and dependencies needed for a project in one, isolated location on the hard drive.</p>
<p>An <aclass="reference external"href="Glossary.html#account">account</a> can take control and “play as” any <aclass="reference external"href="Glossary.html#object">Object</a>. When
doing so, we call this <em>puppeting</em>, (like <aclass="reference external"href="https://en.wikipedia.org/wiki/Puppeteer">puppeteering</a>).
Normally the entity being puppeted is of the <aclass="reference external"href="Glossary.html#character">Character</a> subclass but it does
<p>A <em>property</em> is a general term used for properties on any Python object. The term also sometimes
refers to the <codeclass="docutils literal notranslate"><spanclass="pre">property</span></code> built-in function of Python ([read more here](https://www.python-
course.eu/python3_properties.php)). Note the distinction between properties,
<aclass="reference external"href="Glossary.html#field">fields</a> and <aclass="reference external"href="Glossary.html#attribute">Attributes</a>.</p>
<div><p>In Git’s case, that history is stored in a hidden folder <codeclass="docutils literal notranslate"><spanclass="pre">.git</span></code>. If you ever feel the need to look
into this folder you probably already know enough Git to know why.</p>
<p>The <codeclass="docutils literal notranslate"><spanclass="pre">evennia</span></code> folder you download from us with <codeclass="docutils literal notranslate"><spanclass="pre">git</span><spanclass="pre">clone</span></code> is a repository. The code on
<aclass="reference external"href="Glossary.html#github">GitHub</a> is often referred to as the ‘online repository’ (or the <em>upstream</em>
repository). If you put your game dir under version control, that of course becomes a repository as
<p>When we refer to <em>Scripts</em>, we generally refer to the <codeclass="docutils literal notranslate"><spanclass="pre">Script</span></code><aclass="reference internal"href="Components/Typeclasses.html"><spanclass="doc">typeclass</span></a>. Scripts are
<p>A <aclass="reference internal"href="Components/Sessions.html"><spanclass="doc">Session</span></a> is a Python object representing a single client connection to the server. A
<p>The <aclass="reference internal"href="Components/TickerHandler.html"><spanclass="doc">Ticker handler</span></a> runs Evennia’s optional ‘ticker’ system. In other engines, such
<p>The <aclass="reference internal"href="Components/Typeclasses.html"><spanclass="doc">typeclass</span></a> is an Evennia-specific term. A typeclass allows developers to work with
database-persistent objects as if they were normal Python objects. It makes use of specific
<aclass="reference external"href="Glossary.html#django">Django</a> features to link a Python class to a database table. Sometimes we refer to
such code entities as <em>being typeclassed</em>.</p>
<p>Evennia’s main typeclasses are <aclass="reference external"href="Glossary.html#account">Account</a>, <aclass="reference external"href="Glossary.html#object">Object</a>,
<aclass="reference external"href="Glossary.html#script">Script</a> and <aclass="reference external"href="Glossary.html#channel">Channel</a>. Children of the base class (such as
<aclass="reference external"href="Glossary.html#character">Character</a>) will use the same database table as the parent, but can have vastly
different Python capabilities (and persistent features through <aclass="reference external"href="Glossary.html#attributes">Attributes</a> and
<aclass="reference external"href="Glossary.html#tags">Tags</a>. A typeclass can be coded and treated pretty much like any other Python class
except it must inherit (at any distance) from one of the base typeclasses. Also, creating a new
instance of a typeclass will add a new row to the database table to which it is linked.</p>
<p>The <aclass="reference external"href="Glossary.html#core">core</a> typeclasses in the Evennia library are all named <codeclass="docutils literal notranslate"><spanclass="pre">DefaultAccount</span></code>,
<codeclass="docutils literal notranslate"><spanclass="pre">DefaultObject</span></code> etc. When you initialize your [game dir] you automatically get empty children of
these, called <codeclass="docutils literal notranslate"><spanclass="pre">Account</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">Object</span></code> etc that you can start working with.</p>
<p>The standard <aclass="reference external"href="https://virtualenv.pypa.io/en/stable/">virtualenv</a> program comes with Python. It is
used to isolate all Python packages needed by a given Python project into one folder (we call that
folder <codeclass="docutils literal notranslate"><spanclass="pre">evenv</span></code> but it could be called anything). A package environment created this way is usually
referred to as “a virtualenv”. If you ever try to run the <codeclass="docutils literal notranslate"><spanclass="pre">evennia</span></code> program and get an error saying
something like “the command ‘evennia’ is not available” - it’s probably because your virtualenv is
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">virtualenv</span><spanclass="pre"><name></span></code> - initialize a new virtualenv <codeclass="docutils literal notranslate"><spanclass="pre"><name></span></code> in a new folder <codeclass="docutils literal notranslate"><spanclass="pre"><name></span></code> in the current
location. Called <codeclass="docutils literal notranslate"><spanclass="pre">evenv</span></code> in these docs.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">virtualenv</span><spanclass="pre">-p</span><spanclass="pre">path/to/alternate/python_executable</span><spanclass="pre"><name></span></code> - create a virtualenv using another
<p>A virtualenv is ‘activated’ only for the console/terminal it was started in, but it’s safe to
activate the same virtualenv many times in different windows if you want. Once activated, all Python
packages now installed with <aclass="reference external"href="Glossary.html#pip">pip</a> will install to <codeclass="docutils literal notranslate"><spanclass="pre">evenv</span></code> rather than to a global
location like <codeclass="docutils literal notranslate"><spanclass="pre">/usr/local/bin</span></code> or <codeclass="docutils literal notranslate"><spanclass="pre">C:\Program</span><spanclass="pre">Files</span></code>.</p>
<p>When you execute Python code within this activated virtualenv, <em>only</em> those packages installed
within will be possible to <codeclass="docutils literal notranslate"><spanclass="pre">import</span></code> into your code. So if you installed a Python package globally on
your computer, you’ll need to install it again in your virtualenv.</p>
<div><p>Virtualenvs <em>only</em> deal with Python programs/packages. Other programs on your computer couldn’t
care less if your virtualenv is active or not. So you could use <codeclass="docutils literal notranslate"><spanclass="pre">git</span></code> without the virtualenv being
<div><p>We sometimes say that we are “in” the virtualenv when it’s active. But just to be clear - you
never have to actually <codeclass="docutils literal notranslate"><spanclass="pre">cd</span></code> into the <codeclass="docutils literal notranslate"><spanclass="pre">evenv</span></code> folder. You can activate it from anywhere and will
still be considered “in” the virtualenv wherever you go until you <codeclass="docutils literal notranslate"><spanclass="pre">deactivate</span></code> or close the
<p>So, when do I <em>need</em> to activate my virtualenv? If the virtualenv is not active, none of the Python
packages/programs you installed in it will be available to you. So at a minimum, <em>it needs to be
activated whenever you want to use the <codeclass="docutils literal notranslate"><spanclass="pre">evennia</span></code> command</em> for any reason.</p>