Background
At the moment, OpenXRay only provides CLI builds for macOS. However, app bundles are preferable on Mac.
I maintain a script for macOS that will perform the following actions:
- Install Homebrew and the required dependencies
- Clone the OpenXRay repo recursively
- Compile
- If detected, copy the Call of Pripyat game data to the Application Support folder
- Copy
/res/fxgame.ltx and /res/gamedata/ to the game data folder in Application Support (I don't know if openxray_plus.ltx is required or not)
- Create an app bundle structure
- Copy the exe and libraries to the appropriate places in the bundle
- Fix the rpath on the exe for several dylibs
- Create
Info.plist and Pkginfo files
- Get an icon from
macosicons.com
This script works well for those who can/will compile from source themselves. But it has an issue that should be addressed before a general release.
Issue
The problem is the step where /res/fsgame.ltx and /res/gamedata/ should be copied from the source to the application support folder.
If OpenXRay released an app bundle, the installation scenario should be:
- User downloads app bundle
- If the user runs it without game data in the app support folder, a popup tells them to copy the game data there.
- The user buys the game off steam or gog or wherever, and copies the game data over
- The game should now run
It's not reasonable to expect the user to download the repo and copy /res/fsgame.ltx and /res/gamedata/ over.
Potential solution
Ideally fxgame.ltx and gamedata/ should be distributed within the app bundle. But this would mean that the game knows where to look for them, and that they might not be in the game data folder in application support.
The structure of the app bundle should look like this:
OpenXRay.app/
|
- Contents/
|
- libs/
- All the dylibs and .a files go here
|
- MacOS/
- The xr_3da executable goes here
|
- Resources/
- The .icns file and any additional resource files go here
|
- Info.plist
|
- Pkginfo
Note: libs above is usually called Frameworks, but I use dylibbundler which creates a libs folder by default. Doesn't affect anything.
My suggestion is for the game to first search for fsgame.ltx and gamedata in the game data folder ~/Library/Application Support/GSC Game World/S.T.A.L.K.E.R. - Call of Pripyat/, and if is not found then search in ../Resources
Background
At the moment, OpenXRay only provides CLI builds for macOS. However, app bundles are preferable on Mac.
I maintain a script for macOS that will perform the following actions:
/res/fxgame.ltxand/res/gamedata/to the game data folder in Application Support (I don't know ifopenxray_plus.ltxis required or not)Info.plistandPkginfofilesmacosicons.comThis script works well for those who can/will compile from source themselves. But it has an issue that should be addressed before a general release.
Issue
The problem is the step where
/res/fsgame.ltxand/res/gamedata/should be copied from the source to the application support folder.If OpenXRay released an app bundle, the installation scenario should be:
It's not reasonable to expect the user to download the repo and copy
/res/fsgame.ltxand/res/gamedata/over.Potential solution
Ideally
fxgame.ltxandgamedata/should be distributed within the app bundle. But this would mean that the game knows where to look for them, and that they might not be in the game data folder in application support.The structure of the app bundle should look like this:
Note:
libsabove is usually calledFrameworks, but I usedylibbundlerwhich creates alibsfolder by default. Doesn't affect anything.My suggestion is for the game to first search for
fsgame.ltxandgamedatain the game data folder~/Library/Application Support/GSC Game World/S.T.A.L.K.E.R. - Call of Pripyat/, and if is not found then search in../Resources