# Welcome to the World of Moss and Puddles

This contains the code, based on the [Evennia game engine][1] for
running a Multiuser Shared Story Experiment (MUSSE).

The details in this document are technical and assume proficiency with
a Terminal emulator, e.g. `Terminal` app on MacOS and `PowerShell` on
Windows.

## Running Locally

These instructions assume that you have [Git][2] installed,
and you can `clone`this repository.

    git clone https://howardabrams.com/git/howard/moss-n-puddles

This may be a slight chicken/egg scenario, since I store this file in
the repository.

To get a local copy running on your system, follow these steps.

### Install Python

Follow the [online instructions][3] if you don't have the Python
language engine installed.

### Create Virtual Environment (Optional)

While optional, you may not want to pollute your global Python
environment, so create a "virtual environments" to insure that module
libraries don't compete.

    python -m venv .venv

For further details on this, follow these instructions:
https://www.geeksforgeeks.org/python/create-virtual-environment-using-venv-python/

### Activate the Virtual Environment (Optional)

Each time you enter this directory folder, `activate` the virtual
environment with the command:

    source .venv/bin/activate

To make this easier, you can install [direnv][4].

### Install Support Modules

Install [Evennia][1] and other needed modules with the command:

    pip install -r requirements.txt

### Configure Database

Before you can start this program, you need to initialize the database
using the command:

    evennia migrate

Any time you want to re-initialize the database from scratch, type:

    rm server/evennia.db

To make my life easier, I issue:

    cp server/evennia-reset.db3 server/evennia.db3

### Start the Server

Start the server with the command:

    evennia start

When you first do this, you will need to create a account for the
superuser account, we call **The Avatar**. The question about email is
optional.

To make things a bit quicker, at this point, type:

    cp server/evennia.db3 server/evennia-reset.db3

If, at any point, you feel you have messed up the world, stop the
server using the command:

    evennia stop

And re-initialize the database with your account, using:

    cp server/evennia-reset.db3 server/evennia.db3

### Load the World

Log into the system. The easiest way is to use a browser and this URL:

    http://localhost:4001

You can also use a MUD client connecting to the `localhost` on port 4000.

You will need to connect with the user and password you created in the
Terminal (described above).

At this point, you won't see anything because the database is empty.
To populate the world, type the following command in the game (not in
your Terminal window):

    batchcommand version1.ev

A lot of text will fly by and it [recreates the world][9] described in
[Org-formatted document](moss-n-puddles.org). Those are my *notes* for
the game, which I should probably clean up for public consumption. You
will probably want to use [Emacs][5] get the most out of that text
document.

Check out [my map](moss-n-puddles-map.svg) I made (shame this isn't
dynamically generated).

## Technical Details

Peruse the [directory structure overview][6].

Read the logs in the file: `server/logs/server.log`

You might want to look at Evennia's [beginner tutorials][7], or the
complete [documentation][8].

  [1]: evennia.com
  [2]: git-scm.com
  [3]: https://www.python.org/downloads/windows/
  [4]: direnv.net
  [5]: https://www.gnu.org/software/emacs
  [6]: https://github.com/evennia/evennia/wiki/Directory-Overview#the-game-directory
  [7]: http://github.com/evennia/evennia/wiki/Tutorials.
  [8]: https://github.com/evennia/evennia/wiki
  [9]: moss-n-puddles.html
