6. 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
9. 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.
10. Building the server itself
Getting the sourcecode
cd ~/
git clone git://github.com/TrinityCore/TrinityCore.git
A directory trinitycore will be created automatically and all the
source files will be stored in there.
11. 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
12. 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
13. 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
14. 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
15. 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.
16. 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.
17. 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.
18. Configuring, compiling and installing
libMPQ
Change directory to ~/TrinityCore/dep/libmpq/ before doing this
Alternative 2 : Systemwide installation
sh ./autogen.sh
./configure
make
sudo make install
19. Optional software
Graphical database-viewing/editing
● HeidiSQL, http://www.heidisql.com/
● SQLyog, http://www.webyog.com/en/
Remote console connects to the server
● Putty, http://www.chiark.greenend.org.uk/~sgtatham/putty/
● Putty Tray, http://haanstra.eu/putty/
Filetransfer through SFTP or FTP
● WinSCP, http://winscp.net/eng/
20. 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!
21. 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.
22. 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.
23. 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.
* http://collab.kpsn.org/display/tc/Database_master
24. 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`;
25. 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.
28. Database Config
mysql> show databases;
+--------------------+
| Database
|
+--------------------+
| auth
|
| characters
|
| world
|
+--------------------+
7 rows in set (0.01 sec)
29. 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;
33. 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 :
34. Realmlist table
127.0.0.1
-- 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.
35. Realmlist table
An example of how it would look with a real address:
use auth;
update realmlist set address = '192.168.56.1' where id
= 1;
36. 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 |
| 127.0.0.1
|
|
| localAddress
| varchar(255)
| NO |
| 127.0.0.1
|
|
| localSubnetMask
| varchar(255)
| NO |
| 255.255.255.0 |
|
| 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)
37. Realmlist table
mysql> update realmlist set address = '192.168.56.1' 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 | 192.168.56.1 | 127.0.0.1 | 255.255.255.0 | 8085 | 1 | 0 |
1|
0|
0|
12340 |
+----+---------+-----------+--------------+-----------------+------+------+------+----------+---------------------+------------+-----------+
1 row in set (0.00 sec)
41. 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.
42. 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
44. 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
45. worldserver.conf
Edit MySQL account username and password (instead of
trinity;trinity).
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"
46. 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
55. 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".
62. 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
67. 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()
68. 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
69. 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
http://www.trinitycore.org/f/topic/3178-error-with-thecompiliation-make-install/