Nemesis Server v2.0.15

1.16n client and server mod
http://www.q3nemesis.com

Developed by Cyrus and Wonkey
cyrus@q3nemesis.com
wonkey@q3nemesis.com


Contents

Overview

The latest version of this document is always available at http://www.q3nemesis.com/docs/server-readme.html, please use it whenever possible.

Nemesis is a client and server modification for Quake 3 offering many of the features of OSP from 1.32 with efforts to make sure the server is as cheat free as possible. There is a very simple mission statement where we strive for a competitive arena which should be consistent between servers running Nemesis. For that reason we do not allow changing of weapon damage, weapon splash damage or splash radius, weapon respawn rates or item respawn rate.

Installation

Within the server's quake 3 installation directory create a folder called nemesis. Unzip the contents of nemesis-server-X-Y-Z.zip (X, Y and Z represent the release version) into the nemesis folder you just created. You will be left with a folder structure similar to the following

You will be able to start your server with a command similar to the following

./q3ded +set com_hunkmegs 64 +set fs_basepath `/bin/pwd` +set fs_game nemesis +exec modes/frz.cfg +set dedicated 2

What's New?

Description of changes between releases.

2.0.15

  • Nemesis CVARs prefixed with nms_ instead of g_ to avoid confusion with default CVARs and features.
  • Renamed Monkey Magic to Wonkey Magic to avoid confusion with the old standalone, java based version.
  • Moved banning files, motd into a new folder called wonkeymagic.
  • Reorganised modes folder so mode specific files are nested within one folder per mode.

2.0.12

Standard Configuration

Description of configuration parameters standard to quake 3.

Host Name

sv_hostname is the name you want your server to be shown as in server browsers.

sv_hostname "My Nemesis Server"

Game Type

g_gameType controls the type of game play.

g_gameType 5

Maximum Clients

sv_maxClients is used to determine the maximum number of clients allowed to be in your server at any one time (this includes spectators).

sv_maxClients 12

Remote CONtrol Password

rconPassword is used to set a the remote control password.

rconPassword "password"

Password

g_password and g_needpass are used to set a password for the whole server. This means only players with the correct password set can connect.

// enable password
g_needpass 1
g_password "password"

// disable password
g_needpass 0
g_password ""

Private Clients

sv_privateClients is used to determine how many of the client slots (set with sv_maxClients) are reserved for clients with the private password. The private password is set using sv_privatePassword.

sv_privateClients 4
sv_privatePassword "password"

Minimum and Maximum Ping

sv_minPing and sv_maxPing set the range of ping a client must be within to enter the server.

Unless you have a problem with very high pingers entering your server I'd recommend these both be set to 0. When a client connects to a server the only chance for the server to describe problems to them is the connection window (while waiting to join), but in 1.16n the message about low pings overrides everything else. e.g. if the server is full you no longer get told the server is full you get told the server is only for low pings.

sv_minPing 0
sv_maxPing 150

Pure Server

sv_pure sets whether a client is allowed to have any pk3 files that the server does not have. Set this to 1 to enable pure mode, 0 to turn it off.

When pure is on, the server asks the client to send it the unique md5 hash for each pk3 file and then compares it with the file it has. This prevents a client modifying a pk3 file.

If a client tries to connect to a pure server with extra pk3 files or without all the required pk3 files it will receive an unpure client message in the console window and will not be allowed to connect. If the server has sv_allowDownload enabled (set to 1) and the client has cl_allowDownload on (set to 1) the client will attempt to download missing pk3 files to satisfy the server.

Pure mode is notoriously buggy in 1.16n and autodownload will not even begin to work on linux servers unless they are started with the correct commandline arguments. Linux servers require the fs_basepath be set within the command that launches quake 3
q3ded +set fs_basepath <Q3_PATH> +set fs_game nemesis +exec modes/frz.cfg where <Q3_PATH> is set to the directory quake 3 is installed in (something like /home/user/quake3_116).

After all that pure mode is often regarded as useless as the internet provides a resource to download cracked quake3 executables which can bypass the server's pure checking. Nemesis provides its own anticheat system which is more effective.

