Shoora

QUAKE LIVE DEDICATED SERVER

Jan 30th, 2016
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ===========================
  2. QUAKE LIVE DEDICATED SERVER
  3. ===========================
  4.  
  5. 1. Requirements
  6. 2. Updating and Launching
  7. 3. Configuring your server
  8. 4. Managing server access list
  9. 5. Setting up a map pool
  10. 6. Creating custom gametypes (factories)
  11. 7. Using Steam Workshop
  12. 8. Using external remote console
  13. 9. Using external stats
  14.  
  15. 1. Requirements
  16. ---------------
  17.  
  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.
  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.
  22. See your distribution's instructions on how to perform this.
  23.  
  24.  
  25. 2. Updating and Launching
  26. -------------------------
  27.  
  28. Install and update the server through SteamCMD, using a command similar to below.
  29.  
  30. ./steamcmd.sh +login user pass +force_install_dir ./steamapps/common/qlds/ +app_update 349090 +quit
  31.  
  32. Please see the Valve Developer Community for full SteamCMD options: https://developer.valvesoftware.com/wiki/SteamCMD
  33.  
  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.
  36.  
  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
  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.
  41.  
  42. You should change the path to reflect where you have installed the game. Never run the server under root.
  43.  
  44. #!/bin/bash
  45. gameport=`expr $1 + 27960`
  46. rconport=`expr $1 + 28960`
  47. servernum=`expr $1 + 1`
  48.  
  49. exec /home/user/steamcmd/steamapps/common/qlds/run_server_x86.sh \
  50. +set net_strict 1 \
  51. +set net_port $gameport \
  52. +set sv_hostname "My Quake Live Server #$servernum" \
  53. +set fs_homepath /home/user/.quakelive/$gameport \
  54. +set zmq_rcon_enable 1 \
  55. +set zmq_rcon_password "mypass" \
  56. +set zmq_rcon_port $rconport \
  57. +set zmq_stats_enable 1 \
  58. +set zmq_stats_password "mypass" \
  59. +set zmq_stats_port $gameport
  60.  
  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
  63. issues involving third party software.
  64.  
  65. You will need to replace "user" with the user name of the dedicated server.
  66.  
  67. [program:quakelive]
  68. command=/home/user/steamcmd/steamapps/common/qlds/launch.sh %(process_num)s
  69. user=user
  70. process_name=qzeroded_%(process_num)s
  71. numprocs=10
  72. autorestart=true
  73.  
  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
  76. rcon, please see later in this document.
  77.  
  78.  
  79. 3. Configuring your server
  80. --------------------------
  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,
  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.
  85.  
  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
  88. from the server's map pool. Please see the below section on configuring map pools.
  89.  
  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,
  92. such as InstaGib FFA, and custom variations that provide more traditional competitive settings.
  93.  
  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.
  96.  
  97. See the below section on creating custom factories to setup your own match rules.
  98.  
  99.  
  100. 4. Managing server access list
  101. ------------------------------
  102.  
  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
  105. console variable "g_accessFile"
  106.  
  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
  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:
  111.  
  112. 76561198072786081|admin
  113.  
  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.
  116.  
  117.  
  118. 5. Setting up a map pool
  119. ------------------------
  120.  
  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"
  123.  
  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.
  126.  
  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
  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.
  131.  
  132.  
  133. 6. Creating custom gametypes (factories)
  134. ----------------------------------------
  135.  
  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,
  138. Quake Live ships with base rules for every gametype, and a few variations. Other factories may be available on Steam
  139. Workshop.
  140.  
  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"
  143.  
  144. Example: baseq3/scripts/mynewgametype.factories
  145.  
  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:
  148.  
  149. {
  150. "id": "iffa",
  151. "title": "Instagib FFA",
  152. "author": "id Software",
  153. "description": "Railgun and Gauntlet only. One shot, one kill.",
  154. "basegt": "ffa",
  155. "cvars": {
  156. "g_dropCmds": "0",
  157. "g_spawnArmor": "0",
  158. "dmflags": "28",
  159. "g_instagib": "1",
  160. "g_startingWeapons": "65",
  161. "timelimit": "15",
  162. "g_allowKill": "0",
  163. "fraglimit": "50",
  164. "g_overtime": "0",
  165. "g_loadout": "0"
  166. }
  167. }
  168.  
  169. All fields should be present and of the correct type.
  170.  
  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
  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
  175. "cvars" is an object containing key value pairs of the cvar names and values to set.
  176.  
  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.
  179.  
  180.  
  181. 7. Using Steam Workshop
  182. -----------------------
  183.  
  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,
  186. you must use Steam Workshop.
  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
  189. when browsing the Steam Workshop in your browser.
  190.  
  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
  193. any download fails, it will be skipped and the server will continue to start.
  194.  
  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.
  197.  
  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
  200. cases, you can use SteamCMD to download the workshop item, and then move it to the appropriate place.
  201.  
  202. Download the item with:
  203.  
  204. ./steamcmd.sh +login anonymous +workshop_download_item (appid) (workshop_id) +quit
  205.  
  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.
  208.  
  209.  
  210. 8. Using external remote console
  211. --------------------------------
  212.  
  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
  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
  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:
  219.  
  220. python zmq_rcon.py --host=tcp://127.0.0.1:27961 --password=mypass
  221.  
  222.  
  223. 9. Using external stats
  224. -----------------------
  225.  
  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
  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.
Add Comment
Please, Sign In to add comment