I portet a game to OS X first using Winebottler which also worked with the game's beta version very well. Viewing the activity log tells me that the game now eats up much more CPU but it's still playable. CPU usage by the game is about 80-100% which is strange because it's one of this indie-pixel-low-graphics games.
Later I discovered Wineskin and portet the game with using it since it seems much more supported and if gives you a whole of new options and also let's you modify the wrapper after it's built. However the game get's unplayable in certain levels. It slows down extremely heavy.
Since the game is eating up up to 80-100% of CPU power I think I did something wrong. Maybe I forgot some winetrick or used the wrong one. I'm really not a porting expert.
Winetricks I implemented to both versions: xact, mfc42, d3d_36 (I don't know why 36, the beta version only worked with that)
I added xinput to the Wineskin version which does not work either. All buttons are recognized but not the joysticks.
Winebottler's output log:
{CODE()}User-MBP:~ User$ /Users/User/Documents/User/Spiele/Mac/Indiegame.app/Contents/MacOS/startwine ; exit;
fixme:heap:RtlSetHeapInformation 0x0 1 0x0 0 stub
fixme:mountmgr:harddisk_ioctl returning zero-filled buffer for IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 74080 (device=7 access=1 func=20 method=0)
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 2d1400 (device=2d access=0 func=500 method=0)
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 74080 (device=7 access=1 func=20 method=0)
fixme:mountmgr:harddisk_ioctl returning zero-filled buffer for IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 74080 (device=7 access=1 func=20 method=0)
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 2d1400 (device=2d access=0 func=500 method=0)
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 74080 (device=7 access=1 func=20 method=0)
fixme:advapi:GetCurrentHwProfileA (0x33ef40) semi-stub
fixme:win:EnumDisplayDevicesW ((null),0,0x33d33c,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x33d2ec,0x00000000), stub!
err:ole:CoInitializeEx Attempt to change threading model of this apartment from apartment threaded to multi-threaded
err:d3d:viewport_miscpart >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glViewport @ state.c / 4797{CODE}
Wineskin's output log:
{CODE()}fixme:heap:RtlSetHeapInformation 0x0 1 0x0 0 stub
err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
fixme:mountmgr:harddisk_ioctl returning zero-filled buffer for IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 74080 (device=7 access=1 func=20 method=0)
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 2d1400 (device=2d access=0 func=500 method=0)
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 74080 (device=7 access=1 func=20 method=0)
err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
fixme:mountmgr:harddisk_ioctl returning zero-filled buffer for IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 74080 (device=7 access=1 func=20 method=0)
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 2d1400 (device=2d access=0 func=500 method=0)
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 74080 (device=7 access=1 func=20 method=0)
fixme:advapi:GetCurrentHwProfileA (0x33ef40) semi-stub
err:winediag:init_driver_info Invalid GPU override 10de:0fd5 specified, ignoring.
fixme:win:EnumDisplayDevicesW ((null),0,0x33d33c,0x00000000), stub!
err:winediag:init_driver_info Invalid GPU override 10de:0fd5 specified, ignoring.
fixme:win:EnumDisplayDevicesW ((null),0,0x33d2ec,0x00000000), stub!
err:ole:CoInitializeEx Attempt to change threading model of this apartment from apartment threaded to multi-threaded
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0xc070c07, 0000: semi-stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0xc070c07, 0000: semi-stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0xc070c07, 0000: semi-stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0xc070c07, 0000: semi-stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0xc070c07, 0000: semi-stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0xc070c07, 0000: semi-stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0xc070c07, 0000: semi-stub!{CODE}
This is my mac's hardware log which is also prompted by wineskin:
{CODE()}WineskinX11: main(): argc=12
Waiting for startup parameters via Mach IPC.
WineskinX11: do_start_x11_server(): argc=12
Attempting to use pixel depth of 24
[246609.904] WineskinX11 starting:
[246609.904] X.Org X Server 1.13.0
[246609.904] Build Date: 20120921
[246609.906] Initializing built-in extension Generic Event Extension
[246609.906] Initializing built-in extension SHAPE
[246609.906] Initializing built-in extension MIT-SHM
[246609.906] Initializing built-in extension XInputExtension
[246609.906] Initializing built-in extension XTEST
[246609.906] Initializing built-in extension BIG-REQUESTS
[246609.906] Initializing built-in extension SYNC
[246609.906] Initializing built-in extension XKEYBOARD
[246609.906] Initializing built-in extension XC-MISC
[246609.906] Initializing built-in extension XINERAMA
[246609.906] Initializing built-in extension PseudoramiX
[246609.906] Initializing built-in extension XFIXES
[246609.906] Initializing built-in extension RENDER
[246609.906] Initializing built-in extension RANDR
[246609.906] Initializing built-in extension DAMAGE
[246609.906] Initializing built-in extension MIT-SCREEN-SAVER
[246609.906] Initializing built-in extension DOUBLE-BUFFER
[246609.906] Initializing built-in extension RECORD
[246609.906] Initializing built-in extension X-Resource
[246609.906] Initializing built-in extension XVideo
[246609.906] Initializing built-in extension XVideo-MotionCompensation
[246609.906] Initializing built-in extension GLX
[246609.906] x: 0, y: 0, w: 1440, h: 877
[246610.733] (II) GLX: Initialized Core OpenGL GL provider for screen 0
[246610.844] x: 0, y: 0, w: 1440, h: 877
[246610.930] noPseudoramiXExtension=0, pseudoramiXNumScreens=1
Engine Used: WS9Wine1.7.37
Hardware:
Hardware Overview:
Model Name: MacBook Pro
Model Identifier: MacBookPro10,1
Processor Name: Intel Core i7
Processor Speed: 2,3 GHz
Number of Processors: 1
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 6 MB
Memory: 16 GB
Boot ROM Version: MBP101.00EE.B09
SMC Version (system): 2.3f36
Graphics/Displays:
Intel HD Graphics 4000:
Chipset Model: Intel HD Graphics 4000
Type: GPU
Bus: Built-In
VRAM (Dynamic, Max): 1024 MB
Vendor: Intel (0x8086)
Device ID: 0x0166
Revision ID: 0x0009
gMux Version: 3.2.19 [3.2.8]
NVIDIA GeForce GT 650M:
Chipset Model: NVIDIA GeForce GT 650M
Type: GPU
Bus: PCIe
PCIe Lane Width: x8
VRAM (Total): 1024 MB
Vendor: NVIDIA (0x10de)
Device ID: 0x0fd5
Revision ID: 0x00a2
ROM Revision: 3688
gMux Version: 3.2.19 [3.2.8]
Displays:
Color LCD:
Display Type: Retina LCD
Resolution: 2880 x 1800 Retina
Retina: Yes
Pixel Depth: 32-Bit Color (ARGB8888)
Main Display: Yes
Mirror: Off
Online: Yes
Built-In: Yes{CODE}
This uses mostly the same percentage of the CPU as the Winebottler version but really slows down on certain parts which makes this version unplayable.
Since so much CPU power is used, I really think there is something wrong. Both versions show some errors but I don't know what to do with them or how to fix them. I know that the game uses shaders, maybe this could also be a problem?
I tried a lot to fix the issues on the Wineskin version:
Disable/Enable Use Mac Driver instead of X11
Disable/Enable Direct3D Boost (if available)
Disable/Enable Force use of system installed XQuartz instead of using built in WineskinX11
Also followed Wineskin's "performance" guide:
if the game has an opengl mode, try using that
else winetricks glsl=disable can improve Direct3D performance (but not for all games, and probably only if you have an nvidia card)
Nothing worked at all. I think the problem has something to do with the errors that are shown in the output log.
The windows version runs a lot faster which is logic but I think the OS X port shouldn't be that slow. I got a ton of RAM and my graphics card also isn't that bad. It seems the game is faster on Windows simulated by parallels.
So I just tested the game on Windows and the taskmanager told me that the game is barely using 20% of the CPU and Parallels is not using as much CPU from OS X as the ported game does.
I really could need some help on that.
Thank you!
↧