Projekt TrinityCore slouží k emulaci serveru pro známou hru World of Warcraft (WoW). Vznikl odštěpením části vývojářů z původního Mangosu. Dnes je vyvíjen ve dvou verzích – pro datadisk Wrath of the Lich King a Warlords of Draenor. V článku se budu zabývat prvním jmenovaným, protože je velice stabilní a naprostá většina věcí funguje bez chyb. Na druhou stranu zájemci o poslední datadisk Warlords of Draenor mohou podle tohoto návodu postupovat také, liší se jen v několika drobnostech a na ty v článku upozorním.
Co je potřeba?
TrinityCore pro svůj běh kromě „nearchaické“ verze systému a dalších knihoven vyžaduje také procesor s podporou instrukcí SSE2. Bohužel tak odpadá možnost server provozovat na zařízení s procesorem jiným než x86 (žádný ARM, PowerPC a další). Podporovány jsou tedy jen klasické 32bitové a 64bitové procesory.
Zájemci o provoz na jiné architektuře mohou zkusit některou ze starých verzí, která ještě SSE2 nevyžadovala, ale pro tento postup neexistuje žádný návod a ani se jím v tomto článku nebudu zabývat. Pro běh serveru doporučuji poslední verze oblíbených linuxových distribucí – návod je určen pro Ubuntu a Fedoru (obě v posledních verzích). Ubuntu 14.04 jsem otestoval také a vše funguje bez potíží. Kromě toho budete potřebovat i samotného herního klienta – je z něj potřeba exportovat mapy, vmapy a případně i mmapy.
Jako první věc je potřeba nainstalovat závislosti potřebné pro úspěšnou kompilaci, uživatelé Ubuntu je nainstalují takto:
sudo apt-get install build-essential autoconf libtool gcc g++ make cmake git-core wget p7zip-full libncurses5-dev zlib1g-dev libbz2-dev openssl libssl-dev mysql-server mysql-client libmysqlclient-dev libmysql++-dev libreadline6-dev libboost-dev libboost-thread-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-iostreams-dev
sudo apt-get install libzmq-dev #Pro Warlords of Draenor
A ve Fedoře pak následovně:
sudo dnf install autoconf libtool gcc gcc-c++ make cmake git wget p7zip ncurses-devel openssl openssl-devel mariadb mariadb-server mariadb-devel readline-devel zlib-devel bzip2-devel boost-devel
sudo dnf install zeromq3-devel #Pro Warlords of Draenor
3, 2, 1 … kompilujeme!
Před samotným sestavením stáhněte zdrojové kódy TrinityCore:
git clone -b 3.3.5 git://github.com/TrinityCore/TrinityCore.git
a nebo případně verzi pro WoD:
git clone -b 6.x git://github.com/TrinityCore/TrinityCore.git
Potom připravte složku pro uložení zkompilovaných binárních souborů:
mkdir ~/wow_server cd TrinityCore mkdir build cd build
a spusťte kompilaci:
cmake ../ -DCMAKE_INSTALL_PREFIX=~/wow_server -DCONF_DIR=/home/$(whoami)/wow_server/etc -DTOOLS=1
make -j$(nproc)
make install
Pro zjednodušení jsem do návodu nepřidával instrukce na vytvoření uživatele vyhrazeného pro TrinityCore – jestliže budete server provozovat jen pro sebe, případně pár známých, tak to není potřeba.
Po úspěšné kompilaci je potřeba extrahovat datové soubory z herního klienta a nakopírovat je do patřičné složky serveru. Pomocí příkazu cd se v terminálu přesuňte do složky se hrou a spusťte postupně následující příkazy (v našem případě byla hra umístěna ve složce World of Warcraft v domovském adresáři)
cd ~/World\ Of\ Warcraft/
~/wow_server/bin/mapextractor
~/wow_server/bin/vmap4extractor
mkdir vmaps
~/wow_server/bin/vmap4assembler Buildings vmaps
mkdir mmaps
~/wow_server/bin/mmaps_generator
mkdir ~/wow_server/data
cp -r dbc maps vmaps mmaps ~/wow_server/data
Na slabších strojích může proces přípravy mmap trvat i několik hodin. Pokud o tuto funkčnost nemáte zájem, tak klidně generování mmap vynechejte. K čemu mmapy slouží, pochopíte nejlépe z tohoto videa na YouTube.
Instalace databáze a konfigurace
A dostáváme se k poslednímu kroku ke spuštění serveru. Před jeho spuštěním je potřeba naimportovat databázi (včetně aktualizací), správně nastavit konfigurační soubory a vytvořit účet hráče.
Začnu u konfiguračních souborů – ty je potřeba přejmenovat a upravit (popíši jen správné nastavení přístupu k databázi, zbytek si už upraví každý sám, soubor je plně okomentovaný).
cd ~/wow_server/etc/
cp worldserver.conf.dist worldserver.conf
cp authserver.conf.dist authserver.conf
cp bnetserver.conf.dist bnetserver.conf # Pro WoD
A nyní je potřeba upravit 2 konfigurační soubory:
worldserver.conf:
DataDir = "." změnit na DataDir = "../data"
a upravit pro přihlášení k MySQL databázi (trinity;trinity je jméno;heslo)
LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth" WorldDatabaseInfo = "127.0.0.1;3306;trinity;trinity;world" CharacterDatabaseInfo = "127.0.0.1;3306;trinity;trinity;characters"
Klidně pro soukromé účely využijte účet root, takže blok může vypadat takto (uživatel root bez hesla):
LoginDatabaseInfo = "127.0.0.1;3306;root;;auth" WorldDatabaseInfo = "127.0.0.1;3306;root;;world" CharacterDatabaseInfo = "127.0.0.1;3306;root;;characters"
A podobně je potřeba upravit jeden řádek v authserver.conf
:
LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"
podle vzoru výše tedy do tohoto tvaru:
LoginDatabaseInfo = "127.0.0.1;3306;root;;auth"
A nakonec můžete povolit mmapy:
mmap.enablePathFinding = 0 změnit na mmap.enablePathFinding = 1
Nyní je už jen potřeba vytvořit databázi, před začátkem se ujistěte, že běží MySQL server
wget https://github.com/TrinityCore/TrinityCore/releases/download/TDB335.59/TDB_full_335.59_2015_07_14.7z 7z x TDB_full_335.59_2015_07_14.7z mysql -p -u root < ~/TrinityCore/sql/create/create_mysql.sql mysql -p auth -u root < ~/TrinityCore/sql/base/auth_database.sql mysql -p characters -u root < ~/TrinityCore/sql/base/characters_database.sql mysql -p world -u root < ~/TDB_full_world_335.59_2015_07_14.sql mysql -p characters -u root < ~/updates_tdb_33558_to_33559_only/characters_2015_03_21_2015_07_15.sql cat ~/TrinityCore/sql/updates/auth/*.sql > ~/auth_updates.sql cat ~/TrinityCore/sql/updates/characters/*.sql > ~/characters_updates.sql cat ~/TrinityCore/sql/updates/world/*.sql > ~/world_updates.sql mysql -p auth -u root < ~/auth_updates.sql mysql -p characters -u root < ~/characters_updates.sql mysql -p world -u root < ~/world_updates.sql
Tímto by byla databáze vytvořena a naplněna daty, stačí už tedy spustit samotný server:
./authserver ./worldserver
Je potřeba použít 2 okna terminálu, případně screen
Takto vypadá úspěšně spuštěný server
A pomocí příkazů do worldserveru vytvoříte herní účet s maximálními právy:
account create test test account set gmlevel test 3 -1
(Jméno i heslo je zde „test“ a práva maximální.)
Nezapomeňte ještě nastavit správně realmlist herního klienta úpravou souboru realmlist.wtf
ve složce Data/enGB
(případně jiné jazykové verze) na 127.0.0.1, případně na IP adresu serveru, kde TrinityCore běží. U verze Warlords of Draenor ještě muusíte stáhnout upravený soubor WoW.exe
. Během hraní se vám mohou hodit GM příkazy pro jednoduchou úpravu vlastností vaší postavy. Jejich seznam i s komentářem naleznete zde.
Pomocí GM příkazů si zajdete i v pár lidech raidy pro 25 hráčů a budete se dobře bavit
Aktualizace serveru
Jednou za čas by bylo dobré server zaktualizovat na poslední revizi. Celý proces je časově poměrně náročný, takže aktualizace nemusíte provádět zbytečně často (doporučuji jednou za měsíc v případě verze pro WoTLK, WoD častěji).
Přesuňte se do složky se zdrojovými kódy a zaktualizujte je:
cd ~/TrinityCore git pull
A nyní je potřeba novou verzi zkompilovat:
rm -R build mkdir build cd build cmake ../ -DCMAKE_INSTALL_PREFIX=~/wow_server -DCONF_DIR=/home/$(whoami)/wow_server/etc -DTOOLS=1 make -j$(nproc) make install
A zaktualizovat databázi:
cat ~/TrinityCore/sql/updates/auth/*.sql > ~/auth_updates.sql cat ~/TrinityCore/sql/updates/characters/*.sql > ~/characters_updates.sql cat ~/TrinityCore/sql/updates/world/*.sql > ~/world_updates.sql mysql -p auth -u root < ~/auth_updates.sql mysql -p characters -u root < ~/characters_updates.sql mysql -p world -u root < ~/world_updates.sql
Poznámka na závěr
Proces vytvoření serveru není úplně snadný, ale pokud se budete držet postupu výše, tak by vše mělo fungovat bez problémů. Jestliže i přesto narazíte na komplikace, tak se neváhejte v komentářích ptát, budu se vám snažit pomoct.