Installation (Windows)
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 - C++/C# Compiler: Visual Studio 2008 Express / Visual Studio 2010 Express (Both free)
- Beware, Express editions do not support 64-bit compilation by default and making them do so is arduous at best.
- You will need C++ for the Core and C# for the wow.exe patcher. (The patcher is now pre-compiled if you do not want to install C#)
- NOTE: Currently there is a bug with CMake & Some Versions of Visual Studio 2010. If you experience problems (errors) with CMake Configure using VS 2010, it might be better to use the 2008 OR 2012 version.
- For Visual Studios 2012 Express (Recommended for Beginners), download here Visual Studio 2012 Express.
- You will need to select the best option for your platform (most likely "Visual Studio 2012 Express for Windows Desktop").
- Once Installed, you will be required to register the software or the program will only work for 30 days.
- NOTE: Currently Visual Studios 2012 does NOT support C++ Compiling for Windows XP Environment. This means if you compile on your Windows 7 Machine, the server will NOT operate on your Windows XP Machine!.
- OpenSSL
- 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
- MySQL Server
- You can use MySQL Community Server 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: 5.5.9
- Do NOT download the Essentials package or compiling will NOT happen and you will have problems. As quoted on the MySQL page:
The Windows "msi-essential-*" installers do not include: Instance Manager tool, Documentation, Development headers etc.
- 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 C++ Redistributable Packages
- If you use different PCs for compile/run SkyFireEMU, install one of the following packages on your Server-PC to avoid missing dependencies (dependig on your Visual Studio Version and your Server-PC Operating System)
Microsoft Visual C++ 2008 Redistributable Package SP1 MFC Security Update [x86 / x64 / ia64]
Microsoft Visual C++ 2010 Redistributable Package SP1 [x86] / [x64] / [ia64]
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:\SkyFireEMU).
- Right-click on the directory and click on Git GUI Here or open Git GUI from the Start menu
- Then click Clone Existing Repository when the Git GUI dialog comes up.
- Fill in the data as follows:
- Click on Clone Existing Repository. Wait a few minutes (or less) and all the source files will be pulled in the directory C:\SkyFireEMU\Core.
Source Location:
git://github.com/ProjectSkyfire/SkyFireEMU.git
Target Directory:
C:\SkyFireEMU\Core
Configuring and Generating Visual C++ solutions with CMake
- Create a new directory in your C:\SkyFireEMU\ 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 2008, your compiler would be "Visual Studio 9"
- If you are using Visual Studio 2010, your compiler would be "Visual Studio 10"
- If you are using Visual Studio 2012, your compiler would be "Visual Studio 11"
- 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:\SkyFireEMU\Core
Where to build the binaries:
C:\SkyFireEMU\Build
Compiling the Source
- Open SkyFireEMU.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.
- Warning: Visual Studio 2008/2010 Express editions do not support the 64 bit platform. You will need to install the full Visual Studio, as well as additional components to enable 64 bit support. Refer to Microsoft's website and documentation for more details.
- 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:\SkyFireEMU\Build\bin\Release folder:
- Cut and Paste these files from C:\SkyFireEMU\Build\bin\Release to where ever your server will be runned from.
For demonstration\instruction purposes, we will move them to C:\SkyFireEMU\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 libeay32.dll & ssleay32.dll to run your server.
This file is found in your OpenSSL folder which is usually located C:\OpenSSL-Win*
Just copy and paste libeay32.dll & ssleay32.dll along with your other files in your C:\SkyFireEMU\Server folder. - (If you are updating MySQL header source): 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\Server folder.
========== Build: 22 completed, 0 failed, 0 up-to-date, 1 skipped ==========
ace.dll authserver.conf.dist authserver.exe libmysql.dll (If you did NOT update the header source.) 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\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
- Open Database_Installer_Updater.bat found in SkyFireDB
- Follow the dialog and enter in your info. Example:
- Press 1 to install the World Database and all current updates when asked.
- Wait for the installer to do it's magic. After it is done, press any key to go back to the main menu.
- Install locals if you want.
- Press X to exit.
Grab the latest version of SkyFireDB using Git Extensions or Git Gui:
git://github.com/ProjectSkyfire/SkyFireDB.git
This will create a directory called SkyFireDB that will contain the world database files that the server will need.
MySQL Server Address (e.g. localhost):localhost MySQL Username: root MySQL Password: pass World Database: World
Done!
Importing Important Database Structure Updates
- Go into your C:\SkyFireEMU\core\sql\updates directory.
- Apply updates to their appropriate corresponding databases using your chosen SQL client.
Importing World Database Updates
- 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
Auth Database Accounts and Passwords
It is highly advised you change the passwords or delete these accounts.
- NOTE: These may not exist.
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 type
account set password <accountname> <newpassword> <newpassword>
Deleting accounts
You can delete an account simply by going to your Worldserver console and type
account delete <accountname>
Making new accounts
You can make a new account simply by going to your Worldserver console and type
account create <accountname> <password>
Raising an account's access/GM level
You can raise an account level simply by going to your Worldserver console and type
account 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.
- 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
DBC, MAPS, VMAPS, and MMAPS
- 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 4.0.6a (build 13623)
- NOTE: Your client has NOT been fully patched unless you have completed the following steps:
- Ensure your config.wtf AND launcher.wtf are set at SET accounttype "CT", NOT "LK".
- Then run launcher.exe and allow it to update your data files to the Cataclysm expansion, must download fully.
- DO NOT ALLOW THE LAUNCHER TO BEGIN DOWNLOADING THE NEXT PATCH... CLOSE IMMEDIATELY AFTER DOWNLOADING TOOLS!
- If you still have problems delete your whole WTF folder and rerun launcher to generate both .wtf files again then redo the whole step above.
- NOTE: Your client has NOT been fully patched unless you have completed the following steps:
- Copy and Paste extractor.exe, vmap3assembler.exe, vmap3extractor.exe, ace.dll, Simple_Extractor.bat, and mmaps_generator.exe from C:\SkyFireEMU\Build\bin\Release to your wow directory (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!).
Manual Extraction Method
- 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!
VMaps:
MMaps:
Completion (For Both Methods)
- 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.
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
git://github.com/ProjectSkyfire/SkyFire-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)
- 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.)
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
- 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)
Play!
- Use your new patched Wow.exe file to play on your server and the backed up original Wow.exe to play on retail.
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