View difference between Paste ID: S03zRW2V and YgrHYrKz
SHOW: | | - or go back to the newest paste.
1-
===========================
1+
===========================
2-
QUAKE LIVE DEDICATED SERVER
2+
QUAKE LIVE DEDICATED SERVER
3-
===========================
3+
===========================
4-
4+
5-
1. Requirements
5+
1. Requirements
6-
2. Updating and Launching
6+
2. Updating and Launching
7-
3. Configuring your server
7+
3. Configuring your server
8-
4. Managing server access list
8+
4. Managing server access list
9-
5. Setting up a map pool
9+
5. Setting up a map pool
10-
6. Creating custom gametypes (factories)
10+
6. Creating custom gametypes (factories)
11-
7. Using Steam Workshop
11+
7. Using Steam Workshop
12-
8. Using external remote console
12+
8. Using external remote console
13-
9. Using external stats
13+
9. Using external stats
14-
14+
15-
1. Requirements
15+
1. Requirements
16-
---------------
16+
---------------
17-
17+
18-
The dedicated server is available in both 32-bit and 64-bit versions, and should run on any modern machine that can
18+
The dedicated server is available in both 32-bit and 64-bit versions, and should run on any modern machine that can
19-
run the Steam client. We recommend Ubuntu Server 14.04.
19+
run the Steam client. We recommend Ubuntu Server 14.04.
20-
20+
21-
To run the 32-bit version of the server on 64-bit installs, you will need to install 32-bit versions of all libraries.
21+
To run the 32-bit version of the server on 64-bit installs, you will need to install 32-bit versions of all libraries.
22-
See your distribution's instructions on how to perform this.
22+
See your distribution's instructions on how to perform this.
23-
23+
24-
24+
25-
2. Updating and Launching
25+
2. Updating and Launching
26-
-------------------------
26+
-------------------------
27-
27+
28-
Install and update the server through SteamCMD, using a command similar to below.
28+
Install and update the server through SteamCMD, using a command similar to below.
29-
29+
30-
./steamcmd.sh +login user pass +force_install_dir ./steamapps/common/qlds/ +app_update 349090 +quit
30+
./steamcmd.sh +login user pass +force_install_dir ./steamapps/common/qlds/ +app_update 349090 +quit
31-
31+
32-
Please see the Valve Developer Community for full SteamCMD options: https://developer.valvesoftware.com/wiki/SteamCMD
32+
Please see the Valve Developer Community for full SteamCMD options: https://developer.valvesoftware.com/wiki/SteamCMD
33-
33+
34-
Run the server using the provided run_server_x86.sh and run_server_x64.sh scripts. This will set the proper working
34+
Run the server using the provided run_server_x86.sh and run_server_x64.sh scripts. This will set the proper working
35-
directory and LD_LIBRARY_PATH to the correct libsteam_api.so. You can add command line options at will.
35+
directory and LD_LIBRARY_PATH to the correct libsteam_api.so. You can add command line options at will.
36-
36+
37-
A standard server or VPS can host many instances of Quake Live, so you may wish to run multiple servers. We recommend
37+
A standard server or VPS can host many instances of Quake Live, so you may wish to run multiple servers. We recommend
38-
managing them through a third party process control system. Below is a sample script that will take one parameter: a
38+
managing them through a third party process control system. Below is a sample script that will take one parameter: a
39-
number starting at 0. This will launch a server with a unique hostname, port, rcon port, and stats port. This is a
39+
number starting at 0. This will launch a server with a unique hostname, port, rcon port, and stats port. This is a
40-
great way to quickly run a small cluster of servers on a single box.
40+
great way to quickly run a small cluster of servers on a single box.
41-
41+
42-
You should change the path to reflect where you have installed the game. Never run the server under root.
42+
You should change the path to reflect where you have installed the game. Never run the server under root.
43-
43+
44-
  #!/bin/bash
44+
  #!/bin/bash
45-
  gameport=`expr $1 + 27960`
45+
  gameport=`expr $1 + 27960`
46-
  rconport=`expr $1 + 28960`
46+
  rconport=`expr $1 + 28960`
47-
  servernum=`expr $1 + 1`
47+
  servernum=`expr $1 + 1`
48-
48+
49-
  exec /home/user/steamcmd/steamapps/common/qlds/run_server_x86.sh \
49+
  exec /home/user/steamcmd/steamapps/common/qlds/run_server_x86.sh \
