Cmangos mit Ubuntu Server(Linux)

Heute starte ich mal wieder was, wo mein Herz für brennen tut. Server Zeugs mit Videospielen und dazu noch mit World of Warcraft Classic. The Burning Crusade Privat Server und Wrath of the Lich King Privat Server werde ich auch noch auf der Seite behandeln. Hierbei geht es nicht darum einen eigenen privaten Server für tausende an Spieler aufzubauen, sondern aus all den Komponoenten zu lernen.

Alles was ich hier beschreibe fällt unter Lernen aka Education. Allerdings möchte ich alles dokumentieren und auch für weitere Nerds aufbereiten.

Dies ist eine Abwandlung des auf dem cmangos Git zu findenden Dokument.

In diesem Artikel nehmen wir die Open Source Software C-mangos(Continued – Massive Network Game Object Server Suite) die dazu da ist einen World of Warcraft Server zu emulieren, allerdings auch für eigene Projekte mit Unity oder Unreal genutzt werden kann. In diesem Fall nutze ich den Server für Classic und das ohne Repack. Ich werde also Step by Step alles aufsetzen, von github clonen und compilieren. Das Ganze werde ich auf einem Ubuntu 18 Server aufsetzen, da es einfacherer ist, diesen in einer VM laufen zu lassen.

Vorbereitungen

Ich nutze hierzu Virtualbox und eine neue Version von Ubuntu Server. Links folgen noch.

Nachdem ich den Server installiert habe(Wenn nötig kann ich diese Schritte auch noch dokumentieren) habe ich mich eingeloggt und werde erst mal das System updaten. Dies tue ich noch in den VirtualBox Maske.
Hierzu nutze ich: sudo apt update
Dann: sudo apt upgrade
Das kann eine weile dauern.

Achtung: Wer sich nicht mit Linux System auskennt, sollte sich erst damit befassen. Fast alle Befehle sollten mit dem Mangos Nutzer oder einem sudo ausgeführt werden. Wer erst alles mit dem sudo erstellt sollte später mit einem chown den User mangos den Ordnern und Dateien als Besitzer hinzufügen. Dies ist auch einfacher wenn man zB.: WinSCP nutzt um Dateien auf den Server zu transferieren.

Alles weitere werde ich mit Putty und OpenSSH angehen. Link zu putty folgt.

Mit dem Befehl ifconfig hole ich mir die IP Adresse, das geht nur wenn man in den VirtualBox Config auch die Netzwerkbrücke eingestellt hat. Diese IP Adresse(192.168.xxx.xxx) nutzen wir um uns mit Putty auf den Server zu Verbinden.

Nun wird es Zeit die nötige Software zu installieren:

sudo apt-get install build-essential gcc g++ automake git-core autoconf make patch libmysql++-dev mysql-server libtool libssl-dev grep binutils zlibc libc6 libbz2-dev cmake subversion libboost-all-dev

Mit dem einen Befehl installieren wir die ganze Software die wir brauchen um den cMangos Server zu compilieren und zu installieren. Danach erstellen wir einen neuen Nutzer mit dem Usernamen Mangos.

sudo useradd -m -d /home/mangos -c "MaNGOS" -U mangos

Um nun die Repo von Git zu clonen gehen wir in den Ordner home des neu angelegten Nutzers.

cd /home/mangos

Nun ist es soweit, wie holen uns C-Mangos auf unser System. Dies tuen wir mit einem git Befehl:

git clone git://github.com/cmangos/mangos-classic.git mangos

Gleich danach holen wir uns die Classic Datenbank mit:

git clone git://github.com/cmangos/classic-db.git

CMangos Compilieren

Wir haben den Nutzer mangos erstellt und mit dem git Befehl die Software auf unser System runtergeladen. Nun sollten wir ein /home/mangos/mangos in unserem System vorfinden. sonst: cd /home/mangos/mangos

Wir benötigen nun einen Ordener den wir build nennen.