sv_pure 1
sv_allowDownload 1

Frames Per Second

sv_fps controls the upper limit of how many game updates per second the server sends to clients. The actual value a client receives is determined by their setting of snaps, but the server setting prevents very high values being requested by the client. The quake 3 engine actually has a hardcoded limit of 30 so an fps of greater than 30 will never actually happen.

The more updates a client receives per second the more accurate a view of the arena they can display to the client. Of course, the higher the value, the more bandwidth requirements are placed on both client and server to keep up.

sv_fps 30

Maximum Rate

sv_maxRate controls the maximum rate a client is allowed to request from the server (via the rate command).

On a LAN game a rate of 25000 is fine because of the underlying network speeds, but an internet game should have this value set at about 12000 to prevent network congestion and laggy client performance.

sv_maxRate 12000

Knockback

g_knockback controls the amount of knockback that a player feels e.g. when caught in rocket splash. The default value is 1000.

g_knockback 1000

dmflags

You can enable/disable some standard quake features with the dmflags command. Just add up the numbers of the features you want to enable from the following list;

dmflags 8  // no falling damage

Forced Respawn

g_forcedRespawn controls the time (in seconds) before a player is forced to respawn when a new round starts.

g_forcedRespawn 1

Master Servers

Master servers hold a global list of all online quake 3 servers at any one time. Setting the master servers correctly will enable your server to be found quickly and easily by other players using server browsers. If you want to see the information a master server holds why not check out the Nemesis Server Spider

sv_master1 "monster.idsoftware.com"
sv_master2 "master3.idsoftware.com"
sv_master3 "clanservers.net"

Round Limits

A game or round can be limited in a variery of ways.

fraglimit is used in FFA and TDM games. When a player or team reaches the frag limit the game is considered complete.

capturelimit is used in CTF games. When a team reaches the capture limit the game is considered complete.

freezelimit (added by nemesis) is used in freezetag games. When a team reaches the freeze limit the game is considered complete.

timelimit controls the time in minutes after which a game is considered complete. Time limit is often used in conjunction with one of the other 3 round limiters above to prevent a game lasting too long.

freezelimit 10
timelimit 30

Bots

We recommend that you disable bots on your server if possible as they can be the cause of some curious bugs in certain circumstances. However, they work perfectly well in many games.

bot_enable controls whether bots are allowed on the server. bot_nochat controls whether bots in game are allowed to talk. bot_minPlayers controls the minimum amount of players one each team - if it falls below this value then the server automatically adds bots. g_spSkill controls the skill level of the bots.

bot_enable 1
bot_nochat 1
bot_minPlayers 2
g_spSkill 3

Nemesis Configuration

Description of configuration parameters added by Nemesis.

Anticheat

No details yet ...

ProMode

nms_proMode controls whether ProMode (copyrights of arQon, author of CPMA) is enabled on the server. 1 to enable, 0 to disable.

ProMode changes the movement physics so that players have more air control and can double jump when coming up ramps. With VQ3 physics most players will be used to holding down forward and one strafe key whilst they are in air - in ProMode you have air control only when you are holding down one direct button.

ProMode changes the weapon switch time so it is possible to fast switch between certain weapons. For example, try using the lightning gun on someone and then switching to rail. You will fire an instant railshot meaning the combination can give a very quick kill.

Players running Nemesis client will also notice ProMode adds different hits sounds depending on how much damage you caused to the enemy.

nms_proMode 1

DeLagged

nms_delagHitScan controls whether or not the server runs in delagged mode - 1 to enable, 0 to disable. Delag mode means all clients can fire directly at opponents and the server will do ping based compensations. Normally benefits high pingers, but can cause annoying side effects such as being killed when you've already run around a corner!

nms_delagHitScan 0

InstaGib

nms_instGib controls whether or not the server runs in instagib mode - one hit one kill. Choose from the following options;

nms_instaGib 0

Rail Jump

nms_railJump controls whether rail jumping is enabled on the server. 1 to enable, 0 to disable.

nms_railJump 1

Message of the Day

