Installation (Windows 5xx)
INTRODUCTION
Before you get scared by this long guide, we assure you the procedure is quite simple. Most of the following steps are to be performed only the first time you install SkyFireEMU and only the SkyFireEMU updating procedures will need to be run from time to time.
After the first few times everyone gets used to the procedure and never needs to look at this guide ever again.
Software Required
- Git
You can also use TortoiseGit that is more compatible with Windows (8).
TortoiseGIT - Install the compiler Visual C++ 2022 Community Here.
- OpenSSL
- We supply OpenSSL 3.3.0 which is needed to build the core, it is within SkyFire_548\contrib\openssl folder. Extract and place the OpenSSL-Win64 in C:\OpenSSL-Win64
-- OLD CONTENT BELOW NOT NEEDED --- Current minimum supported version is OpenSSL v1.1.1c - Do NOT use the light version!
- Download the 32bit version if you have a 32bit compiler or the 64bit bit version if you have a 64bit compiler.
- You may have to download and install one of the Microsoft Visual C++ Redistributable Packages for OpenSSL to work.
- CMake CMake Version 3.16.3 or greater
- MySQL Server
- You can use MySQL Community Server 8.0.X or third party packages such as WAMP or XAMPP
- It's recommended that your MySQL server and the MySQL header source versions match.
- Current SkyFire core MySQL header version: 8.0.X
- Download MySQL Installer. Be sure to install the development libraries else your core will not compile.
- Download the 32bit version if you have a 32bit compiler or the 64bit version if you have a 64bit compiler.
- If you are just planning on updating the MySQL header source and plan on using another server or package like WAMP or XAMPP, all you need to install is Client C API library (shared) under Development Components when doing a Custom Setup.
- .NET Framework 3.5 (You should already have this via your Windows updates.)
- SQL Client: HeidiSQL MySQL GUI Tools
- DO NOT USE NAVICAT: Due to NaviCat not being able to handle // style comments (standard SQL), we advice all users to stay VERY clear of the product - you have been warned.
Software Recommended
git command help:
- gitextensions
- most popular with the community
- tortoisegit
- Makes pulling and cloning sources easier with right mouse clicks.
- Also adds symbols over your folder and file icons to indicate if your source is inaccurate.
- Note: You still need to install Git for this to work.
Microsoft Visual Studio 2019
Microsoft Visual Studio 2019 Community Edition Download.
Please note Visual Studio 2022 Preview is not supported.
PULLING AND COMPILING THE SOURCE
- Before you start this phase you need to have installed Git, OpenSSL, CMake, Visual Studio, .NET Framework 3.5 (if needed) and MySQL (If you are updating the MySQL Header Source.)
Pulling the Source
- Create a directory in which Core files will be pulled (for example: C:\SkyFire_548).
- Right-click on the directory and click on Git Bash Here
- Fill in the data as follows:
- Press Enter to Clone Existing Repository. Wait a few minutes (or less) and all the source files will be pulled in the directory C:\SkyFire_548.
git clone -b trunk https://codeberg.org/ProjectSkyfire/SkyFire_548.git
Configuring and Generating Visual C++ solutions with CMake
- Create a new directory in your C:\SkyFire_548\ called "Build".
- Open CMake. (cmake-gui)
- Fill in the data as follows:
- Click Configure.
- It should ask you if you want to create the directory, click yes.
- A dialog should pop up asking you what compiler you will be using. Select the appropriate compiler and select Use default native compilers then click Finish.
- NOTE: You MUST select the appropriate compiler!
- If you are using Visual Studio 2019, your compiler would be "Visual Studio 16"
- NOTE: You MUST select the appropriate compiler!
- When done, it will show you a list of options which it wants you to confirm (the top red part with the check boxes.)
Make sure these are the ones selected:SCRIPTS SERVERS TOOLS USE_COREPCH USE_MYSQL_SOURCES (If you are NOT updating the MySQL header sources.) USE_SCRIPTPCH
- Do not worry about setting CMAKE_INTALL_PREFIX it's not used. Just keep it at it's default value (C:/Program Files/SkyFire)
- (If you are updating MySQL header source): If you have installed MySQL version other than 5.5, be sure to UNCHECK the WITH_MYSQL_SOURCES option. This tells CMake to look for include files and libraries in your MySQL installation instead of using the MySQL source files provided with SkyFireEMU (which are 5.5.9). Remember, unchecking WITH_MYSQL_SOURCES requires that you have full MySQL package (not Essentials) and that your selected compiler is for the same architecture (32bit/64bit) as your MySQL. If you have 5.5.x, you need not worry - just leave WITH_MYSQL_SOURCES checked.
- Click on Configure again to verify your selection. (Most of the red should now go away.)
- Click on Generate and it will start chugging away and creating the solutionfiles/projectfiles/makefiles it requires to build for that specific compiler.
- When done, it'll state "Generating done"
- Close CMake and continue below with Compiling the Source.
Where the the source code:
C:\SkyFire_548
Where to build the binaries:
C:\SkyFire_548\build
Compiling the Source
- Open Project_Skyfire.sln located in your build folder with your chosen compiler.
- Go on the top menu and click Build then click on Configuration Manager. Make sure you set the build to Release and to Win32 or x64.
- Now go back to the Build menu and click on Clean Solution. Unless you are just testing a compilation, it is always best to clean your build before compiling. Compilation length differs from machine to machine, you should expect it to take 15-30 minutes.
- You will find the following message once the compilation has finished successfully:
- You will find your freshly compiled binaries in your C:\SkyFire_548\build\bin\Release folder:
- Copy and Paste these files from C:\SkyFire_548\build\bin\Release to where ever your server will be runned from.
For demonstration\instruction purposes, we will move them to C:\SkyFire_548\Server\. Leave the rest there for now. - Rename authserver.conf.dist to authserver.conf and worldserver.conf.dist to worldserver.conf
These are your config files. Go through and edit each one to match your prefered settings. - You will also need libmysql.dll to run your server.
This file is found in your MySQL folder which is usually located C:\Program Files*\MySQL\MySQL Server *\lib
Just copy and paste libmysql.dll along with your other files in your C:\SkyFireEMU_5xx\Server folder.
========== Build: 22 completed, 0 failed, 0 up-to-date, 1 skipped ==========
ace.dll libcrypto-1_1-x64.dll -> Needs to copy to the release folder. libeay32.dll -> Needs to copy to the release folder. libssl-1_1-x64.dll -> Needs to copy to the release folder. ssleay32.dll -> Needs to copy to the release folder. authserver.conf.dist authserver.exe libmysql.dll (From your MySQL 8 install bin folder.)* worldserver.conf.dist worldserver.exe
Keeping the code up to date
SkyFireEMU Developers are always at work fixing and adding new features to the core so it's best you keep up to date with the code.
- Simply right-click on your C:\SkyFireEMU_5xx\Core folder and click on Git GUI Here.
- Click on the Remote>Fetch from>origin when you see green line with text success hit Close.
- Then Click on the Merge>Local Merge... another window will popup, choose origin/master. When you see the green line with text success hit Close!
- Now you can repeat the compiling procedure above.
- And remember to clean your build everytime!
IMPORTING THE DATABASE
- Before you start this phase you need to have installed a SQL Client and you should also have installed and set up your MySQL server and made an user account for SkyFireEMU with proper permissions to access and write data.
Creating Auth, Characters and World Databases
Using your chosen SQL Client, create the three Databases.
- Auth
- Characters
- World
- Doing this may prevent importing problems later.
Importing Auth and Characters Databases
Using your chosen SQL Client, import both the auth_database.sql and characters_database.sql files located in C:\SkyFireEMU\Core\sql\base to their respective places in your MySQL database.
Importing World Database
- Go into your C:\SkyFireEMU\core\sql\updates directory.
- Apply updates to their appropriate corresponding databases using your chosen SQL client.
- Open Database_Installer_Updater.bat found in C:\SkyFireEMU\Core\database
- Follow the dialog and enter in your info like you did before.
- Press U to import the World Database updates when asked.
- Select the correct changesets needed.
- Or.. if you are a "pro" use your SQL client and import needed changes from C:\SkyFireEMU\Core\database\updates
- NOTE: These may not exist.
- id=your account id found under accounts
- GM/Access Levels: 0=Regular player, 1=Gamemaster, 2=Developer, 3=Moderator, 4=Administrator
- You can only add Administrator (gmlevel 4) with your SQL client
- RealmID is usually 1 or -1 for all realms
- Project Skyfire, for legal reasons, CANNOT and will NOT provide download links to already extracted DBCs, MAPS, VMAPS, or MMAPS... so please do NOT ask!
- We will, however, help you through the extraction process with step-by-step instructions
- NOTE: Contrary to popular belief, your client does NOT have to have been on the live server to extract DBCs, MAPS, VMAPS, or MMAPS.
- The VERY FIRST THING you need is a WoW client fully patched to version 5.4.8 (build 18414)
- Copy and Paste extractor.exe, vmap3assembler.exe, vmap3extractor.exe, ace.dll, Simple_Extractor.bat, and mmaps_generator.exe from SkyFire_548\Build\bin\Release to your wow directory ex:(C:\Program Files (x86)\World of Warcraft)
- Locate your bin file in your MySQL installation directory (Example: C:\Program Files\MySQL\MySQL Server 5.5\lib\ OR C:\Program Files(x86)\MySQL\MySQL Server 5.5\lib\ if you have a 32 bit MySQL installed on an 64 bit system).
- Locate file named "libmysql.dll".
- Copy this file and Paste it into your wow directory (ONLY COPY, do NOT move this file!).
- Open a command prompt to your wow directory (cd C:\Program Files (x86)\World of Warcraft).
- To open a command prompt hold down shift and right-click inside the folder and then select: Open command window here.
- In your command prompt type extractor.exe and hit enter.
- Wait until finished.
- It should have made two new directories, dbc and maps.
- In your command prompt type vmap3extractor.exe and hit enter.
- Wait until finished.
- It should have made a new directory named Buildings.
- In your command prompt type mkdir vmaps (or simply make a new folder and rename it to vmaps).
- Then in your command prompt again, type vmap3assembler.exe Buildings vmaps and hit enter.
- Wait until finished.
- It should have made a new directory, vmaps.
- Move the entire contents of your buildings folder into your vmaps folder (The contents ONLY. You do NOT want the folder named buildings inside your vmaps folder).
- You may now Delete the empty buildings folder.
- Create a new folder named mmaps.
- Now execute the mmaps_generator.exe.
- NOTE: The generation of mmaps will take anywhere from 4 hours to 20 or MORE hours depending upon the speed of your machine. Please consider this before starting the mmaps generating!
- Move folders named mmaps, vmaps, dbc, maps, as well as the "libmysql.dll" to your server directory (where your worldserver.exe will be ran from).
- You may now delete files extractor.exe, vmap3assembler.exe, vmap3extractor.exe, ace.dll, Simple_Extractor.bat, and mmaps_generator.exe from your WoW installation directory as you should no longer need them.
- Note: The patcher is made in C# and not C++. You need a C# compiler to compile it.
- You will not need CMake for this.
- Open SkyFirePatcher.sln (located in ..Sources\Patcher) with C#.
- Select "Release"
- The platform should be "Any" (No separate 32/64 bit versions.)
- Clean
- Build. (This should take less than a minute.)
- Do not worry if you get an error like:
..Sources\Patcher\SkyFirePatcher\Form1.cs(20,13): warning CS0414: The field 'SkyFirePatcher.Form1.exeLength' is assigned but its value is never used
- After you compiled it, you should have SkyFirePatcher.exe in your ..Sources\Patcher\SkyFirePatcher\bin\Release folder.
(You can delete the rest if you like.) - Move SkyFirePatcher.exe into your Wow directory.
(Usually something like C:\Program Files (x86)\World of Warcraft) - Now run SkyFirePatcher.exe and a dialog should pop up with:
Loading Wow.exe into memory... Success! Ready to patch Wow.exe.
And "Status: Ready!" at the bottom. - Click "Patch" at the bottom to patch your Wow.exe
It will make a backup of your original Wow.exe as well. (Something like wow-original.exe) - Use your new patched Wow.exe file to play on your server and the backed up original Wow.exe to play on retail.
Grab the latest version of SkyFireDB_5xx from our release repository:
https://github.com/ProjectSkyfire/database/releasesImport the DB into your world table. Will update this method shortly
Importing Important Database Structure Updates
Importing World Database Updates
Auth Database Accounts and Passwords
It is highly advised you change the passwords or delete these accounts.
User: Administrator Pass: Administrator User: Moderator Pass: Moderator User: Developer Pass: Developer User: Gamemaster Pass: Gamemaster User: Player Pass: Player
Changing passwords
You can change a password to an account simply by going to your Worldserver console and typeaccount set password <accountname> <newpassword> <newpassword>
Deleting accounts
You can delete an account simply by going to your Worldserver console and typeaccount delete <accountname>
Making new accounts
You can make a new account simply by going to your Worldserver console and typeaccount create <accountname> <password>
Raising an account's access/GM level
You can raise an account level simply by going to your Worldserver console and typeaccount set gmlevel <accountname> <gmlevel> <realmid>Or you can go into your Auth database via your SQL Client, select account_access and add a new line.
DBC, MAPS, VMAPS, and MMAPS
Manual Extraction Method
VMaps:
MMaps:
Completion (For Both Methods)
SKYFIRE WOW.EXE PATCHER
Your Wow.exe client will be needed to be patched before you can properly connect to your server.
Patching
Pull the latest version of SkyFire-Community-Tools from
https://codeberg.org/ProjectSkyfire/Community-Tools.git
You now have what you need to patch your wow. Choose one of the methods below to patch your wow.
Pre-Patched Method (Easy Method)
Open SkyFire-Community-Tools\SkyFire Patcher\ and skip to Moving and Patching.
Manuel Compile Method (Not really needed but will keep this for now)
Keeping the code up to date
Again, you should be an expert by now with this pulling the source stuff. It's basically the same thing.
Moving and Patching
Play!
References
http://www.trinitycore.org/w/How-to:Win
http://wiki.cactusemu.com/index.php?title=Installation_%28Windows%29
Video tutorial: Pulling core repository with TortoiseGit
Video tutorial: CMake x64
Video tutorial: Compiling x64
Video tutorial: Importing the databases and structure updates
Video tutorial: dbc, map and vmaps