Installation (Windows)

From Project Skyfire
Revision as of 19:34, 23 October 2011 by Admin (talk | contribs) (→‎Pulling)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


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

  1. Git
    You can also use TortoiseGit that is more compatible with Windows (8).
    TortoiseGIT
  2. 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#)

  3. OpenSSL
    • Do NOT use the light version!
    • Download the 32bit version if you have a 32bit compiler and the 64bit bit version if you have a 64bit compiler.
    Note: If you have a 32-bit compiler, but a 64-bit OS and use the OpenSSL MSI installer for 32-bit, you will need to use the "?:\Program Files\OpenSSL" directory instead of the default "?:\Program Files (x86)\OpenSSL" setting in the installer.
    • You may have to download and install one of the Microsoft Visual C++ Redistributable Packages for OpenSSL to work.

  4. CMake
  5. 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 and 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.

  6. .NET Framework 3.5 (You should already have this via your Windows updates.)
  7. 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

  1. Create a directory in which Core files will be pulled (for example: C:\SkyFireEMU).
  2. Right-click on the directory and click on Git GUI Here or open Git GUI from the Start menu
  3. Then click Clone Existing Repository when the Git GUI dialog comes up.
  4. Fill in the data as follows:
    Source Location: https://github.com/ProjectSkyFire/SkyFireEMU
    Target Directory: C:\SkyFireEMU\Core
    
  5. Click on clone. Wait a few minutes (or less) and all the source files will be pulled in the directory C:\SkyFireEMU\Core.

Configuring and Generating Visual C++ solutions with CMake

  1. Create a new directory in you C:\SkyFireEMU\ called "Build"
  2. Open CMake (cmake-gui)
  3. Fill in the data as follows:
    Where the the source code: C:\SkyFireEMU\Core
    Where to build the binaries: C:\SkyFireEMU\Build
  4. Click Configure.
  5. It should ask you if you want to create the directory, click yes.
  6. 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.
  7. When done, it will show you a list of options which it wants you to confirm (the top red part with the check boxes.)
    Go through them and check/uncheck those you want enabled/disabled (you can hover the options to see what they are used for).

    For now we will keep it all default except Tools. Tools will provide us with the files to make our dbc, maps and vmaps.

    So we have the following selected:
    SCRIPTS
    SERVERS
    TOOLS (If you want to make extractor.exe, vmap3assembler.exe, vmap3extractor.exe)
    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.
  8. Click on Configure again to verify your selection. (Most of the red should now go away.)
  9. Click on Generate and it will start chugging away and creating the solutionfiles/projectfiles/makefiles it requires to build for that specific compiler.
  10. When done, it'll state "Generating done"
  11. Close CMake and continue below with Compiling the Source.

Compiling the Source

  1. Open SkyFire.sln located in your build folder with your chosen compiler.
  2. 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 depending on the Operating System SkyFire will be running on and what you have set during CMake configuration.
    • 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.

  3. 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:
    ========== Build: 19 completed, 0 failed, 0 up-to-date, 1 skipped ==========
    
    • Do not worry if you get something like 5823 warnings from vmap3extractor and extractor.
    • You will find your freshly compiled binaries in your C:\SkyFireEMU\Build\bin\Release folder.
    • You will need the following files in order for the core to function properly:
    ace.dll
    authserver.conf.dist
    authserver.exe
    libmysql.dll (If you did NOT update the header source.)
    worldserver.conf.dist
    worldserver.exe
    
    • The following files will only be needed to make the dbc, maps and vmaps:
    extractor.exe
    vmap3assembler.exe
    vmap3extractor.exe
    
    • Delete any other file which is not in the above lists, you will not need them.

  4. Move the files from both lists to where ever your server will be runned from.
    For demonstration\instruction purposes, we will move them to C:\SkyFireEMU\Server\
    • You may delete C:\SkyFireEMU\Build after you've move the files if you'd like.

  5. 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.
  6. 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.
  7. (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.

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.

  1. Simply right-click on your C:\SkyFireEMU\Core folder and click on Git GUI Here.
  2. Click on the Remote>Fetch from>origin when you see green line with text success hit Close.
  3. Then Click on the Merge>Local Merge... 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.

  1. Auth
  2. Characters
  3. 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.

  • DO NOT IMPORT WORLD_DATABASE.SQL FROM THIS DIRECTORY UNLESS YOU WANT A COMPLETELY BLANK WORLD.

Importing World Database

  1. Open Database_Installer_Updater.bat found in C:\SkyFireEMU\Core\database
  2. Follow the dialog and enter in your info.
  3. Example:
    MySQL Server Address (e.g. localhost):localhost
    
    MySQL Username: root
    MySQL Password: pass
    
    World Database: world
    
  4. Press 1 to install the World Database and all current updates when asked.
  5. Wait for the installer to do it's magic. After it is done, press any key to go back to the main menu.
  6. Install locals if you want.
  7. Press X to exit.

Done!

Importing Important Database Structure Updates

  1. Go into your C:\SkyFireEMU\core\sql\updates directory.
  2. Apply updates to their appropriate corresponding databases using your chosen SQL client.

Importing World Database Updates

  1. Open Database_Installer_Updater.bat found in C:\SkyFireEMU\Core\database
  2. Follow the dialog and enter in your info like you did before.
  3. Press U to import the World Database updates when asked.
  4. 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

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 AND VMAPS

  1. Before you begin to do anything, make sure you change SET accounttype "LK" to SET accounttype "CT" in your Config.wtf & launcher.wtf files located in your WTF folder. It's usually found C:\Program Files (x86)\World of Warcraft\WTF
    • Then run launcher.exe and allow it to update your data files to the Cataclysm expansion, must download fully.
    • 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.
  2. Move extractor.exe, vmap3assembler.exe and vmap3extractor.exe to your wow directory (C:\Program Files (x86)\World of Warcraft)
  3. Open a command prompt to your wow directory (cd C:\Program Files (x86)\World of Warcraft)

dbc and maps

  1. In your command prompt type extractor.exe and hit enter.
  2. Wait until finished.
  3. It should have made two new directories, dbc and maps.
  4. Move both of these folders to your Server folder/machine. (C:\SkyFireEMU\Server if you have been following from above.)

vmaps

  1. In your command prompt type vmap3extractor.exe and hit enter.
  2. Wait until finished.
  3. It should have made a new directory named Buildings.
  4. In your command prompt type mkdir vmaps or simply make a new folder and rename it to vmaps.
  5. Then in your command prompt again, type vmap3assembler.exe Buildings vmaps and hit enter.
  6. Wait until finished.
  7. Move your vmaps folder to your Server folder/machine where your dbc and maps folder are. (Again, C:\SkyFireEMU\Server if you have been following from above.)


  • You may delete your Buildings folder if you want. It is not needed.



SKYFIRE WOW.EXE PATCHER

Your Wow.exe client will be needed to be patched before you can properly connect to your server.

Pulling

You should be an expert with pulling sources by now. So just do the same thing here. https://github.com/ProjectSkyfire/SkyFire-Community-Tools

  • The patcher is already pre-compiled in directory: '..\SkyFire Patcher\406a. So after you pull, you can skip the compiling steps below.

Compile

  • 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.
  1. Open SkyFirePatcher.sln (located in ..Sources\Patcher) with C#.
  2. Select "Release"
  3. The platform should be "Any" (No separate 32/64 bit versions.)
  4. Clean
  5. 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

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

  • 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.)

  1. Move SkyFirePatcher.exe into your Wow directory.
    (Usually something like C:\Program Files (x86)\World of Warcraft)
  2. 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.
  3. 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 to 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