Author Topic: HOW TO port a game with Wineskin - Beginner Guide  (Read 1376 times)

Offline vitormm

  • Developer
  • Administrator
  • Legendary Porter
  • *****
  • Posts: 534
HOW TO port a game with Wineskin - Beginner Guide
« on: March 22, 2016, 02:51:44 AM »
Here, I'm going to post a guide of how to port a game using Wineskin only. In case you want to port a game using the Porting Kit, 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 in 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 Wineskin Winery
You can find it here: http://wineskin.urgesoftware.com/tiki-index.php?page=Downloads.

Step 1: Choose your engine and create your wrapper
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.

Step 2: Install your application
Drag the game installer and drop it in your wrapper. 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 wrapper, show package contents, double click Wineskin, go to Advanced -> Options, enable the first check box, close it and try to run again. After the failure, open 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 wrapper, show package contents, double click Wineskin and press Advanced -> Test Run. Your game may run instantly, require the DVD (even if it's inside the drive), say that you have a different amount of video memory than you really have, or not open at all. If it asks for the DVD, jump to step 4. In case it shows the wrong video memory size, jump to step 5. In case it doesn't open at all, you will see a window asking to show the Test Run logs. Open them and jump to step 6.

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 throw Wine. If you want to use them, use at your own risk.
Right-click the wrapper, show package contents and open drive_c. 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: Adjust the Memory Size manually
That step is most common for Intel card users. Wine doesn't recognize the video memory size correctly in some cases, but that can be solved, manually. Open Wineskin, press Screen Options and disable the check box "Auto Detect GPU Info for Direct3D". Now, using Show Package Contents again, go to the folder Contents/Resources and open the file user.reg with a text editor. Now use the search to find the line [Software\\Wine\\Direct3D] and add that has a key/value in that line (Note: in the examples, 1536 is your video memory size in Mb):

"VideoMemorySize"="1536"

After that you should save the file. There should be only one VideoMemorySize item in [Software\\Wine\\Direct3D], so if there is another one, remove it. The result may look like that for example:

[Software\\Wine\\Direct3D] 1457527128
#time=1d17a00a064bc00
"CSMT"="disabled"
"DirectDrawRenderer"="opengl"
"StrictDrawOrdering"="disabled"
"VideoMemorySize"="1536"


In case there is no [Software\\Wine\\Direct3D] in the file, go the to end of the file, skip two lines and add that:

[Software\\Wine\\Direct3D]
"VideoMemorySize"="1536"


Wine will add whatever is missing without messing up with that value. After saving the file, back to step 3.

Step 6: 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/libxml2.so.2: version `LIBXML2_2.9.0' not found (required by /usr/lib/wine/msxml3.dll.so)
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: March 06, 2017, 05:32:09 PM by vitormm »