50-
      +set net_strict 1 \
50+
      +set net_strict 1 \
51-
      +set net_port $gameport \
51+
      +set net_port $gameport \
52-
      +set sv_hostname "My Quake Live Server #$servernum" \
52+
      +set sv_hostname "My Quake Live Server #$servernum" \
53-
      +set fs_homepath /home/user/.quakelive/$gameport \
53+
      +set fs_homepath /home/user/.quakelive/$gameport \
54-
      +set zmq_rcon_enable 1 \
54+
      +set zmq_rcon_enable 1 \
55-
      +set zmq_rcon_password "mypass" \
55+
      +set zmq_rcon_password "mypass" \
56-
      +set zmq_rcon_port $rconport \
56+
      +set zmq_rcon_port $rconport \
57-
      +set zmq_stats_enable 1 \
57+
      +set zmq_stats_enable 1 \
58-
      +set zmq_stats_password "mypass" \
58+
      +set zmq_stats_password "mypass" \
59-
      +set zmq_stats_port $gameport
59+
      +set zmq_stats_port $gameport
60-
60+
61-
This can be combined with a process control system like supervisord in order to manage and launch any number of
61+
This can be combined with a process control system like supervisord in order to manage and launch any number of
62-
instances. Note that supervisord is third party software, and the below may change at any point. We will not support
62+
instances. Note that supervisord is third party software, and the below may change at any point. We will not support
63-
issues involving third party software.
63+
issues involving third party software.
64-
64+
65-
You will need to replace "user" with the user name of the dedicated server.
65+
You will need to replace "user" with the user name of the dedicated server.
66-
66+
67-
  [program:quakelive]
67+
  [program:quakelive]
68-
  command=/home/user/steamcmd/steamapps/common/qlds/launch.sh %(process_num)s
68+
  command=/home/user/steamcmd/steamapps/common/qlds/launch.sh %(process_num)s
69-
  user=user
69+
  user=user
70-
  process_name=qzeroded_%(process_num)s
70+
  process_name=qzeroded_%(process_num)s
71-
  numprocs=10
71+
  numprocs=10
72-
  autorestart=true
72+
  autorestart=true
