Quake 1 Enhanced Launcher

This program is meant to restart Quake Enhanced servers on a schedule. It was written because Quake Enhanced servers are only visible in the lobby browser for 24 hours, and also the servers will frequently disconnect from game lobbies.

It expects:

  • Steam to already be running
  • A recent Java version installed

Download

qe-runner-4.0.jar

Default Behavior

When started with `java -jar qe-runner-X.Y.jar`, the default configuration:

  1. Kills all Quake Enhanced processes that are running (even if the process is frozen)
  2. Starts Quake Enhanced with `C:\Program Files (x86)\Steam\steamapps\common\Quake\rerelease\Quake_x64_steam.exe -skipmovies +g_showintromovie 0 +developer 1`
  3. Starts a multiplayer game with default game settings

Customizing

The program behavior can be customized using a properties file. Create a text file, paste in the default config below, then change to your values as needed.

  • You can have as many lines in the file as you want, they will be executed in the order of the number at the beginning
  • Stuff between `->` and `=` characters is just a description (it shouldn't contain things like `os->` or `quake->`)
  • The `#` characters are comments
  • To make sure your commands run in order, use an XXXX number format: 0001 for first, 0002 for second ... 0100 for 100th
  • Save your file somewhere with a `.properties` extension
  • Run the program like this `java -Dprops=c:\somefolder\example.properties -jar qe-runner-X.Y.jar`

Default config sample

# =======================================================
# force restart all servers, killing all processes
# =======================================================

# kill all quake instances
0001_os->kill = taskkill /F /IM Quake_x64_steam.exe /T

# moving files: double quotes around each parameter, and double backslashes for directories. <TIMESTAMP> gets replaced with a timestamp
# 0002_os->cmd = cmd.exe /c move "C:\\Users\\games\\Saved Games\\Nightdive Studios\\Quake\\stderr.txt" "C:\\Users\\games\\Saved Games\\Nightdive Studios\\Quake\\stderr_<TIMESTAMP>.txt" 
# 0003_os->cmd = cmd.exe /c move "C:\\Users\\games\\Saved Games\\Nightdive Studios\\Quake\\stdout.txt" "C:\\Users\\games\\Saved Games\\Nightdive Studios\\Quake\\stdout_<TIMESTAMP>.txt"

# set max number of players
# 0004_setMaxPlayers->val = 4

# set game mode
# 0005_setGameModeIndex->val = 2

# for launching quake: no double quotes around, but do use double backslashes for directories
0006_quake->launch = C:\\Program Files (x86)\\Steam\\steamapps\\common\\Quake\\rerelease\\Quake_x64_steam.exe -skipmovies +g_showintromovie 0 +developer 1

# execute a config: 
# - put a file named qelauncher.cfg in C:\Users\<user>\Saved Games\Nightdive Studios\Quake 
# - this will re-focus the Quake window using the command passed to it, and then exec the config. Don't include any parameters
# 0007_exeConfig->focus = C:\\Program Files (x86)\\Steam\\steamapps\\common\\Quake\\rerelease\\Quake_x64_steam.exe

Available commands

Command Input Default value if not in properties Description Additional Notes
os-> Command line program N/A Runs a general command prompt command This can be anything that you'd run at a command prompt. Useful for backing up files, etc.
exeConfig-> Path to Quake Enhanced without arguments N/A Focuses the Quake window, clears all Bethesda screens (escape key is pressed), and executes qelauncher.cfg Focusing the window is required for hosting multiple Quake instances and sending them commands
setMaxPlayers-> Numeric value 2-X Maximum value for slider in Quake menu screen Sets number of players that can connect for quake->
setGameModeIndex-> Numeric value 2 Sets game mode for quake->
  1. Cooperative
  2. Deathmatch
  3. Horde
  4. Capture the Flag
quake-> Path to Quake Enhanced with command line aruguments N/A Starts a public Quake server, uses setMaxPlayers-> and setGameModeIndex> values

Running Launches/Re-launches on a Schedule

To create Windows tasks, open up Task Scheduler from the Start menu and select `Create a Basic Task` in the right hand column. The command to run is java.exe from the JDK download, and put `-jar qe-runner-X.Y.jar` and your parameters into the arguments field.

General issues and notes

  • The way this program works is a fragile process, simulating key presses. Don't move the mouse or press keys until it's done.
  • There will be several 20-60 second delays as stuff loads. The whole process to start the server takes a couple minutes. These built-in delays work for me, but your mileage may vary depending on your network and computer speeds. If you'd like to change the default timings, launch the program with -DdebugLaunchDelay=X and -DdebugMenuDelay=Y. They take values in milliseconds. Watch out though... overriding these defaults is 95% likely break things. The defaults were put in after a month of testing, and they try account for things like Steam updates and syncing.
  • To run as Windows tasks: the computer needs to be unlocked and the Windows user needs be logged in