nms_useMotd controls whether the wonkeymagic/motd.txt file content is displayed in the console window when a client connects to the server. 1 to enable, 0 to disable.

nms_useMotd 1

Grapping Hook

nms_hookEnable controls whether players can use the grappling hook. 1 to enable, 0 to disable.

nms_hookSky controls whether players can hang on to the sky with the grappling hook. 1 to enable, 0 to disable.

nms_hookDeploy is the speed (in game units) at which the hook moves when it is fired.

nms_hookPull is the speed (in game units) at which the hook pulls the player towards it.

nms_hookHoldTime is the time (in seconds) the hook can hold on to an object before it automatically releases.

nms_hookEnable 1
nms_hookSky 0
nms_hookDeploy 800
nms_hookPull 800
nms_hookHoldTime 5

Start Weapons

nms_machineGun, nms_shotGun, g_grenadeLauncher, nms_plasmaGun, nms_rocketLauncher, nms_lightningGun, nms_railGun and nms_bfgGun are used to control the weapons a player starts with. Set to 1 to start with the weapon, otherwise 0.

nms_machineGun 1
nms_shotGun 1
nms_grenadeLauncher 0
nms_plasmaGun 0
nms_rocketLauncher 1
nms_lightningGun 0
nms_railGun 1
nms_bfgGun 1

Start Ammo

nms_bullets, nms_shells, nms_grenades, nms_rockets, nms_bolts, nms_slugs, nms_cells and nms_bfg are used to control the ammo a player starts with.

nms_bullets 100
nms_shells 10
nms_slugs 10
nms_grenades 0
nms_rockets 5
nms_bolts 0
nms_cells 10
nms_bfg 0

Start Health/Armor

nms_startHealth and nms_startArmor control the starting health and armor of players. Health defaults to 125 and armor to 0. Note that like in normal play, any values above 100 will slowly tick down.

nms_startHealth 125
nms_startArmor 30

Disable Weapons

You can disable weapons spawning on a map using the map_weaponDisable command. Just add up the numbers of the weapons you want to disable from the following list;

If you set a weapon so a client starts with it, disabling it with map_weaponDisable only prevents it spawning on the map - the client still has it, so providing they have ammo, they can use it.

map_weaponDisable 128  // no BFG
map_weaponDisable 148  // no BFG, grenade launcher or lighning  gun

Disable Items

You can disable items spawning on a map using the map_itemDisable command. Just add up the numbers of the items you want to disable from the following list;

Alternatively you can disable all items by setting map_noItems to 1.

map_itemDisable 96  // no quad damage or battle suit
map_itemDisable 2047  // no items

Gauntlet Damage

nms_gauntDamage sets the amount of damage the gaunlet does per hit - defaults to 50.

nms_gauntDamage 50

Return the Flag

nms_returnFlag controls whether players have to carry their own flag back to base in CTF games. The default behaviour is that when a player touches the flag it instantly appears back in their base.

nms_returnFlag 1  // players must carry own flag back to base

Weapon Drop

nms_weaponDrop controls whether a player drops their current weapon when they die. 1 to enable weapon dropping, 0 to disable.

nms_weaponDrop 1

Thaw (unfreeze) Time

nms_autoThawTime controls the time (in seconds) before a player automatically thaws in freezetag games.

nms_thawTime controls the time (in seconds) you must stand by a frozen player to thaw them.

nms_worldThawTime controls the time (in seconds) before a player is thawed when they have been killed by the world - lava, slime, falling off.

nms_autoThawTime 0  // no auto thaw
nms_thawTime 3
nms_worldThawTime 5

Self Damage

nms_selfDamage controls how much you damage yourself with projectiles (e.g. rocket splash). Set between 0.0 (no damage to self) to, 1.0 (normal damage to self).

nms_selfDamage 1

Lava Damage

nms_lavaDamage controls whether lava damages players. 1 to enable this damage , 0 to disable

nms_lavaDamage 0

Force Team Only Spectate

Setting nms_forceTeamSpec to 1 means that in team games you can only spectate members of your own team. Defauls to 0

nms_forceTeamSpec 1

Spawn Protection