73-
73+
74-
In conjunction with the above launch script, this will give you 10 server instances, numbered #1 to #10, starting
74+
In conjunction with the above launch script, this will give you 10 server instances, numbered #1 to #10, starting
75-
at port 27960, with rcon starting at port 28960. They will automatically restart if crashed. For information on using
75+
at port 27960, with rcon starting at port 28960. They will automatically restart if crashed. For information on using
76-
rcon, please see later in this document.
76+
rcon, please see later in this document.
77-
77+
78-
78+
79-
3. Configuring your server
79+
3. Configuring your server
80-
--------------------------
80+
--------------------------
81-
81+
82-
Configure your server through server.cfg. You may wish to make a copy of this file and place it into your fs_homepath,
82+
Configure your server through server.cfg. You may wish to make a copy of this file and place it into your fs_homepath,
83-
as updates to the default server.cfg may revert your changes to default. The default server.cfg is heavily commented,
83+
as updates to the default server.cfg may revert your changes to default. The default server.cfg is heavily commented,
84-
so please see that for further information.
84+
so please see that for further information.
85-
85+
86-
There is no need to specify a map on the command line or server.cfg. The server will automatically execute the variable
86+
There is no need to specify a map on the command line or server.cfg. The server will automatically execute the variable
87-
"serverstartup" when the server has completed initialization. By default, this will launch a random map selected
87+
"serverstartup" when the server has completed initialization. By default, this will launch a random map selected
88-
from the server's map pool. Please see the below section on configuring map pools.
88+
from the server's map pool. Please see the below section on configuring map pools.
89-
89+
90-
Quake Live servers are designed to handle multiple gametypes, and multiple gametype variations on one server. This
90+
Quake Live servers are designed to handle multiple gametypes, and multiple gametype variations on one server. This
91-
means that your server can switch from Free For All to Capture the Flag to Clan Arena, to even variants of gametypes,
91+
means that your server can switch from Free For All to Capture the Flag to Clan Arena, to even variants of gametypes,
92-
such as InstaGib FFA, and custom variations that provide more traditional competitive settings.
92+
such as InstaGib FFA, and custom variations that provide more traditional competitive settings.
93-
93+
94-
Because of this, you should generally not place gameplay settings inside server.cfg. Although the server will attempt
94+
Because of this, you should generally not place gameplay settings inside server.cfg. Although the server will attempt
95-
to restore all old settings after switching gametypes, these factory settings will override settings in server.cfg.
95+
to restore all old settings after switching gametypes, these factory settings will override settings in server.cfg.
96-
96+
97-
See the below section on creating custom factories to setup your own match rules.
97+
See the below section on creating custom factories to setup your own match rules.
98-
98+
99-
99+
100-
4. Managing server access list
100+
4. Managing server access list
101-
------------------------------
101+
------------------------------
102-
102+
103-
Quake Live reads and stores to a persistent text file on disk information about who has access to server moderation,
103+
Quake Live reads and stores to a persistent text file on disk information about who has access to server moderation,
104-
server administration, and ban list.  By default, this is in the file access.txt, and can be changed through the
104+
server administration, and ban list.  By default, this is in the file access.txt, and can be changed through the
105-
console variable "g_accessFile"
105+
console variable "g_accessFile"
106-
106+
107-
Only edit this file on disk while all servers are stopped, as the game will write out the current access list before
107+
Only edit this file on disk while all servers are stopped, as the game will write out the current access list before
108-
each map load. In order to have access to your server, you will need to add yourself as an admin. Obtain your
108+
each map load. In order to have access to your server, you will need to add yourself as an admin. Obtain your
109-
64-bit Steam ID by connecting to any match, and typing /players in the console. Put it in access.txt in the
109+
64-bit Steam ID by connecting to any match, and typing /players in the console. Put it in access.txt in the
110-
given format. Example:
110+
given format. Example:
111-
111+
112-
76561198072786081|admin
112+
76561198072786081|admin
113-
113+
114-
Save the file, and start the server. You can then use /mod, /admin, /demote, /ban and /unban commands to manage the
114+
Save the file, and start the server. You can then use /mod, /admin, /demote, /ban and /unban commands to manage the
115-
access list while the server is running.
115+
access list while the server is running.
116-
116+
117-
117+
118-
5. Setting up a map pool
118+
5. Setting up a map pool
119-
------------------------
119+
------------------------
120-
120+
121-
The server's map pool accepts a map, and a factory, delimited with a |. See the default mappool.txt for an example.
121+
The server's map pool accepts a map, and a factory, delimited with a |. See the default mappool.txt for an example.
122-
A different file can be specified through "sv_mapPoolFile"
122+
A different file can be specified through "sv_mapPoolFile"
123-
123+
124-
If you wish to use your own custom factories, you can specify them in here so that your custom factory will appear
124+
If you wish to use your own custom factories, you can specify them in here so that your custom factory will appear
125-
in the three map voting system at the end of the game.
125+
in the three map voting system at the end of the game.
126-
126+
127-
If you wish to lock your server to one gametype, then make sure your map pool only contains maps in that factory,
127+
If you wish to lock your server to one gametype, then make sure your map pool only contains maps in that factory,
128-
then add 8 to g_voteFlags to stop "callvote map" from accepting the optional factory argument. This is not
128+
then add 8 to g_voteFlags to stop "callvote map" from accepting the optional factory argument. This is not
129-
usually needed though; we recommend allowing your players to play and callvote whatever gametypes they wish to
129+
usually needed though; we recommend allowing your players to play and callvote whatever gametypes they wish to
130-
play on your servers, but it is often not bad to restrict Duel servers due to the low player counts.
130+
play on your servers, but it is often not bad to restrict Duel servers due to the low player counts.
131-
131+
132-
132+
133-
6. Creating custom gametypes (factories)
133+
6. Creating custom gametypes (factories)
134-
----------------------------------------
134+
----------------------------------------
135-
135+
136-
Setting up a custom factory is a bit more involved than the past solutions of editing config files, but it allows for
136+
Setting up a custom factory is a bit more involved than the past solutions of editing config files, but it allows for
137-
more flexibility in match rules, while ensuring that settings don't leak over into future matches. By default,
137+
more flexibility in match rules, while ensuring that settings don't leak over into future matches. By default,
138-
Quake Live ships with base rules for every gametype, and a few variations. Other factories may be available on Steam
138+
Quake Live ships with base rules for every gametype, and a few variations. Other factories may be available on Steam
139-
Workshop.
139+
Workshop.
140-
140+
141-
To define your own gametype factory, create a "scripts" folder inside your baseq3 directory, and name the file with
141+
To define your own gametype factory, create a "scripts" folder inside your baseq3 directory, and name the file with
142-
anything that ends in ".factories"
142+
anything that ends in ".factories"
143-
143+
144-
Example: baseq3/scripts/mynewgametype.factories
144+
Example: baseq3/scripts/mynewgametype.factories
145-
145+
146-
This file is a JSON file that contains either a JSON array with multiple factories, or a JSON object containing a
146+
This file is a JSON file that contains either a JSON array with multiple factories, or a JSON object containing a
147-
single factory. For example, here is the built in InstaGib FFA factory:
147+
single factory. For example, here is the built in InstaGib FFA factory:
148-
148+
149-
  {
149+
  {
150-
    "id": "iffa",
150+
    "id": "iffa",
151-
    "title": "Instagib FFA",
151+
    "title": "Instagib FFA",
152-
    "author": "id Software",
152+
    "author": "id Software",
153-
    "description": "Railgun and Gauntlet only. One shot, one kill.",
153+
    "description": "Railgun and Gauntlet only. One shot, one kill.",
154-
    "basegt": "ffa",
154+
    "basegt": "ffa",
155-
    "cvars": {
155+
    "cvars": {
156-
      "g_dropCmds": "0",
156+
      "g_dropCmds": "0",
157-
      "g_spawnArmor": "0",
157+
      "g_spawnArmor": "0",
158-
      "dmflags": "28",
158+
      "dmflags": "28",
159-
      "g_instagib": "1",
159+
      "g_instagib": "1",
160-
      "g_startingWeapons": "65",
160+
      "g_startingWeapons": "65",
161-
      "timelimit": "15",
161+
      "timelimit": "15",
162-
      "g_allowKill": "0",
162+
      "g_allowKill": "0",
163-
      "fraglimit": "50",
163+
      "fraglimit": "50",
164-
      "g_overtime": "0",
164+
      "g_overtime": "0",
165-
      "g_loadout": "0"
165+
      "g_loadout": "0"
166-
    }
166+
    }
167-
  }
167+
  }
