Building TrinityCore 9847 with TrinityDB r34 on Ubuntu 10.04

Well, another TrinityCore/TDB release has arrived (http://forum.trinitycore.org/topic/28139-tdb-3351134-love-hate-and-passion-has-been-released/), so I'm rebuilding my Trinity server from scratch and sharing the process again. Happily, I saw much fewer errors than when I built r33. No errors, in fact!

Accordingly, this guide describes the process of setting up TrinityCore revision 9847 with TrinityDB 335.11.34 (TDB r34) on an Ubuntu 10.04 system. The directions should work on Ubuntu 9.10 but have not been tested there. I got most of my clues from http://www.trinitycore.info/index.php?title=Installing_TrinityCore_on_recent_Linux-based_systems. I highly suggest you keep that document handy while following this guide, as it goes into detail on many explanations which I will be glossing over.



To avoid unnecessary content duplication, please see my post at http://sectio-aurea.blogspot.com/2010/09/installing-trinitycore-dependencies-on.html for an explanation of installing Ubuntu-specific build dependencies and setting up the Trinity server user environment. Specifically, I'm building under /home/trinity as 'trinity' user. Make sure you follow those directions first if this is your first build, then come back to this page.

Building TrinityCore rev9847

$ cd ~/
$ hg clone http://trinitycore.googlecode.com/hg/ trinitycore
$ mkdir build
$ cd build
$ cmake ../trinitycore/ -DPREFIX=/home/trinity/server -DSQL=1 -DTOOLS=1 -Wno-dev

For the build, I passed the '-j 4' switch to use all CPU cores - use different values after '-j' depending on the number of your cores.:

$ make -j 4
$ make install
Setting up TrinityDB 335.11.34 (TDB r34)

For this installation, I chose to do a clean install of the r34 database release. I am NOT preserving my current data. This was in large part due to the inconsistencies I encountered with r33 - I wanted to make sure that those issues were resolved. So, I completely dropped databases 'world', 'auth' and 'characters' prior to running these update files.

$ cd ~/
$ hg clone http://trinitydb.googlecode.com/hg/ trinitydb
$ mysql -u root -p < server/share/trinity/sql/tools/create_mysql.sql
$ mysql -u root -p auth < trinitycore/sql/base/auth_database.sql
$ mysql -u root -p characters < trinitycore/sql/base/characters_database.sql
$ cd ~/trinitydb/full_db/
$ unzip TDB_335.11.34_9847.zip
$ mysql -u trinity --password="trinity" world < TDB_335.11.34_9847.sql
Setting up DBC, maps and vmaps

I copied a 3.3.5 retail client directory over from a Windows partition; you could also install through Wine directly to Ubuntu if desired.

$ cd ~/
$ cp -R /host/Users/Public/Games/World\ of\ Warcraft/ .

Now, extract maps and copy to the server:

$ cd World\ of\ Warcraft/
$ /home/trinity/server/bin/mapextractor
$ cp -r dbc/ maps/ /home/trinity/server/data/

And vmaps:

$ /home/trinity/server/bin/vmap3extractor
$ mkdir vmaps
$ /home/trinity/server/bin/vmap3assembler Buildings vmaps
$ cp -r vmaps/ /home/trinity/server/data/

Afterwards you can remove the extracted data from your client directory:

$ rm -rf dbc/ maps/ vmaps/

Configuring the worldserver and authserver

$ cd ~/
$ cd server/etc/
$ cp authserver.conf.dist authserver.conf
$ cp worldserver.conf.dist worldserver.conf 

Setting up logs a bit better than the default, which dumps them into the bin directory:

$ cd ~/
$ mkdir -p server/log/worldserver
$ mkdir -p server/log/authserver

A few modifications are needed to worldserver.conf; set these values:

DataDir = "/home/trinity/server/data/"
LogsDir = "/home/trinity/server/log/worldserver/"

Changes in authserver.conf:

LogsDir = "/home/trinity/server/log/authserver/"
BindIP = "127.0.0.1"


Running TrinityCore 'worldserver' and 'authserver'

For server startup, it's nice to run each daemon in the foreground in a separate terminal, as the worldserver daemon will spawn an interactive control console upon startup.

The two server binaries which were just built reside here.

/home/trinity/server/bin/authserver
/home/trinity/server/bin/worldserver

I created convenient start scripts in the 'trinity' user's home directory.

$ echo "/home/trinity/server/bin/authserver" > authserver_start.sh
$ echo "/home/trinity/server/bin/worldserver" > worldserver_start.sh
$ chmod +x *_start.sh

And created stop scripts, although in practice you can just Ctrl-C in their terminals to shut down.

$ echo "kill -9 `pidof authserver`" > authserver_stop.sh
$ echo "kill -9 `pidof worldserver`" > worldserver_stop.sh
$ chmod +x *_stop.sh

Running the start scripts in separate terminals under the 'trinity' user:

$ ./authserver_start.sh
$ ./worldserver_start.sh


The authserver starts up quickly with a quiet log; the worldserver takes a minute or less to start up, and uses around 200MB of memory while running. What do they look like in the process list? Easy to spot:

trinity  25052 25051  6 09:57 pts/0    00:00:09 /home/trinity/server/bin/worldserver
trinity  25127     1  0 10:00 pts/1    00:00:00 /home/trinity/server/bin/authserver

Client Configuration

The realm is running - great! Time to test a client connection. You'll need Wine to run the client:

$ sudo apt-get install wine1.2

Make sure your realmlist references are to localhost. Here's my Data/enUS/realmlist.wtf for the client:

set realmlist 127.0.0.1
set patchlist 127.0.0.1
set realmlistbn ""
set portal us

And the WTF/Config.wtf:

SET realmList "127.0.0.1"
SET patchlist "127.0.0.1"
SET locale "enUS"
SET portal "us"
SET hwDetect "0"
SET gxRefresh "60"
SET gxMultisampleQuality "0.000000"
SET gxFixLag "0"
SET videoOptionsVersion "3"
SET movie "0"
SET Gamma "1.000000"
SET showToolsUI "1"
SET Sound_OutputDriverName "System Default"
SET Sound_MusicVolume "0.40000000596046"
SET Sound_AmbienceVolume "0.60000002384186"
SET farclip "777.000000"
SET specular "1"
SET groundEffectDensity "24"
SET projectedTextures "1"
SET gxWindow "1"
SET gxResolution "800x600"

Once the client is launched, you need to create an account to log in with: let's make a GM account first. We will use the interactive shell provided by TrinityCore. Go to the worldserver's shell, and hit 'enter', then give the following commands to create a GM account and give permissions for 2 expansion packs:

TC> account create admin PASSWORD
TC>Account created: ADMIN
TC> account set gmlevel admin 3 -1
TC>You change security level of account ADMIN to 3.
TC> account set addon admin 2
TC>Account ADMIN (Id: 1) have up to 2 expansion allowed now.

You may also wish to create a regular user for testing:

TC>account create user01 PASSWORD
TC>Account created: user01
TC> account set addon user01 2
TC>Account USER (Id: 2) have up to 2 expansion allowed now.

If you want to delete an account:

TC>account delete user01
TC>Account deleted: USER01

By default, new GM account characters are created as level 80. Regular user account characters come in as level 1. This and many other parameters can be adjusted in worldserver.conf to your liking.

As always, comments about how this works/doesn't work for you are welcome. Enjoy!

5 comments:

  1. I got an authentication issue with trinity core before, spent hours trying to figure out whats wrong. So i followed this instruction and my server is now working properly.

    ReplyDelete
  2. eYeStRaIn: glad it helped!

    As a side thought, it's probably about time for me to do a new build.

    ReplyDelete
  3. I have some problems with the database: when I start worldserver, after few seconds, it says:

    [ERROR]: In mysql_stmt_prepare() id: 2, sql: "SELECT entry, pool_entry FROM pool_quest"
    [ERROR]: Table 'world.pool_quest' doesn't exist

    Could you help me with that?

    ReplyDelete
  4. Solved! I didn't rember to update the DB with the .sql files contained in the /trinitycore/sql/updates folder! Thank you for this nice tutorial/guide/whatever!

    ReplyDelete
  5. Hi, we are setting this up and when I got to the step: cp -r dbc maps /home//server/data
    it says:
    cp: cannot stat `dbc': No such file or directory
    cp: cannot stat `maps': No such file or directory

    Help? email me at simpson092405@ gmail.com please

    ReplyDelete

Comments welcome!