nms_spawnProtect and nms_protectTime TODO.

Team Knockback

nms_noTeamKnockback TODO.

Team Colored Freeze Skins

nms_teamColorFrzSkins TODO.

Spawn Kill Penalty

nms_spawnKillPenalty TODO.

Suicide Penalty

nms_suicidePenalty TODO.

Map Rotation

Instead of using vstr strings to create a map rotation you can use the map files to create a more flexible rotation scheme. The main advantage of using map files is that an admin can change to a new map using rcon and when it is complete rotation will continue. It also allows clients to see what maps are in rotation and at the end of each map the next map is displayed in the console for all to see.

map_mapRotate should be set to 1 to enable map files. map_mapFile should be set to the name of the map file (located within mapfiles directory). map_startMap should be set to the first map in rotation.

// this goes at the very bottom of your config file
map_mapRotate 1
map_mapFile frz_maps.txt
map_startMap q3dm6
map q3dm6  // used to kick server into first map

Referee

nms_refPass is used to set the referee password on the server.

A player can access referee mode in server by typing /ref PASSWORD, where PASSWORD is the value set for nms_refPass. Once authenticated as a referee you can type /ref to see a list of referee commands.

nms_refPass "refereePassword"

Logging

g_log and other created files TODO.

Fast Rail

nms_fastRail controls the reload speed of the railgun with 2 possible values. 0 is default reload of 1.5s and 1 is fast reload of 1.0s

g_fastRail 0  // 1.5s reload time
g_fastRail 1  // 1.0s reload time

Wonkey Magic

Wonkey Magic is a server guardian giving you the power to control, warn and remove players automatically.

wonkeymagic/bannedIPs.txt is used to control banned IP addresses. Currently a ban is permanent and should be a complete IP address and not a subnet - e.g. 192.168.1.1

wonkeymagic/bannedNames.txt is used to control banned words in player names. Names are checked for each entry (one entry per line) in the file - e.g. an entry of named will match unnamed, unnAmEdplayer, etc. Names are stripped of color flags and converted to lowercase before comparison, so all entries should be lowercase. If a player is trying to connect with a banned name they will be prevented from entering the server. If they change their name ingame they receive a warning and have 30 seconds to change to a valid name or they are kicked.

wonkeymagic/bannedTags.txt is used to control banned clan tags in player names - a banned tag is one you want to protect, like the tag of your own clan. Names are checked for each entry (one entry per line) in the file - e.g. an entry of [*v*] will match [*v*], [*V*]PJ, etc. Names are stripped of color flags and converted to lowercase before comparison, so all entries should be lowercase. If a player is trying to connect with a banned tag they will be prevented from entering the server. If they change their name to one with a banned tag ingame they receive a warning and have 30 seconds to change to a valid name or they are kicked.

wonkeymagic/bannedWords.txt is used to control banned words in chat. Chat messages are checked for each entry (one entry per line) in the file - e.g. an entry of fool will match fool, FOOLISH, etc. Messages are stripped of color flags and converted to lowercase before comparison, so all entries should be lowercase. If a tries to send a message with a banned word in the message will not be sent and they will receive a warning. Subsequent warnings will result in the player being muted for a continually increasing amount of time - maximum of 120 seconds.

nms_monkeymagic is used to enable/disable the features of Monkey Magic (some features are always on). Just add up the numbers of the items you want to enable from the following list;

nms_wonkeymagic 3  // name and chat filtering

Match Settings

match_minPlayers and match_maxBluePlayers and match_maxRedPlayers TODO.

g_doWarmup and g_warmup and g_teamAutoJoin and g_teamForceBalance TODO

Credits

Special thanks to

*V* and ELITE clans for using their server to test early releases. Special mention to PJ and Skyy for continual feedback and testing.

Nel (Haste) Toronto - www.planetquake.com/alternatefire for Unlagged and RTF code

Kevin Rhea - www.orangesmoothie.com (OSP) for various OSP code

arQon - www.promode.org (CPMA) for ProMode physics

Darrell Bircsak - for freeze code

Q3AS - for various code

MatchMod - for various code

IDSoftware - for such an awesome game