Want to create your own World of Warcraft Cataclysm private server? We've got you covered! In this guide, we'll walk you through the process of compiling and setting up your server.
For this tutorial we will be using a source maintained by: The-Cataclysm-Preservation-Project
Step 1: Software RequirementsPlease make sure to read the software installment section to ensure you install the software correctly.
- Git v2.39.0
- Visual Studio 2019
- VS 2019 (any edition) no longer includes the C++ compiler as part of the default installation. You will need to include it during the installation process as shown in this picture: Image Here
- MySQL Installer 8.0.31
- Boost 1.73
- Important information on how to setup boost can be found here
- cMake 3.25.1
- OpenSSL 1.1.1s
Step 2: Software InstallmentGit:
Installing Git is a straightforward process. Simply follow the prompts during the installation and click "next" until the installation is complete.
Visual Studio 2019:
Installing Visual Studio 2019 is also an easy process. However, make sure to select the option to install "Desktop C++" during the installation, as this is a requirement for compiling TrinityCore.
Once the installation is complete, you do not need to sign in. Instead, click "Not now, maybe later" and select your preferred theme before clicking "Start Visual Studio". You can exit Visual Studio for now, as it is not needed for the next step.
Installing MySQL is easy. When you first open the installer, you will be prompted to upgrade, simply click "Yes". On the next screen, select the option to "install server only.
You will need to make a MySQL root password, remember this information as it will be important later on
Anything after setting the MySQL password, you can just click next until you reach the last page and then click execute and finish. We have now installed MySQL.
HeidiSQL is simple to install, just open the installer and click next and complete the install.
We have a complete tutorial on how to install and setup boos 1.73.0, please read it if you have never done it before. You can that tutorial here: Click Link Remember for this tutorial, you will need boost 64bit since all the tools we have downloaded is for 64bit.
Installing cMake is easy, no extra steps required. Simply click and install it.
Installing OpenSSL is easy, no extra steps required. Simply click and install it.
We now have all the tools required to compile, let’s move onto the next step.
Step 3: Cloning Trinity Core 4.3.4
To clone the source from GitHub, we will use the Git Bash tool on your desktop. Begin by right-clicking on an empty space on your desktop and selecting “Git Bash Here.”
After the menu appears, enter or copy the following line into the window:
git clone https://github.com/The-Cataclysm-Preservation-Project/TrinityCore.git
Step 4: Prepare The Source
We will need to create a new folder on our desktop called "Build", you can name this anything but for this tutorial we will name it Build.
We will now open CMake and select our Trinity Core 4.3.4 source folder and select our Build
Once you have selected the two folders, you will need to click on Generate and select our compiler. We will need to select Visual Studio 16 2019 and then click "Finish".
If you followed the tutorial to this point, you should have no errors and see this:
Step 5: Compiling
We are now ready to compile our source code. You can exit out of CMake, and open the Build folder. Click on ALL_BUILD and let it open Visual Studio for you.
Now that Visual Studio has our source code open, we will need to change it from debug mode to release mode.
We are now ready to compile our source code, you can start the process by hitting F5 or right clicking your source code and then build.
You should have no errors during compiling and see this once its completed:
Step 6: Getting Required Files & Renaming Configuration Files
Now that we have successfully built our source code, our files will be located in Build->Bin->Release. We will need to rename our configation files.
Rename authserver.conf.dist to bnetserver.conf
Rename worldserver.conf.dist to worldserver.conf
Now we will need to grab a few libraries from the programs we installed at the start of our tutorial. Please Note: Copy these files from these locations and not remove them completely.
You may find this library in: C:\Program Files\MySQL\MySQL Server 8.0\lib
libssl-1_1-x64.dll & libcrypto-1_1-x64.dll
You may find these two libraries in: C:\Program Files\OpenSSL-Win64\bin
Step 7: Extracting Data From Game Client
We will need to extract the data from our WoW 4.3.4 game client. These files are required to successfully start your worldserver.
You will need to copy the following files from your Build->Bin->Release into your WoW 4.3.4 client(The folder where your wow.exe is stored).
Next, navigate to your TrinityCore folder (the one you obtained from GitHub, not your build folder) and go to the “TrinityCore/contrib” subdirectory. Copy the extractor.bat from there and paste it into your WoW 4.3.4 client folder.
Now start it up, and choose option 4 to extract all the data from the game client. Important: This may take a couple of hours, time varies depending on computer resources.
Once the data has been successfully extracted, you will need to copy the following folders over to your Build->Bin->Release folder.
Step 8: Populating The Database Automatically
We will now proceed to populate the databases. This is a process that TrinityCore performs to set up the databases and apply all the latest database fixes automatically.
Connecting to your database:
We are now ready to connect to our database, open HeidiSQL.
Running Query To Create Databases And User
We will need to run the queries below to our MySQL server to create the username trinity, and the databases Auth, World, Characters And Hotfixes.
CREATE USER 'trinity'@'localhost' IDENTIFIED BY 'trinity' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0; GRANT USAGE ON * . * TO 'trinity'@'localhost'; 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; CREATE DATABASE `hotfixes` 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; GRANT ALL PRIVILEGES ON `hotfixes` . * TO 'trinity'@'localhost' WITH GRANT OPTION;
To proceed, we need to first download the database from the Github repository specified in this tutorial. Please navigate to the release section of The Cataclysm Preservation Project on Github(here), and download the most recent version of the world database as shown in the image below:
We will need to extract these two SQL files to our Build->Bin->Release folder as shown below:
Now open the worldserver.exe, it should ask you if you want to create the hotfixes database, simply type yes.
Afterwards it should automatic detect that we have not setup any of our other databases and start to populate those automatically using the files from the source and the world databse we just downlaoded.
Please Note: Populating the database may take a few minutes depending on your computer specs. But after it is done, there should be no errors and the world server should start right up.
Congratulations you have now successfully compiled your own Cataclysm 4.3.4 Private Server!
Now we covered all the steps to compile, connecting to your new Private Server can be tricky due to the way the source handles authentication. But no worries, you can follow the two links below to learn more about getting the right client setup.
Trouble Shooting For Connecting
My aim in creating these tutorials is to help newcomers learn the fundamentals of working with WoW Emulation. Thank you for taking the time to read my tutorial, and I sincerely hope you find it helpful.
If you have any questions or comments, please don't hesitate to contact me on Discord: PrivateDonut#0001