Author Topic: HOW TO port a game with the Porting Kit - Beginner Guide  (Read 32853 times)

Offline vitormm

  • Developer
  • Administrator
  • Legendary Porter
  • *****
  • Posts: 957
HOW TO port a game with the Porting Kit - Beginner Guide
« on: June 28, 2016, 04:52:31 PM »
Here, I'm going to post a guide of how to port a game with the Porting Kit. In case you want to port a game using only Wineskin, click here.

That guide is only useful if you have for now: free time, patient and a good Mac computer; otherwise, better wait for us to port the game or take a look at CrossOver. You also need to be ready to learn... like A LOT. Porting isn't easy to start with, so brace yourself and let's go.

First, some important concepts that you must know:

- Wineskin: our ports are made with Wineskin technology, which is based on Wine. Basically, Wineskin creates a wrapper (.app file; basically a Mac application), which inside has a complete Wine, with its binaries, drive C, etc, etc. Since all the files will be inside that wrapper, that also makes the games very easy to uninstall in case of failure; you just need to trash the wrapper. Installing Wineskin Winery you can create your own Wineskin wrappers.

- Engines: Wine had many releases among the years, and each one of these releases is what we call 'an engine'. Every time Wine updates something it has a minor chance of crashing another, so basically most parts of the Windows applications should work with the latest engines (including games), but some will just work correctly with specific old engines.

- Winetricks: If a Wine engine doesn't support certain Windows libraries it's still possible to make an app that need them to work: winetricks. Usually, a winetrick install a Windows dependency which might be necessary in order to run an application. You should only install a winetrick if it's absolutely needed. Installing multiple winetricks for no reason might crash your wrapper and will make it gigantic.

- WineHQ: aka, your best friend. No, seriously, WineHQ is very useful during porting. It's a website where Linux users reported if a game worked correctly with a certain Wine engine or not. Many Platinum and Gold ratings means that you probably won't have difficulties in creating a wrapper; Silver and Bronze ratings means that it might be hard to create; but if you only find Garbage ratings, forget it for now. Some applications, like the first The Sims, simply still doesn't work with Wine.

Now, let's start wit the wrapper creation:

Step 0: Download the Porting Kit
You can find it here:

Step 1: Choose your engine and create your custom port
Follow that guide to choose the proper engine for your port. Keep in mind that sometimes you won't choose the correct engine in your first try, so be prepared to check that guide multiple times. Ask PK to create a custom port with the chosen engine, remember to check the Steam/Origin/Uplay box if your game belongs to it. In case it belongs to one of those, go to step 3; in case it don't, continue to step 2.

Step 2: Install your application
When requested select the game installer. It should start the application installation like it would in Windows, unless it needs some dependency. In case it installs, continue to step 3. In case it don't, right-click the port in PK library, go to Wineskin Tools -> Launch Wineskin, then go to Advanced -> Options, enable the first check box, close it and try to install it again (using Wineskin this time). After the failure, launch Wineskin again, go to Advanced -> Tools, press View Last Run Log Files and jump to step 6.

Step 3: Make a Test Run
It's time to check if your application is working. Right-click the port in PK library, go to Wineskin Tools -> Launch Wineskin and press Advanced -> Test Run. Your game may run instantly, require the DVD (even if it's inside the drive), run incorrectly, or not open at all. If it asks for the DVD, continue to step 4. In case it doesn't show anything at all, you will see a window asking to show the Test Run logs. In case it runs incorrectly, close it and you will see that same window. In case it's a Steam/Origin/Uplay port, install the game, run it, and see if it works correctly. In case it don't, close the app and you will see the same window. Open the logs and jump to step 5.

Step 4: Add a No-CD/DVD patch
NOTE: We don't use them in the Porting Kit because it may be considered illegal in some countries, but some times it's the only way to install a game through Wine. If you want to use them, use at your own risk.
Right-click the port in PK library and press 'Open C: Drive'. You gonna see a C: drive structure like it would be in Windows. In there, you should be able to find the game installed files and add the No-CD/DVD patch, that you should be able to find in the web. After that, back to step 3.

Step 5: Check the Test Run Logs
By reading the logs, you should find out if you need to install any winetrick to make a game work or not. For example, lines like these ones:

err:module:load_builtin_dll failed to load .so lib for builtin L"msxml3.dll": /opt/libs32/ version `LIBXML2_2.9.0' not found (required by /usr/lib/wine/
err:ole:COMPOBJ_DllList_Add couldn't load in-process dll L"C:\\windows\\system32\\msxml3.dll"

That means that you need to install the msxml3 winetrick, which would install the msxml3 dll. Some logs may be very different then that one. In case you have a good English, you should have no problem in discovering some of these variations. You can install a Winetrick by opening Wineskin, going to Advanced -> Tools -> Winetricks, selecting the ones that you want to install and pressing Run. After installing the needed dependencies, back to step 3. In case there is no useful logs that shows a dependency that you need to install, trash your wrapper and back to step 1.

There are more advanced steps to make a wrapper work, but these are the basics. Medium difficulty things include settings winetricks, screen options and using flags. Advanced difficulty things include overriding DLLs, creating custom engines and using multiple engines in a same wrapper (one for installing and one for playing, for example).

In case you start to create wrappers by yourself, you are going to discover the medium ones during your tests. The advanced ones you will probably only discover if you get really into the community.
« Last Edit: April 21, 2017, 06:47:15 PM by vitormm »