<li><aclass="reference internal"href="#other-files-in-the-server-conf-directory">Other files in the <codeclass="docutils literal notranslate"><spanclass="pre">server/conf</span></code> directory</a></li>
<p>Evennia runs out of the box without any changes to its settings. But there are several important
ways to customize the server and expand it with your own plugins.</p>
<p>All game-specific settings are located in the <codeclass="docutils literal notranslate"><spanclass="pre">mygame/server/conf/</span></code> directory.</p>
<sectionid="settings-file">
<h2>Settings file<aclass="headerlink"href="#settings-file"title="Permalink to this headline">¶</a></h2>
<p>The “Settings” file referenced throughout the documentation is the file
<p>Your new <codeclass="docutils literal notranslate"><spanclass="pre">settings.py</span></code> is relatively bare out of the box. Evennia’s core settings file is
the <aclass="reference internal"href="Settings-Default.html"><spanclass="doc std std-doc">Settings-Default file</span></a> and is considerably more extensive. It is also
heavily documented and up-to-date, so you should refer to this file directly for the available settings.</p>
<p>Since <codeclass="docutils literal notranslate"><spanclass="pre">mygame/server/conf/settings.py</span></code> is a normal Python module, it simply imports
<codeclass="docutils literal notranslate"><spanclass="pre">evennia/settings_default.py</span></code> into itself at the top.</p>
<p>This means that if any setting you want to change were to depend on some <em>other</em> default setting,
you might need to copy & paste both in order to change them and get the effect you want (for most
commonly changed settings, this is not something you need to worry about).</p>
<p>You should never edit <codeclass="docutils literal notranslate"><spanclass="pre">evennia/settings_default.py</span></code>. Rather you should copy&paste the select
variables you want to change into your <codeclass="docutils literal notranslate"><spanclass="pre">settings.py</span></code> and edit them there. This will overload the
It may be tempting to copy <em>everything</em> from <codeclass="docutils literal notranslate"><spanclass="pre">settings_default.py</span></code> into your own settings file just to have it all in one place. Don’t do this. By copying only what you need, you can easier track what you changed.</p>
<p>Each setting appears as a property on the imported <codeclass="docutils literal notranslate"><spanclass="pre">settings</span></code> object. You can also explore all possible options with <codeclass="docutils literal notranslate"><spanclass="pre">evennia.settings_full</span></code> (this also includes advanced Django defaults that are not touched in default Evennia).</p>
<div><p>When importing <codeclass="docutils literal notranslate"><spanclass="pre">settings</span></code> into your code like this, it will be <em>read
only</em>. You <em>cannot</em> edit your settings from your code! The only way to change an Evennia setting is
to edit <codeclass="docutils literal notranslate"><spanclass="pre">mygame/server/conf/settings.py</span></code> directly. You will also need to restart the server
(possibly also the Portal) before a changed setting becomes available.</p>
<h2>Other files in the <codeclass="docutils literal notranslate"><spanclass="pre">server/conf</span></code> directory<aclass="headerlink"href="#other-files-in-the-server-conf-directory"title="Permalink to this headline">¶</a></h2>
<p>Apart from the main <codeclass="docutils literal notranslate"><spanclass="pre">settings.py</span></code> file,</p>
<ulclass="simple">
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">at_initial_setup.py</span></code> - this allows you to add a custom startup method to be called (only) the
very first time Evennia starts (at the same time as user #1 and Limbo is created). It can be made to
start your own global scripts or set up other system/world-related things your game needs to have
running from the start.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">at_server_startstop.py</span></code> - this module contains two functions that Evennia will call every time
the Server starts and stops respectively - this includes stopping due to reloading and resetting as
well as shutting down completely. It’s a useful place to put custom startup code for handlers and
other things that must run in your game but which has no database persistence.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">connection_screens.py</span></code> - all global string variables in this module are interpreted by Evennia as
a greeting screen to show when an Account first connects. If more than one string variable is
present in the module a random one will be picked.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">inlinefuncs.py</span></code> - this is where you can define custom <aclass="reference internal"href="../Components/FuncParser.html"><spanclass="doc std std-doc">FuncParser functions</span></a>.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">inputfuncs.py</span></code> - this is where you define custom <aclass="reference internal"href="../Components/Inputfuncs.html"><spanclass="doc std std-doc">Input functions</span></a> to handle data
from the client.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">lockfuncs.py</span></code> - this is one of many possible modules to hold your own “safe” <em>lock functions</em> to
make available to Evennia’s <aclass="reference internal"href="../Components/Locks.html"><spanclass="doc std std-doc">Locks</span></a>.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">mssp.py</span></code> - this holds meta information about your game. It is used by MUD search engines (which
you often have to register with) in order to display what kind of game you are running along with
statistics such as number of online accounts and online status.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">oobfuncs.py</span></code> - in here you can define custom <aclass="reference internal"href="../Concepts/OOB.html"><spanclass="doc std std-doc">OOB functions</span></a>.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">portal_services_plugin.py</span></code> - this allows for adding your own custom services/protocols to the
Portal. It must define one particular function that will be called by Evennia at startup. There can
be any number of service plugin modules, all will be imported and used if defined. More info can be
found <aclass="reference external"href="https://code.google.com/p/evennia/wiki/SessionProtocols#Adding_custom_Protocols">here</a>.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">server_services_plugin.py</span></code> - this is equivalent to the previous one, but used for adding new
services to the Server instead. More info can be found
<li><p><em><aclass="reference external"href="http://cmdparser.py">cmdparser.py</a></em> - a custom module can be used to totally replace Evennia’s default command parser. All this does is to split the incoming string into “command name” and “the rest”. It also handles things like error messages for no-matches and multiple-matches among other things that makes this more complex than it sounds. The default parser is <em>very</em> generic, so you are most often best served by modifying things further down the line (on the command parse level) than here.</p></li>
<li><p><em>at_search.py</em> - this allows for replacing the way Evennia handles search results. It allows to change how errors are echoed and how multi-matches are resolved and reported (like how the default understands that “2-ball” should match the second “ball” object if there are two of them in the room).</p></li>