{"id":11513,"date":"2010-01-23T12:16:22","date_gmt":"2010-01-23T11:16:22","guid":{"rendered":"https:\/\/worldofpadman.net\/?p=11513"},"modified":"2021-01-12T10:27:38","modified_gmt":"2021-01-12T09:27:38","slug":"create-a-dedicated-wop-server","status":"publish","type":"post","link":"https:\/\/worldofpadman.net\/en\/tutorials\/create-a-dedicated-wop-server\/","title":{"rendered":"Create a dedicated WoP server"},"content":{"rendered":"<p>This tutorial will show you how to create a dedicated server for World of Padman and everything you need to know about a basic setup, necessary files, useful commands and variables. This tutorial may be a bit more extensive than you are used to.<\/p>\n<h2>General information about servers<\/h2>\n<p>First of all, this tutorial is targeted at dedicated servers, therefore the document&#8217;s title. The difference between a local server, i.e. if you host a game from within your local computer and a dedicated server, i.e. you rent a server which is running 24\/7, are huge. I won&#8217;t go into the details, you only need to know that if you want to have a short match with your friends, it is better to do so with the in game options WoP presents to you or to find an empty server.<\/p>\n<p>Still here? Then welcome again, future server admin, you have a great responsibility. But don&#8217;t worry, if you follow this tutorial, there will be no problems. In case there are still problems after reading, ask me. I assume you know how to access your server, since I won&#8217;t cover these basics in this tutorial.<\/p>\n<h3>Hardware<\/h3>\n<p>Now before we can actually start, a few final words about the hardware your server should have. The absolute minimum to run a dedicated server is a 500 MHz CPU, 256 MB RAM and about 1.5 GB free space for the default installation of World of Padman. Depending on whether you want to use bots, you should have a faster CPU. If you want to serve more clients, your server will need more bandwidth. In fact, you don&#8217;t really need to worry about the bandwidth, as most current servers are equipped with a 1000 MBit connection, which is really enough to run a WoP server.<\/p>\n<p>I ask you do obey these requirements. There are already more servers than players, so we do not need another server which is empty all the time. If you want your server to be well-liked, take some time to configure it properly and also watch out for how the players behave. Apply the latest patches for the game and maybe even add some good <a href=\"https:\/\/worldofpadman.net\/download\/addons-wop\/\">custom maps<\/a>.<\/p>\n<h2>Basic setup<\/h2>\n<h3>Necessary files<\/h3>\n<p>You will need a basic installation of WoP, i.e. the PK3 files, which are platform independent, the server executable for your OS and a configuration file, which we will create throughout this tutorial. The PK3 files and the executable can be obtained from <a href=\"https:\/\/worldofpadman.net\/download\/\">WoP&#8217;s download page<\/a> or from your OS&#8217; packet manager. Please don&#8217;t forget to install the latest patch.<\/p>\n<p>I advise you to create a start script for the server. With a start script, you can easily restart your server using cron jobs or whatever you like. In the rest of the tutorial I will assume that you are using a Linux distribution and that you installed the game to <em>\/usr\/local\/games\/WoP<\/em>. Of course you can install it to any folder you like, but don&#8217;t forget to adjust the path from the examples I give.<\/p>\n<h3>Command line switches<\/h3>\n<p>Let&#8217;s get to the start script. You can pass almost every command you would issue in game to the server executable. Please take special care about that, since it will make your life much easier. I will now show you an example script, explanations follow later on.<\/p>\n<pre>#!\/bin\/sh\r\n\r\ncd \/usr\/local\/games\/WoP\r\n.\/wopded.i386 +set dedicated 1 +set net_port 27961 +set com_hunkMegs 256 +exec server_settings.cfg<\/pre>\n<p>In this example I start a LAN-only server, listening on port 27960 (UDP), using 256 MB of RAM and will execute the commands in <em>server_settings.cfg<\/em>. As you can see, I set certain variables using <em>+set<\/em> and then load a configuration file using <em>+exec<\/em>. The general syntax to issue a command as a parameter to the server executable is <em>+command<\/em>. Don&#8217;t worry if you don&#8217;t know where all these commands and variables come from, I&#8217;ll explain them in the next section.<\/p>\n<h3>Set variables<\/h3>\n<p>Prior to explaining all the variables is how to set them. There are different ways to do so. As you have seen, you can set variables on the command line. This is only used for variables which are read-only and can just be set at the server&#8217;s startup. Now you might realize why we set the port and amount of RAM at startup. Both can not change while the server is running. If you want your server to listen on another port, you need to shut it down first, then restart it using the new port.<\/p>\n<p>The basic syntax to set a variable is simply <em>set variable value<\/em>. An example would be set <em>g_gametype 0<\/em>. Be aware that you can set non-existing by mistake variables if you mistype their name! If you want to set a variable to a value which consists of two or more parts, use quotes for the value, i.e. set variable &#8220;bla1 bla2&#8221;.<\/p>\n<p>You can intentionally use this feature to provide further information to the players. If you use <em>set<\/em> to set a non existing variable, it will be shown in your server&#8217;s console, but not to the players. To set new variables which are visible to the players use <em>sets<\/em>. I ask you to do so and give some information about your server like in the following example.<\/p>\n<pre>sets &quot;.Admin&quot; &quot;ENTE himself&quot;\r\nsets &quot;.Location&quot; &quot;Germany&quot;\r\nsets &quot;.Email&quot; &quot;n&#111;&#x62;&#x6f;d&#121;&#64;&#x77;&#x65;b&#46;&#110;&#x65;&#x74;&quot;\r\nsets &quot;.IRC&quot; &quot;padman@qnet&quot;<\/pre>\n<p>I have chosen to prefix the variable names with &#8220;.&#8221;, so one can easily distinguish between real variables and those which are meant to be additional information. These variables won&#8217;t be shown in game, but can be seen in advanced server browsers.<\/p>\n<p>Now that you know how to set variables, let&#8217;s see how we can use this command and others in a configuration file, which will hold all the settings for our server.<\/p>\n<h3>Configuration file<\/h3>\n<p>The configuration file, or short the config, is the file which holds all the settings for your server. It does nothing else but executing all the commands you write into it. That is, you could also set the gametype at your server&#8217;s console every time, but the config will simplify this task for you.<\/p>\n<p>You can and should add comments to your config, which explain settings and give further information for you. Comments start with \/\/. Any line starting with \/\/ will be ignored by WoP. I will now show you a sample of a config, which would be saved as a separate textfile, which you then feed into your server in the server&#8217;s startscript.<\/p>\n<pre>\/\/ Simple sample configuration file for a WoP server\r\nset sv_hostname &quot;My First WoP Server&quot;\r\nset sv_maxclients &quot;10&quot;\r\nset pointlimit &quot;200&quot;\r\nset timelimit &quot;20&quot;\r\nset g_gametype &quot;3&quot;\r\nset rconpassword &quot;mysupersecretpass&quot;\r\nset g_log &quot;wop_server.log&quot;\r\n\r\nmap wop_cabin<\/pre>\n<p>As you can see, we are simply setting variables to certain values. Most of the variables have telling names. At the end of the file, we load a map to get things started.<\/p>\n<p>In this simple example, a single map and a single gametype are good enough for testing purposes. On your server you should have rotating game types and maps, which I will explain in the next section.<\/p>\n<h3>Map and game type rotation<\/h3>\n<p>A game type or map rotation is nothing else than setting the game type variable and loading a map. Both are commands you already know. WoP has a variable named <em>nextmap<\/em>, which will be executed when a round finished. You have heard right, you can also execute variables. That is, assign a command to a variable and then execute this command. Now this is exactly what we will do for our rotation. I will now again show you an example rotation, which you can copy and paste into your config.<\/p>\n<pre>\/\/ Map rotation\r\nset m1 &quot;map wop_backyard; set next_map vstr m2&quot;\r\nset m2 &quot;map wop_diner; set next_map vstr m3&quot;\r\nset m3 &quot;map wop_cabin; set next_map vstr m4&quot;\r\nset m4 &quot;map wop_trashmap; set next_map vstr m5&quot;\r\nset m5 &quot;map wop_padgarden; set next_map vstr m6&quot;\r\nset m6 &quot;map wop_padkitchen; set next_map vstr m7&quot;\r\nset m7 &quot;map wop_padlibrary; set next_map vstr m8&quot;\r\nset m8 &quot;map wop_padship; set next_map vstr m9&quot;\r\nset m9 &quot;map wop_padattic; set next_map vstr m10&quot;\r\nset m10 &quot;map wop_huette; set next_map vstr m11&quot;\r\nset m11 &quot;map wop_bath; set next_map vstr m12&quot;\r\nset m12 &quot;map wop_jail; set next_map vstr m1&quot;\r\n\r\n\/\/ Game type rotation\r\nset g1 &quot;pointlimit 20; g_gametype 0; set next_gametype vstr g2&quot; \/\/ FFA\r\nset g2 &quot;pointlimit 3; g_gametype 4; set next_gametype vstr g3&quot; \/\/ LPS\r\nset g3 &quot;pointlimit 30; g_gametype 5; set next_gametype vstr g1&quot; \/\/ FFA Team\r\n\r\n\/\/ Set initial values\r\nset next_map &quot;vstr m1&quot;\r\nset next_gametype &quot;vstr g1&quot;\r\n\r\n\/\/ Modifying nextmap\r\nset nextmap &quot;vstr execnextmap&quot;\r\nset execnextmap &quot;vstr next_gametype; vstr next_map; set nextmap vstr execnextmap&quot;\r\n\r\n\/\/ Load first map\r\nvstr nextmap<\/pre>\n<p>I have added a few comments to explain what is going on. First of all, we set a whole bunch of new variables, i.e. <em>m1<\/em>, <em>m2<\/em>, <em>m3<\/em> and so on. This is a list of maps we will use. You can name your variables like you want to, e.g. <em>map_one<\/em>, <em>map_two<\/em>, <em>map_three<\/em> and so on would work as well. Every variable is actually a command, which loads a map and sets <em>next_map<\/em> to the next map in our array. The game type rotation works accordingly. Note that the last one will load the first one again, otherwise the rotation would stop at the last map or game type. As you can see, one can combine mutliple commands into one. Just merge them with &#8220;;&#8221;.<\/p>\n<p>Now for the interesting part. I have defined a new variable called <em>execnextmap<\/em> which will load the next game type and map and then set <em>nextmap<\/em> again. As you can see, I have used a new command named <em>vstr<\/em>. This command will execute the contents of a variable as if it were a command you actually typed in. The final <em>vstr<\/em> is simply to load the first map of the array, similar to the <em>map wop_cabin<\/em> in our config without rotation.<\/p>\n<p>Feel free to add more maps to this template. You can also modify the point limit depending on the game type. Another crazy thing you can do is to include the current game type in your server&#8217;s name. To do so, you will of course first need to know which variable you need to set.<\/p>\n<h2>Controlling the server<\/h2>\n<p>As I have mentioned in the introduction, I assume that you know how to access your server. Every time I mentioned the server&#8217;s console, I meant the console of WoP, not your OS&#8217; shell. Of course you can open a SSH or VNC connection to your server every time you want to change a setting, but there are easier ways to do so. I will now discuss how to use the in game options of WoP to do rcon, which is the abbreviation for remote control. If you don&#8217;t want to start WoP every time, I recommend you to use a server browser like <a href=\"https:\/\/xqf.github.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">XQF<\/a>, which has inbuilt rcon support, so you don&#8217;t even need to have WoP installed.<\/p>\n<h3>Rcon<\/h3>\n<p>Using rcon is very simple. In fact, you only need to prefix all your administration commands with rcon, i.e. <em>rcon command<\/em>. But hey, before you can do so, you will first need to set a password for rcon on your server. Chose a strong one, in times of brute force attacks you&#8217;re always at risk. So please replace &#8220;mysupersecretpass&#8221; by your own strong password.<\/p>\n<p>Actually this is a fetch-ahead of an upcoming chapter. In your config, add a line like the following one to set the rcon password on your server.<\/p>\n<pre>set rconpassword &quot;mysupersecretpass&quot;<\/pre>\n<p>Don&#8217;t lose this password and don&#8217;t give it to anyone! What you need to do next is to set this password clientside. You can also use rcon with <em>rcon password command<\/em>, but since you use a strong password, it would be quite stressful to write your password all the time.<\/p>\n<p>For now, start WoP on the computer you want to use for rcon. In game open the console via Shift+Esc. In the game&#8217;s console type the following command, which will set your rcon password clientside and save it to your client&#8217;s config.<\/p>\n<pre>seta rconPassword &quot;mysupersecretpass&quot;<\/pre>\n<p>Now you can connect to your server and control it from in game. In case your server is full and thus you can&#8217;t connect to it, there is another possibility to use. Use this command, to administrate your server from within WoP without connecting to it.<\/p>\n<pre>set rconAddress 192.169.100.3:27060<\/pre>\n<p>Of course you will need to use your server&#8217;s IP and port. Although setting variables is the most important command, you will also need other commands which will be explained in the next section.<\/p>\n<h2>Commands<\/h2>\n<p>You already know a few commands, these are <em>set<\/em>, <em>exec<\/em>, <em>sets<\/em>, <em>map<\/em> and <em>vstr<\/em>. I will now give you a list of common commands and their explanations. Please note that these are not all possible commands. To obtain a list of all available commands on your WoP server, use the command <em>cmdlist<\/em>, which will then output a list of commands without their functions. If you&#8217;re working directly on your server, you can use the auto complete function of the game console. Simply type the first few letters of a command or variable, press tab and the game will either show you some possibilities or auto complete the name if there is only one possibility.<\/p>\n<pre>set variable value<\/pre>\n<p>Sets a variable to a certain value. Note that some variables are read-only or can only be set at startup. Some variables require you to load a new map.<\/p>\n<pre>sets variable value<\/pre>\n<p>Sets a variable, which will appear in a server browser. Used for additional information about your server.<\/p>\n<pre>status<\/pre>\n<p>Shows a list with various information about every player on the server, including bots.<\/p>\n<pre>kick username<\/pre>\n<p>Kicks the user with the given name. You don&#8217;t need to care about colored names or capital letters. You can also use the player&#8217;s number, shown by the <em>status<\/em> command. Furthermore you can kick all users via <em>kick all<\/em>, but I do not recommend this. Rather shut down the server as a whole. Furthermore, you can remove all bots via <em>kick allbots<\/em>.<\/p>\n<pre>kicknum clientnumber<\/pre>\n<p>Kicks the player with the given number. The number can be obtained via the <em>status<\/em> command.<\/p>\n<pre>map mapname<\/pre>\n<p>Loads the map with the given name. Current game type will be kept.<\/p>\n<pre>map_restart<\/pre>\n<p>Reloads the current map and keeps game type.<\/p>\n<pre>addbot botname botskill team joindelay funname<\/pre>\n<p>Adds the bot with the character of the given <em>botname<\/em>, <em>skill<\/em>, <em>team<\/em>, after a <em>delay<\/em>. <em>Funname<\/em> overrides the bot&#8217;s default <em>botname<\/em>.<\/p>\n<pre>exec configfile<\/pre>\n<p>Executes the given <em>configfile<\/em>. All commands and variables of this file will be used and overwrite current ones. You can use this command to separate a mod&#8217;s variables from your server&#8217;s settings. Simply create a single config, e.g. <em>mymod.cfg<\/em> which you load with <em>exec mymod.cfg<\/em> inside your main config.<\/p>\n<pre>addIP ipmask<\/pre>\n<p>Since the <em>banUser<\/em> and <em>banClient<\/em> commands are disabled in WoP, you&#8217;ll need to use IPs to ban players from your server. <em>ipmask<\/em> is the IP of the player you want to ban, which can be obtained via the <em>status<\/em> command. You can also use wildcards, e.g. <em>addIP 192.246.40.*<\/em>.<\/p>\n<pre>removeIP ipmask<\/pre>\n<p>This command simply removes an <em>ipmask<\/em> you have added with addIP. You must use the same name you have entered, i.e. you can not remove <em>192.246.40.1<\/em> if you have added <em>192.246.40.*<\/em>.<\/p>\n<pre>listIP<\/pre>\n<p>Prints the contents of g_banIPs, i.e. the banned IPs you have added.<\/p>\n<pre>forceteam playerid team<\/pre>\n<p>Forces the given player into a team. Either use <em>playername<\/em> or <em>id<\/em>. Team can be &#8220;red&#8221;\/&#8221;r&#8221;, &#8220;blue&#8221;\/&#8221;b&#8221;, &#8220;spectator&#8221;\/&#8221;s&#8221;, &#8220;free&#8221;\/&#8221;f&#8221;.<\/p>\n<pre>setgametype gamestring<\/pre>\n<p>This is an alternative to \/set g_gametype. You can enter the string of the gametype, e.g. <em>setgametype syc team<\/em>.<\/p>\n<pre>vstr variable<\/pre>\n<p>Executes a variable&#8217;s value as if it were a command you typed in. Used for game type and map rotation.<\/p>\n<h2>Variables<\/h2>\n<p>And now for the variables we talked about. Since there are so many of them, this chapter is subdivided into sections. You should use <em>set<\/em> to set variables. Use the auto complete function of the game console or the command <em>cvarlist<\/em>, which will print a list of all variables. Most of the variables you need are covered in the sample configs, which come with your WoP installation. They are located in <em>\/usr\/local\/games\/WoP\/wop<\/em>.<\/p>\n<p>If you use a mod, there might be even more variables you&#8217;ll have to set. Those are usually documented in the mod&#8217;s readme.<\/p>\n<h3>Gameplay<\/h3>\n<pre>pointlimit<\/pre>\n<p>Sets the point limit for the current game. You should change this within you map rotation according to the game type. If set to <em>0<\/em> there will be no limit and rounds will only be limited by time limit. If you set point and time limit to <em>0<\/em>, you should enable votes so players can change the map themselves.<\/p>\n<pre>timelimit<\/pre>\n<p>Sets the time limit for the current game. If set to 0 there will be no limit.<\/p>\n<pre>g_friendlyFire<\/pre>\n<p>Defines whether you can harm your team mates or not. Better leave this off (set to <em>0<\/em>), since WoP is more of a fun game and most players are not really able to do real team play.<\/p>\n<pre>g_LPS_startlives<\/pre>\n<p>Sets the number of lives to start with in game type Last Pad Standing.<\/p>\n<pre>g_LPS_flags<\/pre>\n<p>This defines some of the gameplay rules for Last Pad Standing. Add up one or more of the following values, i.e. for multiple point and no Arrows set to <em>2<\/em>+<em>4<\/em>, i.e. <em>6<\/em>.<\/p>\n<ul>\n<li><em>1<\/em> for point limit: A round is finished after one player has won the game as many times as specified with <em>pointlimit<\/em>. Therefore set <em>pointlimit<\/em> and g_LPS_startlives to proper values.<\/li>\n<li><em>2<\/em> for multiple points: Everybody gets (<em>g_LPS_startlives<\/em> &#8211; [players with lives left] + 1) lives. Thus players can join during the match.<\/li>\n<li><em>4<\/em> for no names: Don&#8217;t show the LPS arrows in game. Don&#8217;t confuse this with the client setting for the arrows.<\/li>\n<\/ul>\n<pre>g_gametype<\/pre>\n<p>Sets the game type being played. You probably like to change this using map rotation.<\/p>\n<ul>\n<li><em>0<\/em> for ffa: Free For All<\/li>\n<li><em>1<\/em> for tourney: Tournament<\/li>\n<li><em>2<\/em> for single: Singleplayer (not used)<\/li>\n<li><em>3<\/em> for syc: Spray Your Color<\/li>\n<li><em>4<\/em> for lps: Last Pad Standing<\/li>\n<li><em>5<\/em> for ffa: Free For All Team<\/li>\n<li><em>6<\/em> for ctl: Capture The Lolly<\/li>\n<li><em>7<\/em> for syc_tp: Spray Your Color Team<\/li>\n<li><em>8<\/em> for bb: Big Balloon<\/li>\n<\/ul>\n<pre>g_allowvote<\/pre>\n<p>If set to <em>1<\/em>, players can issue votes. Be aware that this sometimes involves voting for non existing game types or maps, kicking unaware PadPlayers, vote spam in general and could even break your carefully planned map rotation.<\/p>\n<pre>g_doWarmup, g_warmupReady, g_warmup<\/pre>\n<p>Defines whether to do warmup (set <em>g_doWarmup<\/em> to <em>1<\/em>), how many percent of the players need to be ready for the game to start (set <em>g_warmupReady<\/em> to decimal value between <em>0<\/em> and <em>1<\/em>), how long the period of warmup should last (set <em>g_warmup<\/em> in seconds).<\/p>\n<pre>g_knockback<\/pre>\n<p>Defines how strong players should be knocked back if being damaged. The default value is 1000.<\/p>\n<pre>g_teamAutoJoin, g_teamForceBalance<\/pre>\n<p>Defines, whether players will automatically join a team once connected (set <em>g_teamAutoJoin<\/em> to <em>1<\/em>). Note that players will still stay in their team on new games. If <em>g_teamForceBalance<\/em> is set to <em>1<\/em>, one can&#8217;t join a team if it has more players than the other one. You should really consider to set these two variables in order to have fair and balanced team play on your server.<\/p>\n<pre>g_weaponRespawn, g_weaponTeamRespawn<\/pre>\n<p>Set <em>g_weaponRespawn<\/em> in seconds to define the time until weapons will be re-spawned after being picked up. Use <em>g_weaponTeamRespawn<\/em> to define a separate time in seconds for team based game types which usually should be higher than the one for Free For All.<\/p>\n<pre>g_speed<\/pre>\n<p>This defines how fast players will walk. The default value since WoP 1.5 is <em>280<\/em>, before it was <em>320<\/em>. Don&#8217;t set this to high as it makes the game unplayable.<\/p>\n<pre>g_gravity<\/pre>\n<p>This defines how strong the player is attracted to the ground. The higher the value, the stronger the gravity. The default value is <em>800<\/em>.<\/p>\n<pre>g_quadfactor<\/pre>\n<p>This defines the amount of damage a player can do while having the PadPower powerup. A value greater than one makes the player hand out more damage.<\/p>\n<pre>g_forceSpawn<\/pre>\n<p>This can either be set to <em>0<\/em> or <em>1<\/em>. If set, players will be re spawned after a certain time. This is useful to reduce those who don&#8217;t re spawn in order to camp for powerups.<\/p>\n<pre>g_KillerduckHealth<\/pre>\n<p>This defines how much health points a single Killerduck has. If set to -1, Killerducks can&#8217;t get killed.<\/p>\n<pre>disable_<\/pre>\n<p>You can actually disable items in the game without using a mod! To do so, set a cvar to <em>1<\/em> which is called <em>disable_classname<\/em>, e.g.<\/p>\n<pre>set disable_weapon_imperius &quot;1&quot;\r\nset disable_ammo_imperius &quot;1&quot;<\/pre>\n<pre>dmflags<\/pre>\n<ul>\n<li><em>8<\/em> for no falling damage: This has been left over from Q3. WoP doesn&#8217;t have falling damage anyways.<\/li>\n<li><em>16<\/em> for a fixed FOV: Forces everyone&#8217;s FOV (field of view, configured with cg_fov clientside) to 90.<\/li>\n<li><em>32<\/em> for no footsteps: Players don&#8217;t emit footsteps sounds.<\/li>\n<\/ul>\n<h3>Clients<\/h3>\n<pre>sv_maxclients<\/pre>\n<p>Sets the maximum number of clients on the server. This includes bots.<\/p>\n<pre>g_maxGameClients<\/pre>\n<p>Sets the number of clients that are allowed to play. If set to 0 all clients can play, otherwise some have to spectate.<\/p>\n<pre>sv_privateClients<\/pre>\n<p>Sets the number of private clients. This is usually used to reserve some space for admins or VIPs. They need to have the correct password to join.<\/p>\n<pre>g_inactivity<\/pre>\n<p>Defines after how many seconds an inactive client will be kicked. Inactive means, no movement, chatting or looking around at all. You shouldn&#8217;t set this too low, otherwise you might annoy players that are only away from keyboard for a short time. In general it is a good idea to set this variable, as inactive players only suck bandwidth or will be fragged by unfair players. Inactive players will be warned 10 seconds before they are kicked.<\/p>\n<pre>sv_zombietime<\/pre>\n<p>If the server doesn&#8217;t recieve a command from a client within this time in minutes, the client will be dropped. This might happen if the connection hangs, i.e. lags for a longer period.<\/p>\n<h3>Server<\/h3>\n<pre>g_log, g_logsync<\/pre>\n<p><em>g_log<\/em> sets the file name of the server&#8217;s log file. <em>g_logsync<\/em> specifies how to write the log.<\/p>\n<ul>\n<li><em>0<\/em>: when the internal buffer is full<\/li>\n<li><em>1<\/em>: every time a new message for the log arrives<\/li>\n<\/ul>\n<pre>sv_allowdownload, sv_dlURL<\/pre>\n<p>You can allow clients to download any custom maps and mods running on your server (set <em>sv_allowdownload<\/em> to <em>1<\/em>). Files can either be server by your server, or from an external server via ftp\/http. In the latter case you&#8217;ll need to set <em>sv_dlURL<\/em> as described later on. It is usually a good idea to use an external server, since otherwise the downloads would get subtracted from your gaming server&#8217;s bandwidth which might cause lags.<\/p>\n<pre>sv_master#<\/pre>\n<p>You can define up to 5 master servers by using <em>sv_master1<\/em> to <em>5<\/em> followed by the master servers URL. Usually you shouldn&#8217;t need to set any of them.<\/p>\n<pre>g_filterban<\/pre>\n<p>If set to 0, only players from the IP list you have created with <em>addIP<\/em> are allowed to play. If set to 1, permit players from the IP list entering the server.<\/p>\n<pre>sv_hostname<\/pre>\n<p>This defines the server&#8217;s name that will be displayed in the server browser. It may contain color tags aswell.<\/p>\n<pre>g_motd<\/pre>\n<p>This defines a &#8220;message of the day&#8221; which will only be displayed in either the server browser or in game if you display server infos (default toggle with K). It doesn&#8217;t have a real use.<\/p>\n<pre>rconpassword, sv_privatePassword, g_password<\/pre>\n<p><em>rconpassword<\/em> sets the password for remote control of the server. If none is set, you can only use the server&#8217;s command line to issue commands. <em>sv_privatePassword<\/em> sets the password for private clients. Their places are reserved on the server. Private clients need to type <em>password<\/em> <em>blabla<\/em> in console to join. <em>g_password<\/em> sets the password for any client that wants to join. If it is set, clients need to write <em>password blabla<\/em> in console.<\/p>\n<pre>sv_pure<\/pre>\n<p>Always set this to <em>1<\/em>. Otherwise players could use modified PK3 files i.e. to cheat.<\/p>\n<pre>dedicated<\/pre>\n<p>You need to set this variable on server startup. It controls whether your server sends heartbeats to the master servers, i.e. if it will be listed in game. Don&#8217;t forget that in order for the server to be listed you must open the port in every firewall between your server and the internet.<\/p>\n<ul>\n<li><em>2<\/em>: the server will send heartbeats to the master servers<\/li>\n<li><em>1<\/em>: it won&#8217;t, although people can still join if they know IP and port<\/li>\n<\/ul>\n<pre>net_port<\/pre>\n<p>This defines the UDP port the server will listen on. This is the port you need to open in your firewall. If you want to host more than one server on one IP, each instance has to use a different port.<\/p>\n<pre>com_hunkmegs<\/pre>\n<p>This is the maximum amount of RAM the server will use. The more it uses, the faster it usally loads maps as they will be cached. The minimum should be 256 MB.<\/p>\n<pre>fs_game<\/pre>\n<p>Specifies the folder the engine will search for files. This is used for mods, as discussed later on. The WoP engine will look for files inside <em>\/usr\/local\/games\/WoP\/wop<\/em>, <em>~\/.padman\/wop<\/em> and in, for example, <em>\/usr\/local\/games\/WoP\/mymod<\/em> and <em>~\/.padman\/mymod<\/em>.<\/p>\n<h3>Bots<\/h3>\n<pre>bot_enable, bot_minplayers, bot_nochat, g_spSkill<\/pre>\n<p>Defines wheter bots are enabled (set <em>bot_enable<\/em> to <em>1<\/em>). If so, they fill up to <em>bot_minplayers<\/em> slots but leave, if human players join. <em>bot_nochat<\/em> disables the maybe annoying slogans the bots like to say (set to <em>0<\/em>). If you use <em>bot_minplayers<\/em>, this number of bots will be added using <em>g_spSkill<\/em>, which can be between <em>1<\/em> and <em>5<\/em>.<\/p>\n<h3>Net settings<\/h3>\n<pre>sv_minRate, sv_maxRate<\/pre>\n<p>The maximum Datarate for a single client to the server is defined by <em>sv_maxRate<\/em>. If your server doesn&#8217;t have a fast and reliable connection you shouldn&#8217;t set this above <em>25000<\/em>. If a client has a lower datarate then defined by <em>sv_minRate<\/em>, he will be rejecten while connecting.<\/p>\n<pre>sv_minPing, sv_maxPing<\/pre>\n<p>The server checks for the players&#8217; ping while connecting. If it is below <em>sv_minPing<\/em> or above <em>sv_maxPing<\/em>, the player will be rejected.<\/p>\n<pre>sv_fps<\/pre>\n<p>Yes, even a server has a fps setting! If you set this higher than default, the server will need more bandwith but clients might encounter a more fluent gameplay. It might also cause some bugs in gameplay. If you find any bugs, use <a href=\"http:\/\/bugs.worldofpadman.net\" target=\"_blank\" rel=\"noopener noreferrer\">WoP&#8217;s bug tracker<\/a> or drop a line in the bug reports channel on <a href=\"http:\/\/discord.worldofpadman.net\" target=\"_blank\" rel=\"noopener noreferrer\">WoP&#8217;s Discord server<\/a>.<\/p>\n<h2>Mods<\/h2>\n<p>Modifications, or in short Mods, modify the gameplay. Sometimes they add new game types, sometimes they replace player or weapon models. There are two kinds of mods. Server side ones and those that have some client side code as well. The first type is easier to setup, since clients do not need to download the mod. The second sort needs to exist on the player&#8217;s computer, either since he downloaded it separately or from your server.<\/p>\n<p>In both cases you should create a separate folder for your mod which will include its files and server config. To do so, simply create a folder inside either <em>\/usr\/local\/games\/WoP<\/em> or <em>~\/.padman<\/em>. If you named your folder <em>mymod<\/em>, it will appear as <em>mymod<\/em> in the game. To tell the server that you want to use a mod, you&#8217;ll need to specify <em>+set fs_game mymod<\/em> in your start script.<\/p>\n<h3>Server side mods<\/h3>\n<p>A server side mod usually consists of a file called <em>qagame.qvm<\/em>. QVM stands for Quake Virtual Machine, it is thus platform independant. Inside your mod&#8217;s folder, create a subfolder called <em>vm<\/em> and copy the <em>qagame.qvm<\/em> inside <em>vm<\/em>. Read the mod&#8217;s documentation and don&#8217;t forget to set the mod&#8217;s variables in your server config.<\/p>\n<h3>Client side mods<\/h3>\n<p>Client side mods may include a server side mod. Any new game content can be seen as a mod. If you have a pure server, i.e. <em>sv_pure 1<\/em>, every client will need to have exactly the same files as the server uses. Therefore you need to distribute the download in some way. The most comfortable way for players is to enable the auto download option on your server.<\/p>\n<p>To do so copy the mod&#8217;s PK3 files inside <em>~\/.padman\/mymod<\/em> or <em>\/usr\/local\/games\/WoP\/mymod<\/em> and then upload them somewhere. Set <em>sv_allowdownload 1<\/em> and point <em>sv_dlURL<\/em> to your upload folder. The URL can either be http or ftp. You need to follow a certain scheme. Let&#8217;s assume you set <em>sv_dlURL<\/em> to <em><\/em> then you&#8217;ll need to put your pk3s inside <em>mysite.com\/downloads\/mymod<\/em>. A client will automatically append your mod&#8217;s name (to be more correct; <em>fs_game<\/em>) to <em>sv_dlURL<\/em>. The files must be accessible with anonymous ftp or as a direct http download.<\/p>\n<p>Again, don&#8217;t forget to include the mod&#8217;s variables in your config. Of course you&#8217;ll also have to look for updates of the mod and replace the files on your server and upload accordingly.<\/p>","protected":false},"excerpt":{"rendered":"<p>This tutorial will show you how to create a dedicated server for World of Padman and everything you need to know about a basic setup, necessary files, useful commands and variables. This tutorial may be a bit more extensive than you are used to. General information about servers First of all, this tutorial is targeted [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[121,19],"tags":[],"class_list":["post-11513","post","type-post","status-publish","format-standard","hentry","category-other","category-tutorials"],"_links":{"self":[{"href":"https:\/\/worldofpadman.net\/en\/wp-json\/wp\/v2\/posts\/11513","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/worldofpadman.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/worldofpadman.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/worldofpadman.net\/en\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/worldofpadman.net\/en\/wp-json\/wp\/v2\/comments?post=11513"}],"version-history":[{"count":10,"href":"https:\/\/worldofpadman.net\/en\/wp-json\/wp\/v2\/posts\/11513\/revisions"}],"predecessor-version":[{"id":12215,"href":"https:\/\/worldofpadman.net\/en\/wp-json\/wp\/v2\/posts\/11513\/revisions\/12215"}],"wp:attachment":[{"href":"https:\/\/worldofpadman.net\/en\/wp-json\/wp\/v2\/media?parent=11513"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/worldofpadman.net\/en\/wp-json\/wp\/v2\/categories?post=11513"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/worldofpadman.net\/en\/wp-json\/wp\/v2\/tags?post=11513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}