|This is a tutorial page.|
You'll need a few tools to compile and set up DIRTSAND. Most of these consist of development libraries (frequently suffixed with -dev in repositories):
- GCC 4.6+ (other C++11-compliant compilers might work, but haven't been tested)
- PostgreSQL: you will need the development libraries (for compiling), the database server (for the vault), and the database server's extensions package
- string_theory: (see also build instructions)
- OpenSSL (libssl)
- git: used to acquire the source code for DIRTSAND
- cmake: used to create the makefiles for GCC 4.6+
Additionally, a client to test the working status would be useful. See the getting started guide for help on this subject. Your client will need to be able to connect to port 14617, so you might have to open it up on your firewall.
Finally, it is recommended that you create a UNIX user to run DIRTSAND with an associated home directory containing DIRTSAND:
sudo useradd dirtsand -d /opt/dirtsand -m -p <password> -s /bin/bash
The first step is to download and compile DIRTSAND for your system; make sure you have all the appropriate libraries installed. First, clone the H'uru repository:
~$ git clone git://github.com/H-uru/dirtsand.git dirtsand ~$ cd dirtsand
Once you have the sources ready, you'll need to run CMake and G++ to compile the code:
~/dirtsand$ mkdir build && cd build ~/dirtsand/build$ cmake -DCMAKE_INSTALL_PREFIX=/opt/dirtsand .. ~/dirtsand/build$ make && sudo make install ~/dirtsand/build$ cd ..
If your system complains about missing libraries but you have installed them, you can use the CMake GUI to point to the libraries' location.
You will need a PostgreSQL server which DIRTSAND can access with a user capable of adding schemas, tables, etc. into. For the proposed installation here, a
dirtsand database with ownership set to a
dirtsand user (such as the one created beforehand in this tutorial).
~/dirtsand$ sudo -u postgres psql -d template1
You will be taken into the psql interactive terminal:
template1=# CREATE USER dirtsand WITH PASSWORD '<password>'; template1=# CREATE DATABASE dirtsand WITH TEMPLATE = template0 ENCODING = 'UTF8'; template1=# ALTER DATABASE dirtsand OWNER TO dirtsand; template1=# \q
The next step is to enable UUID functionnality for PostgreSQL. From PostgresSQL 9.1, this extension is loaded inside the database itself. Before proceeding, you need to ensure that you have the package containing the
uuid-ossp extension installed on your system. On Debian-based distributions, this package is posgres-contrib.
~/dirtsand$ sudo -u postgres psql -d dirtsand
You will be taken into the psql interactive terminal:
dirtsand=# CREATE EXTENSION "uuid-ossp"; dirtsand=# \q
Now you need to load the initial structure for your DB, the SQL files being available in DIRTSAND's source code:
~/dirtsand$ sudo -u postgres psql -d dirtsand < db/dbinit.sql ~/dirtsand$ sudo -u postgres psql -d dirtsand < db/functions.sql
Your database should now be ready.
Note: if you are using the minimal setup guide, you can skip the key generation process, configuring only DB access and so on.
DIRTSAND is configured from a
dirtsand.ini file placed in the execution directory for DIRTSAND. It needs to be adjusted to connect to your database, to have all the appropriate RC4 keys, which DIRTSAND can automatically generate for you:
~/dirtsand$ /opt/dirtsand/bin/dirtsand ds-918> keygen new ds-918> quit
After running for a bit, this will output six keys to be copied into your
dirtsand.ini file and six others into your client's
server.ini (this requires either PlasmaClient or the H'uru fork of CWE). You can safely ignore all startup errors. A sample file for
dirtsand.ini has been placed in the source directory; you need to fill it in with your keys and database details (and any other configuration details you need to fill in):
~/dirtsand$ sudo cp dirtsand.sample.ini /opt/dirtsand/dirtsand.ini ~/dirtsand$ sudo chown dirtsand /opt/dirtsand/dirtsand.ini ~/dirtsand$ sudo -u dirtsand nano /opt/dirtsand/dirtsand.ini
Replace the dummy values with the output under "Server keys".
You'll also have to specify the external host addresses for your DIRTSAND server (it can either be an IP number of a domain name).
Your server now needs to be provided with files to distribute to clients. These include SDL files, Python scripts, data files, client files, and so on.
You will need the files available from the moul-scripts repository.
WARNING: the current moul-scripts appear to be broken in some aspect which prevents GUM (see below) from generating the manifests. Until such a time as the issue is tracked down and fixed, it is recommended that you use the Gehn Shard scripts instead.
DISCLAIMER: it is currently forbidden to distribute Cyan-created content (age models, sound effects). Therefore, your clients must already have all the required data files (excluding fan content you are allowed to distribute).
Ages and SDL
You will first need to create two folders for the
.sdl files, as specified in your
dirtsand.ini configuration. Into these folders you must copy only the
.sdl files, in unencrypted form (available from the moul-scripts repo).
Note: if you are using the minimal setup guide (or if you will be using only Internal clients), you can skip this step.
The file server is optional if you are using only Internal clients, but is required by External clients and to update automatically all client connecting to your server. This consists of a series of manifest files (
.mfs) of the following format:
Make sure the path to the local file is specified using Windows folder separators (backslahes: "\"). The
bin/dsData.sh script can automatically generate a manifest line for a specified file. The lines must reflect the details for the encrypted versions of the files.
There is currently no official manifest generator for DIRTSAND. However, Lyrositor has provided a script for this purpose heavily based on branan's (a.k.a PaladinOfKaos) and Hoikas' script. It is available for download here: Generator of Uru Manifests. You will need a reference installation containing the unencrypted
.pak file and
.sdl files in
SDL, along with all the files from the
sfx folders from MO:ULa. On top of the
dat folder, you should then copy the
dat folder from moul-scripts to get the unencrypted versions. It requires Python 2.7 and libHSPlasma for Python.
Note on Python: the Python scripts need to be compressed into a
Python.pak file. This can be achieved using the
plPythonPack.exe tool obtained from compiling CWE (the tool only uses relative paths).
If all went well, you can now start your server:
~/dirtsand$ /opt/dirtsand/bin/dirtsand /opt/dirtsand/dirtsand.ini
And that's it. You will obtain an interactive terminal to operate DIRTSAND which will output log messages as they are printed. You might find it useful however to start DIRTSAND in a GNU screen/Byobu or X session.
You might find it difficult to connect without an account. To add one in DIRTSAND, type the following command into DIRTSAND's terminal:
addacct <username> <password>
Accounts can also be manually inserted into the DB.
DIRTSAND allows for a certain degree of flexibility. Here are a few things you can do:
- Changing default Neighborhood names: the prefixes for Hood names is set in the DB under "game->PublicAges", in the "AgeFilename" row and in the "AgeUserName"/"AgeDesc" fields; simply edit it to change the value.
If you are interested in lending a hand to DIRTSAND's development, visit the appropriate page.