168-
168+
169-
All fields should be present and of the correct type.
169+
All fields should be present and of the correct type.
170-
170+
171-
"id" is how you will refer to the factory inside a map pool or a callvote, and must be a string.
171+
"id" is how you will refer to the factory inside a map pool or a callvote, and must be a string.
172-
"title", "author" and "description" are all strings containing info about the factory, and can be seen in Start Match
172+
"title", "author" and "description" are all strings containing info about the factory, and can be seen in Start Match
173-
"basegt" is a string of the base gametype it should apply the settings on. Valid values for "basegt" are:
173+
"basegt" is a string of the base gametype it should apply the settings on. Valid values for "basegt" are:
174-
  ffa, duel, race, tdm, ca, ctf, oneflag, har, ft, dom, ad, rr
174+
  ffa, duel, race, tdm, ca, ctf, oneflag, har, ft, dom, ad, rr
175-
"cvars" is an object containing key value pairs of the cvar names and values to set.
175+
"cvars" is an object containing key value pairs of the cvar names and values to set.
176-
176+
177-
If a factory is invalid, the reason why will be printed in the console during startup, and the factory will not be
177+
If a factory is invalid, the reason why will be printed in the console during startup, and the factory will not be
178-
available for play.
178+
available for play.
179-
179+
180-
180+
181-
7. Using Steam Workshop
181+
7. Using Steam Workshop
182-
-----------------------
182+
-----------------------
183-
183+
184-
Quake Live will only autodownload custom content that has been uploaded to Steam Workshop. The legacy HTTP and UDP
184+
Quake Live will only autodownload custom content that has been uploaded to Steam Workshop. The legacy HTTP and UDP
185-
download functions have been removed. If you want your players to be able to play custom content on your servers,
185+
download functions have been removed. If you want your players to be able to play custom content on your servers,
186-
you must use Steam Workshop.
186+
you must use Steam Workshop.
187-
187+
188-
To add a workshop item to your server, add its item ID to workshop.txt. The item ID can be obtained from the URL
188+
To add a workshop item to your server, add its item ID to workshop.txt. The item ID can be obtained from the URL
189-
when browsing the Steam Workshop in your browser.
189+
when browsing the Steam Workshop in your browser.
190-
190+
191-
Before the server finishes initializing, it will attempt to download all items in workshop.txt, such that custom
191+
Before the server finishes initializing, it will attempt to download all items in workshop.txt, such that custom
192-
content can be included in your map pool. The progress of this process will be printed to the server console, and if
192+
content can be included in your map pool. The progress of this process will be printed to the server console, and if
193-
any download fails, it will be skipped and the server will continue to start.
193+
any download fails, it will be skipped and the server will continue to start.
194-
194+
195-
To upload content, you will need to use SteamCMD's workshop_build_item command. Please refer to the Steam documentation
195+
To upload content, you will need to use SteamCMD's workshop_build_item command. Please refer to the Steam documentation
196-
on how to upload Workshop content.
196+
on how to upload Workshop content.
197-
197+
198-
Occasionally, the Workshop startup process will fail, usually due to temporarily unavailable content server. Some users
198+
Occasionally, the Workshop startup process will fail, usually due to temporarily unavailable content server. Some users
199-
have reported that switching from the 64-bit dedicated to the 32-bit dedicated binary will fix downloads. In these
199+
have reported that switching from the 64-bit dedicated to the 32-bit dedicated binary will fix downloads. In these
200-
cases, you can use SteamCMD to download the workshop item, and then move it to the appropriate place.
200+
cases, you can use SteamCMD to download the workshop item, and then move it to the appropriate place.
201-
201+
202-
Download the item with:
202+
Download the item with:
203-
203+
204-
./steamcmd.sh +login anonymous +workshop_download_item (appid) (workshop_id) +quit
204+
./steamcmd.sh +login anonymous +workshop_download_item (appid) (workshop_id) +quit
205-
205+
206-
and then copy the steamapps/workshop folder into the steamapps folder where the server is installed. This will
206+
and then copy the steamapps/workshop folder into the steamapps folder where the server is installed. This will
207-
cause the game to see the item as cached, and not attempt to download it.
207+
cause the game to see the item as cached, and not attempt to download it.
208-
208+
209-
209+
210-
8. Using external remote console
210+
8. Using external remote console
211-
--------------------------------
211+
--------------------------------
212-
212+
213-
The remote console works differently than previous titles. Rcon is disabled by default, and can be configured using
213+
The remote console works differently than previous titles. Rcon is disabled by default, and can be configured using
214-
"zmq_rcon_enable", "zmq_rcon_ip". "zmq_rcon_port" and "zmq_rcon_password". Unlike previous titles, rcon will bind to
214+
"zmq_rcon_enable", "zmq_rcon_ip". "zmq_rcon_port" and "zmq_rcon_password". Unlike previous titles, rcon will bind to
215-
the TCP port you specify, not UDP. The socket itself is a ZeroMQ socket, using CZMQ for authentication. Included with
215+
the TCP port you specify, not UDP. The socket itself is a ZeroMQ socket, using CZMQ for authentication. Included with
216-
the server is a simple rcon client, zmq_rcon.py, written for Python 2.x. You will need to install Python CZMQ, which
216+
the server is a simple rcon client, zmq_rcon.py, written for Python 2.x. You will need to install Python CZMQ, which
217-
can most easily be done through "pip install czmq" if pip is available on your system. To run the script, use something
217+
can most easily be done through "pip install czmq" if pip is available on your system. To run the script, use something
218-
similar to the following:
218+
similar to the following:
219-
219+
220-
python zmq_rcon.py --host=tcp://127.0.0.1:27961 --password=mypass
220+
python zmq_rcon.py --host=tcp://127.0.0.1:27961 --password=mypass
221-
221+
222-
222+
223-
9. Using external stats
223+
9. Using external stats
224-
-----------------------
224+
-----------------------
225-
225+
226-
Quake Live also exposes a ZeroMQ publish/subscribe socket that will emit a great amount of detail about the ongoing
226+
Quake Live also exposes a ZeroMQ publish/subscribe socket that will emit a great amount of detail about the ongoing
227-
match, live as events occur. A basic script is included, zmq_stats_verbose.py, but it will simply print the stats events
227+
match, live as events occur. A basic script is included, zmq_stats_verbose.py, but it will simply print the stats events
228-
to screen as an example. All events emitted by the engine should be valid JSON. Any additional functionality and
228+
to screen as an example. All events emitted by the engine should be valid JSON. Any additional functionality and
229
storing of stats is left as an exercise to the reader.