UPDATE: Comments haver launcher-scripts for Starcraft2 made by arda7an
UPDATE2: If you dont care about the details, then just try a broad solution like: “optirun bash” and then launch your game
Bumblebee, has a command “optirun <program>” which allows to run a <program> using the discrete nvidia card.
However, optirun will stop when <program> terminates.
That is ok with most programs, but when a game has a launcher, then “optirun <launcher>” will make the launcher program start, and in turn, the launcher program will call another child-program (which is normally the game itself), and after the child-program is started, the launcher program will terminate, leaving the child-program executing by itself.
When the launcher terminates, the optirun will stop using the nvidia discrete card, and so, the child-program still running will crash with an error like:
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server “:8”
after 7 requests (7 known processed) with 0 events remaining.
Half life 2, is one of such games, where you cannot call the games-executable directly, because you *have* to use a launcher.
So to fix-it, I made a script which will not terminate with the launcher, but will wait untill the child-program (“hl2.exe” for Half Life 2) ends.
Using this script for optirun will then allow for optirun to remain executing all along while the child-program is running (even after the launcher ends).
The script basically:
– exec’utes itself using optirun $0
– calls “wine Launcher.exe”
(in the backstage, Launcher.exe will launch a child-process names “hl2.exe” and shortly after, “Launcher.exe” will terminate, leaving “hl2.exe” executing by itself)
– after the Launcher.exe process terminates, get the pid-of-hl2
– wait while “hl2.exe” is running (enjoy your game 🙂 )
– after “hl2.exe” terminates, exit
It took me some hours to get this polished, so I leave it here in case it helps someone 🙂 (if it does, leave a comment, it cheers up 🙂 )