TrinityCore server install guide
Upcoming SlideShare
Loading in...5

TrinityCore server install guide



TrinityCore, only for education

TrinityCore, only for education



Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    TrinityCore server install guide TrinityCore server install guide Presentation Transcript

    • TrinityCore Understand & Implement of Private Sever
    • Environment Client - Windows 8 - WoW Client: 3.3.5a Server - Virtual box, Ubuntu 13.04 - TrinityCore: TDB 335.52
    • What will we learn from this course?
    • Server setting apt-get update apt-get install openssh-server sudo ufw enable sudo ufw allow 22 sudo ufw allow 3306 sudo ufw allow 3724 sudo ufw allow 8085 sudo ufw disable
    • Getting started $ sudo apt-get install build-essential autoconf libtool gcc g++ make cmake git-core patch wget links zip unzip unrar $ sudo apt-get install openssl libssl-dev mysql-server mysql-client libmysqlclient15-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev
    • Debian-based distributions If you are using Ubuntu 12.04 LTS, Debian 7 or some 2013 linux distributions you will also need: $ sudo apt-get install libncurses5-dev
    • Creating a user to work with $ sudo adduser <username>
    • Installing ACE (Adaptive Communication Environment) $ sudo apt-get install libace-dev
    • Installing ACE (Adaptive Communication Environment) TrinityCore requires a specific communication-library for inter-process communication, and as such needs special attention on that matter. This is because most distributions (even the most recent ones) do not supply the version required by TrinityCore as part of their basepackages.
    • Building the server itself Getting the sourcecode cd ~/ git clone git:// A directory trinitycore will be created automatically and all the source files will be stored in there.
    • Creating the build-directory To avoid issues with updates and colliding sourcebuilds, we create a specific build-directory, so we avoid any possible issues due to that (if any might occur) mkdir build cd build
    • Configuring for compiling To configure the core, we use space-separated parameters attached to the configuration-tool (cmake) - do read the entire section before even starting on the configuration-part. <u>This is for your own good, and you HAVE been warned. A full example will also be shown underneath the explanations.</u> cmake ../TrinityCore/ -DPREFIX=/home/<username>/server DWITH_WARNINGS=1
    • Building the core After configuring and checking that everything is in order (read cmakes output), you can build Trinity (this will take some time unless you are on a rather fast machine) make make install
    • Building the core If you have multiple CPU cores, you can enable the use of those during compile : make -j <number of cores> make install
    • Building the core After compiling and installing, you will find your core binaries in /home/<username>/server/bin, and the standard configuration files in the /home/<username>/server/etc folder. (As usual, replace <username> with the username you created earlier). Now you can continue reading on and learn how to update the sourcetree.
    • Keeping the code up to date TrinityCore developers are always at work fixing and adding new features to the core. You can always check them here. To update the core files, do the following : cd ~/TrinityCore/ git pull origin master Now return to the compilation-section again, and repeat the instructions there.
    • Installing libMPQ (MoPaQ) MPQ-reader library Installation of the libMPQ library is only required if you want to extract the datafiles, and/or compile the tools. Do note that the library has been hardlinked to the binary in later revisions, and is not "enforced" unless the tools are required.
    • Configuring, compiling and installing libMPQ Change directory to ~/TrinityCore/dep/libmpq/ before doing this Alternative 2 : Systemwide installation sh ./ ./configure make sudo make install
    • Optional software Graphical database-viewing/editing ● HeidiSQL, ● SQLyog, Remote console connects to the server ● Putty, ● Putty Tray, Filetransfer through SFTP or FTP ● WinSCP,
    • Installing MySQL Server When configuring MySQL make sure you remember the password you set for the default root account and that you enabled both MyISAM and InnoDB engines. You can leave all the other settings as default. You might want to enable remote access to your MySQL server if your are also testing a website for your Trinity server or if you have friends testing with you which need access from remote. Remember that this will decrease the security level of your MySQL server!
    • Installing The Trinity Databases Trinity needs three databases to run - Auth, Characters, and World: auth - holds account data - usernames, passwords, GM access, realm information, etc. characters - holds character data - created characters, inventory, bank items, auction house, tickets, etc. world - holds game-experience content such as NPCs, quests, objects, etc.
    • Setting up MySQL Server 1.Create the three databases by importing /root/TrinityCore/sql/create/create_mysql.sql. You now have three databases - auth, characters, and world. You may need to refresh your program in order to see the new databases. 2.Click on the "auth" database and import the auth database structure by importing /root/TrinityCore/sql/base/auth_database.sql.
    • Setting up MySQL Server 3.Click on the "characters" database and import the characters database structure by importing /root/TrinityCore/sql/base/character_database.sql. 4.Click on the "world" database and import the world database structure by extracting and importing the "TDB_full" .sql file you downloaded from the Downloading the Database section. *
    • Keeping the DB up to date Note: You can run the following query on the World database to see your current DB and core revision: SELECT * FROM `version`;
    • Setting up MySQL Server 1.Extract the TDB_FULL.sql file from the archive and import it into your world database. 2.If they exist, also import the characters_ and auth_ .sql files into their respective databases. 3.Once this is finished and you have already compiled your source, you may run the worldserver.exe to load your server. The revision update is complete.
    • TrinityCore Database configuration
    • Database Config root@vTrinity13:~/TrinityCore/sql/create# mysql -u root p < create_mysql.sql
    • Database Config mysql> show databases; +--------------------+ | Database | +--------------------+ | auth | | characters | | world | +--------------------+ 7 rows in set (0.01 sec)
    • Database Config root@vTrinity13:~/TrinityCore/sql# cat create/create_mysql.sql GRANT USAGE ON * . * TO 'trinity'@'localhost' IDENTIFIED BY 'trinity' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ; CREATE DATABASE `world` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE DATABASE `characters` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE DATABASE `auth` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON `world` . * TO 'trinity'@'localhost' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON `characters` . * TO 'trinity'@'localhost' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON `auth` . * TO 'trinity'@'localhost' WITH GRANT OPTION;
    • Database Config root@vTrinity13:~/TrinityCore/sql/base# mysql -u trinity p auth < auth_database.sql root@vTrinity13:~/TrinityCore/sql/base# mysql -u trinity p characters < characters_database.sql
    • Database Config root@vTrinity13:/home/joo/TDB_full_335. 52_2013_07_17# mysql -u trinity -p world < TDB_full_335. 52_2013_07_17.sql
    • Database Config root@vTrinity13:~/TrinityCore/sql/updates/world# mysql -u trinity -p world < 2013_07_17_00_world_version.sql Enter password:
    • Realmlist table You need to make sure that the authserver directs incoming connections to your realm. In the auth database there is a table called realmlist, where you need to edit the field *address* according to your needs :
    • Realmlist table -- Leave default localhost if you are connecting alone from the same machine TrinityCore runs on. <Your LOCAL NETWORK ip> -- Use the machine's LAN ip if you want other computers from the same network as the TrinityCore server to connect to your server. <Your PUBLIC NETWORK ip> -- Use your PUBLIC ip if you have friends and testers which need to connect your server from the internet.
    • Realmlist table An example of how it would look with a real address: use auth; update realmlist set address = '' where id = 1;
    • Realmlist table mysql> describe realmlist; +----------------------+----------------------+------+-----+---------------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------------+----------------------+------+-----+---------------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(32) | NO | UNI | | | | address | varchar(255) | NO | | | | | localAddress | varchar(255) | NO | | | | | localSubnetMask | varchar(255) | NO | | | | | port | smallint(5) unsigned | NO | | 8085 | | | icon | tinyint(3) unsigned | NO | |0 | | | flag | tinyint(3) unsigned | NO | |2 | | | timezone | tinyint(3) unsigned | NO | |0 | | | allowedSecurityLevel | tinyint(3) unsigned | NO | |0 | | | population | float unsigned | NO | |0 | | | gamebuild | int(10) unsigned | NO | | 12340 | | +----------------------+----------------------+------+-----+---------------+----------------+ 12 rows in set (0.00 sec)
    • Realmlist table mysql> update realmlist set address = '' where id = 1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from realmlist where id = 1; +----+---------+-----------+--------------+-----------------+------+------+------+----------+---------------------+------------+-----------+ | id | name | address | localAddress | localSubnetMask | port | icon | flag | timezone | allowedSecurityLevel | population | gamebuild | +----+---------+-----------+--------------+-----------------+------+------+------+----------+---------------------+------------+-----------+ | 1 | Trinity | | | | 8085 | 1 | 0 | 1| 0| 0| 12340 | +----+---------+-----------+--------------+-----------------+------+------+------+----------+---------------------+------------+-----------+ 1 row in set (0.00 sec)
    • Check version mysql> select * from version; +-----------------------------------------------------------------------------------------+---------------+-----------+----------+ | core_version | core_revision | db_version | cache_id | +-----------------------------------------------------------------------------------------+---------------+-----------+----------+ | TrinityCore rev. 394b2c684553 2013-07-29 21:46:49 +0100 (master branch) (Unix, Release) | 394b2c684553 | TDB 335.52 | 52 | +-----------------------------------------------------------------------------------------+---------------+-----------+----------+ 1 row in set (0.00 sec)
    • DB update script #!/bin/bash FILES=~/TrinityCore/sql/updates/dbname/*.* for f in $FILES do echo "Processing $f file..." mysql --password=password dbname < $f done
    • TrinityCore Setting up the Server config
    • Extracting dbc, maps and vmaps files In order to run, TrinityCore needs dbc- and map-files. In addition, if you want to enable vmaps (Making NPCs unable to see through walls etc.) you will need to extract them as well.
    • dbc and maps files cd <your WoW client directory> /home/<username>/server/bin/mapextractor mkdir /home/<username>/server/data cp -r dbc maps /home/<username>/server/data
    • vmaps and mmaps files cd <your WoW client directory> /home/<username>/server/bin/vmap4extractor mkdir /home/<username>/server/data/vmaps mkdir /home/<username>/server/data/mmaps cp -r vmaps mmaps /home/<username>/server/data cp Buildings/* /home/<username>/server/data/vmaps
    • Configuring the server First of all you need to create 2 files : worldserver.conf and authserver.conf in your /home/<username>/server/etc/ folder. You'll find 2 files named worldserver.conf.dist and authserver.conf.dist. Copy these to their namesakes without the .dist extension. cp worldserver.conf.dist worldserver.conf cp authserver.conf.dist authserver.conf
    • worldserver.conf Edit MySQL account username and password (instead of trinity;trinity). LoginDatabaseInfo = ";3306;trinity;trinity; auth" WorldDatabaseInfo = ";3306;trinity;trinity; world" CharacterDatabaseInfo = ";3306;trinity;trinity; characters"
    • worldserver.conf vmap.enableLOS = 1 -- set this to 0 vmap.enableHeight = 1 -- set this to 0 vmap.petLOS = 1 -- set this to 0 vmap.enableIndoorCheck = 1 -- set this to 0
    • worldserver.conf WorldServerPort = 8085 RealmServerPort = 3724
    • Check a port root@vTrinity13:/home/joo/server/etc# netstat -a |grep 8085 tcp 0 0 *:8085 *:* LISTEN root@vTrinity13:/home/joo/server/etc# netstat -a |grep 3724 tcp 0 0 *:3724 *:* LISTEN
    • Check a port from PC to Server C:>telnet 3724 C:>telnet 8085
    • authserver.conf Edit MySQL account username and password (instead of trinity;trinity). LoginDatabaseInfo = ";3306;trinity;trinity;auth"
    • NAT port forwarding in Virtulbox
    • TrinityCore Getting start
    • Server directory
    • WorldServer
    • Create account You can type commands inside the worldserver program, similar to a command prompt. Type: account create <user> <pass> Example: account create test test Type: account set gmlevel <user> 3 -1 Example: account set gmlevel test 3 -1 DO !NEVER! create an account directly into your database unless you are ABSOLUTELY SURE that you know what and how to do! The "3" is the GM account level (higher numbers = more access), and the "-1" is the realm ID that stands for "all realms".
    • AuthServer
    • Wow Client
    • Future configuration Client - Windows 8 ● Wow Client WoW Client Server - Virtual box, Ubuntu 13.04 ● Game Server ○ auth ○ world ● Database Server ○ auth, world, character Auth Server World Server auth db world db character db
    • TrinityCore Reference & Trouble shooting
    • Reference sites Repack download
    • download dbc, maps and vmaps files
    • Tcpdump #tcpdump tcp port 21 #tcpdump dst host aaa #tcpdump src host aaa root@vTrinity13:~# tcpdump -p -i lo -s 0 -l -w - dst port 3306 | strings --bytes=6 > query.txt
    • make compile error 1 [ 99%] Building CXX object src/server/worldserver/CMakeFiles/worldserver. dir/CommandLine/CliRunnable.cpp.o [ 99%] Building CXX object src/server/worldserver/CMakeFiles/worldserver. dir/RemoteAccess/RASocket.cpp.o [ 99%] Building CXX object src/server/worldserver/CMakeFiles/worldserver. dir/RemoteAccess/RARunnable.cpp.o /root/TrinityCore/src/server/worldserver/RemoteAccess/RARunnable .cpp: In member function Virtual void RARunnable::run()
    • make compile error 2 /root/TrinityCore/src/server/worldserver/RemoteAccess/RARunnable .cpp:78:72: error: no matching function for call to ACE_Reactor:: run_reactor_event_loop(ACE_Time_Value) compilation terminated due to -Wfatal-errors. make[2]: *** [src/server/worldserver/CMakeFiles/worldserver. dir/RemoteAccess/RARunnable.cpp.o] Error 1 make[1]: *** [src/server/worldserver/CMakeFiles/worldserver.dir/all] Error 2 make: *** [all] Error 2
    • make compile error 3 collect2: error: ld terminated with signal 9 [Killed] Not TC error, for sure shared or VPS, complile got killed because high cpu ussage. sudo dd if=/dev/zero of=/tmp/swap bs=1M count=512 sudo mkswap /tmp/swap sudo swapon /tmp/swap