Homemud
*******


Abhaengigkeiten
===============

   Um den Treiber mit allen Features, die unsere Mudlib benutzt, zu
   bauen, benoetigt man folgende Pakete (die Namen koennen je nach
   Distribution abweichen):

   libjson0/json-c, libgnutls30, libsqlite3, libpcre3, libxml2,
   libgcrypt, libpcre3, libiconv (diese ist bei neueren Distributionen
   in libc6-dev enthalten).

   Beachte, dass man auf debianbasierten System auch die
   entsprechenden Entwicklerpackete (**-dev*) mitinstallieren muss,
   weil sie die notwendigen Header-Dateien der Files enthalten.

   Fuer die Kompilation (nicht fuer den Betrieb) ist auch ein
   aktuelles "bison" (>=2.7.x) erforderlich.


Anleitung fuer ein Homemud, unter Linux
=======================================

   Mit den folgenden Schritten installiert man die gegenwaertige
   mudlib und einen Driver der Version LDMUD-3.6.4 oder
   https://github.com/zesstra/ldmud/releases/tag/mgreboot-20210507

   1. Lade den aktuellen Driver unter https://github.com/ldmud/ldmud
      herunter. Du kannst auch das Repo via git clonen.

   2. Lade die aktuelle Mudlib von https://mg.mud.de/gerrit/gitweb?p
      =mudlib-public.git herunter, entweder durch einen Klick auf
      "snapshot" oder mittels git clonen. Dabei kann sich git an
      unserem selbsterstellten SSL-Zertifikat stoeren, wenn Du Dich
      darum nicht kuemmern willst, nutze die Option "-c
      http.sslVerify=false".

   3. Gehe in das *src/*-Verzeichnis des drivers

   4. Im *src/*-Verzeichnis, fuehre "./autogen.sh" aus (Hierfuer ist
      das Paket autoconf empfehlenswert.)

   5. Im src/-Verzeichnis, passe die Pfade in settings/morgengrauen
      an, und fuehre settings/morgengrauen aus

   6. im src/-Verzeichnis, kompiliere und installiere den Treiber mit
      "make all" und "make install-all". (Hierfuer wird das Paket
      bison benoetigt.)

   7. Falls noch nicht geschehen, schiebe die Mudlib in den Ordner,
      den Du in *settings/morgengrauen* eingestellt hast

   Nun laesst sich das Homemud mit der installierten ldmud-binary
   starten. Du kannst als Argument noch einen alternativen Port
   angeben.

   8. Starte das mud mit der installierten ldmud-Binary. Mittels
      "ldmud <port>" kannst Du auch den Port bestimmten, auf welchem
      das Homemud laeuft.

   9. Einloggen als "jof".

   Optional kannst Du *anschliessend* den Namen des Mudgottes von Jof
   auf etwas anderes aendern, das geht wie folgt:

     clone /obj/tools/MGtool
     xcall $me->SetProp(P_START_HOME, "/players/thomas/workroom");
     ende

   Auf der Shell:

     mv data/save/j/jof.o data/save/t/thomas.o
     mv data/secure/save/j/jof.o data/secure/save/t/thomas.o
     # (beachte den Namen des Unterverzeichnisses, es ist der erste Buchstabe
     # Deines Namens. )
     sed -i 's/jof/thomas/' data/secure/save/t/thomas.o
     mkdir -p players/thomas
     mv players/jof/workroom.c players/thomas/workroom.c

   Beachte hierbei allerdings, dass in Homemuds immer automatisch
   sichergestellt wird, dass "Jof" existiert. Falls noetig, wird diesr Char
   ohne Passwort angelegt. Ist Dein Homemud erreichbar, gibt "jof" bitte ein
   Passwort und lasse den Char bestehen. (Alternativ muss Du das File
   /secure/testmud.c anpassen.)


Beispielinstallation
====================

   cd <mudhome>
   git clone https://github.com/ldmud/ldmud.git
   cd ldmud.git/src
   ./autogen.sh
   settings/morgengrauen
   make all && make install-all
   cd <mudhome>
   # hier wurde der bin/ Ordner nicht angepasst, wir verschieben noch die
   # Binary
   mv bin.install/ldmud bin/ldmud
   tar xvzf <mudlib-snapshot.tgz>
   # Alternative
   git clone https://mg.mud.de/gerrit/mudlib-public mudlib
   cd <mudhome>
   bin/ldmud
   # oder
   bin/ldmud -m <alternative path to mudlib> <alternative port>
   # Einloggen als Jof.

Letzte Aenderung: 06.07.2021, Bugfix
