#!/bin/bash
# hl2-optimus.sh
# hl2.sh modified for Source games and optirun/primusrun
# http://steamcommunity.com/groups/LinuxOptimus
#
# EXPERIMENTAL!
# Version: 12/12/12-B
# Valve's stuff goes here
GAMEROOT=$(cd "${0%/*}" && echo $PWD)
STEAMPATH=$(readlink ~/.steampath)
export LD_LIBRARY_PATH="${GAMEROOT}"/bin:$LD_LIBRARY_PATH
if [ ! -z ${STEAMPATH} ]; then
export LD_LIBRARY_PATH="$(dirname ${STEAMPATH})":$LD_LIBRARY_PATH
fi
ulimit -n 2048
export __GL_THREADED_OPTIMIZATIONS=1
cd "$GAMEROOT"
# Our library path
export LD_LIBRARY_PATH=$(cd ../../.. && echo $PWD)/ubuntu12_32:$LD_LIBRARY_PATH
# Guess game and id
if [ -d tf_beta ]; then
gameid=520
game="-game tf_beta"
elif [ -d tf ]; then
gameid=440
game="-game tf"
elif [ -d hl2mp ]; then
gameid=320
game="-game hl2mp"
elif [ -d lostcoast ]; then
gameid=340
game="-game lostcoast"
elif [ -d episodic ]; then
gameid=380
game="-game episodic"
elif [ -d ep2 ]; then
gameid=420
game="-game ep2"
elif [ -d hl1 ]; then
gameid=280
game="-game hl1"
elif [ -d portal ]; then
gameid=400
game="-game portal"
elif [ -d portal2 ]; then
gameid=620
game="-game portal2"
elif [ -d left4dead ]; then
gameid=500
game="-game left4dead"
elif [ -d left4dead2 ]; then
gameid=550
game="-game left4dead2"
elif [ -d cstrike_beta ]; then
gameid=260
game="-game cstrike_beta"
elif [ -d cstrike ]; then
gameid=240
game="-game cstrike"
elif [ -d dodsbeta ]; then
gameid=302
game="-game dodsbeta"
elif [ -d dod ]; then
gameid=300
game="-game dod"
elif [ -d garrysmod ]; then
gameid=4000
game="-game garrysmod"
elif [ -d garrysmodbeta ]; then
gameid=4010
game="-game garrysmodbeta"
elif [ -d hl2 ]; then
echo "Warning: Only hl2 game folder detected. Guessing you want hl2."
gameid=220
game=""
else
echo "Could not find a valid game."
exit
fi
# Allow user to decide vblank_mode
# Disabled by default due to input lag for some people
if [ -z $vblank_mode ]; then
vblank_mode=0
fi
# Check if user has force disabled primus
if [ -z $use_primus ]; then
use_primus=1
fi
# Make sure primus is installed
if [ $use_primus -eq 1 ]; then
if command -v primusrun &>/dev/null; then
echo "Primus has been detected and will be used. Launch with 'use_primus=0 $0' to disable."
echo "Try disabling if you experience stuttering, graphical/font glitches, or other issues."
use_primus=1
else
use_primus=0
fi
fi
# Place guessed id to steam_appid.txt
# Needed when launching away from Steam
echo $gameid>steam_appid.txt
# Launch!
if [ $use_primus -eq 1 ]; then
vblank_mode=$vblank_mode primusrun ./hl2_linux $game -steam -novid "$@"
else
optirun ./hl2_linux $game -steam -novid "$@"
fi
# Remote steam_appid.txt in case it was guessed wrong
rm steam_appid.txt