mkdir build

Nun bewegen wir uns in den build Ordner

cd build

Kompiliert Cmake inklusive Extractors und Playerbot, und bereiten diese Optionen für den Compiler vor:

cmake ../mangos -DCMAKE_INSTALL_PREFIX=\../mangos/run -DBUILD_EXTRACTORS=ON -DPCH=1 -DDEBUG=0 -DBUILD_PLAYERBOT=ON

Nun wird Compiliert:(Da wir einen standard Ubuntu mit 1 Core geladen haben in VirtualBox, ohne ein -j)

make

Nun kopieren wir die compilierten Dateien nach /home/mangos/mangos/run

cp /home/mangos/mangos/build/* /home/mangos/mangos/run

Wir bleiben im Build Ordner und lassen das install laufen:

make install

Schnell in den run/etc Ordner:

cd /home/mangos/mangos/run/etc

Damit wir die config files für den Login und WeltServer erstellen können:

cp mangosd.conf.dist mangosd.conf
cp realmd.conf.dist realmd.conf

Datenbank befüllen

Die Datenbank ist in den meisten Fällen schon bereits installiert sonst tut es ein:

sudo apt install mysql-server

Wenn es kein Password gibt, dann kann man mit einem Befehl gleich in die Datenbank.

sudo mysql

Wir navigieren zu den sql Dateien die mit dem CMangos gekommen sind.

cd /home/mangos/mangos/sql

Ich nutze hierbei meinen SUDO NUTZER. Wenn Ihr einen anderen Nutzer benutzt dann müsst ihr den Befehl leicht umändern

mysql -u mangos -p ...

Wir erstellen die fehlenden Tables und einen neuen Datenbanknutzer(diesen nutze ich auch für externe Zugriffe auf die Datenbank. Wie man die Datenbank flushed für neue Privileges, erkläre ich an dieser Stelle nicht):

sudo mysql -uroot < mangos/sql/create/db_create_mysql.sql

Wir laden die Basis in die Datenbank.

sudo mysql -uroot classicmangos < base/mangos.sql

Dann laden wir die DBCs in die Datenbank. Einfach mit cd in die Folder und dann mit dem bereits benutzten Befehl alle in die Datenbank reinladen.

sudo mysql -uroot classicmangos < base/dbc/ - alle sql dateien einzeln laden.

Wir laden die Character in die Datenbank:

sudo mysql -uroot classiccharacters < base/characters.sql

Nun lassen wir ein script laufen um die ganzen Welt zum Leben zu erwecken… oder einfach nur um alle Daten in unserer Datenbank zu haben.

Wir gehen in den Ordner in dem wir unsere git clone Classic Datenbank abgelegt haben.

cd /home/mangos/classic-db

Und lassen das Script laufen

./InstallFullDB.sh

Nun öffnen wir die neue Config

nano InstallFullDB.config (wenn ihr nicht mit dem mangos User drin seid, nicht das sudo vergessen)

Sucht nach dieser Stelle:

## Define the path to your core's folder
##   If set the core updates located under sql/updates/mangos from this mangos-directory will be added automatically
-> CORE_PATH="" <-

Erweitert den CORE_PATH mit dem Ordner in dem das Cmangos liegt

CORE_PATH"/home/mangos/mangos"

Das extrahieren den maps, mmaps, vmaps usw werde ich in einem weiteren Artikel behandeln. Am einfachsten ist es, wenn ihr euch ein Repack mit den Dateien runterladed und diese DBC Daten einfach auf euren Server kopiert.

Mit ./mangosd und ./realmd startet ihr die beiden Server die ihr braucht. Entweder ihr nutzt 2 mal das Programm putty.exe auf eurem Rechner oder ihr nutzt das von Linux bereitgestellte Screen. Ich werde immer wieder diesen Artikel erweitern und erneuern. Vielleicht werde ich auch ein Video dazu bereitstellen.