This is an old revision of the document!
Nexuiz is a multiplayer shooter in the style of Unreal Tournament, with the difference that it is completely open source and available on different platforms. Up to 32 players can play per map. Unfortunately, switching between modes is not as easy as in UT2004. For this it is always necessary to restart the server. But there are mods to avoid this problem. If you just want to watch the game, you can also find corresponding Videos on the net.
Actually quite simple: Download and unpack. On Linux you can get the whole thing via the package management. The mappack should be unpacked either to
Nexuiz\data (Windows) or to
~/.nexuiz/data (Linux). But there might be a drawback, depending on how up-to-date the installed version is. Especially via the package management it can happen that nothing has been updated anymore concerning the master servers. A server operator can report his server to them. Clients query this server to find Internet servers. Unfortunately, the default address is no longer correct because the server is down. But this can be fixed very easily by adding the following lines to the config of the client and/or server (on the client this is the file
config.cfg, in the same directory where the mappack should end up):
sv_master1 dpmaster.deathmask.net sv_master2 126.96.36.199 sv_master3 dpmaster.vecxis.com sv_master4 ghdigital.com:27950
It offers many game modes:
For all DM modes: Suicide subtracts one point for the maplimit, so you can have more frags than allowed by the maplimit. But then you have additional suicides on the scoreboard as well. Especially with CTF there are several point rules, which can differ from server to server. Here is a list of the points, as they are assigned during CTF as default:
|Stealing enemy flag from its base||-3 (yes, points reduction!)|
|Collecting an early dropped flag||2|
|Collecting a flag dropped late||2|
|Successfully stealing a flag into one's own base||28|
|Fragging the flag carrier||2|
|Droping the flag||-2|
|Flag dropped due to suicide||-2|
|Flag is brought back by opponent||-1|
|Get own flag back||5|
|Flag is retrieved automatically (laying around for too long)||10|
|Flag is retrieved by attacker||6|
The points can be overwritten by corresponding cvars on the server so that other rules can apply. The same points will also be credited to the team score. Depending on the mode, CTF can also be run in such a way that the team with the most points wins instead of the team with the most captures. CTF is therefore actually much more demanding than it is often played. For example, an unsuccessful attempt to steal the flag (pickup (-3) kill (-2) drop (-2) return (-1)) brings -8 points. Successful (pickup (-3) capture (28) gives +25, so the exact procedure makes a big difference. However, the captures tend to weigh a lot in the end. But if a lot of attempts were necessary, the opposing team may still win because it has more points in the end.
The Mobile Infanterie server has two Nexuiz servers running. If you like Capture the Flag more, you should have a look at
www.mobile-infanterie.de:26002. For Deathmatch go here:
www.mobile-infanterie.de:26000. See also the Status page. If a server is running not on the default port and has also not been announced to the master servers, it will not be visible at first. Then you either have to work with HLSW or create the server in your own favorites.
In principle, the port you have configured +1 is sufficient to create the server. The default port is 26000 (UDP), i.e. 26000-26001 UDP. In general, you don't have to do anything to play the game. To set up a server, simply download the Nexuiz archive (Windows) or install it from the package sources (Linux). You should then find the file
server.cfg in the directory
server (in the
*.zip file for Windows). Under Ubuntu it seems that this file has been omitted completely. ( Hints for other distributions are welcome…) If you can't find it on your own disk with the distribution you are using, just take the file from the Windows archive. Works just as well.
That's the sample file! If possible, don't fiddle around with it, but always make a working copy. This should then be placed under
~/.nexuiz/data/ (Linux) or
data\server.cfg in the Nexuiz folder (Windows). It already contains a lot of (commented out) entries, which can be activated by deleting the
//. There are some things you should adjust to personalize the server a bit (see also Important (RCON-)Commands] for details):
sv_public: Should the server be announced to the masterserver?
hostname "Name of the server": This is displayed when you search for the server in server lists and join it
sv_motd "Text1\nNext line": Message of the day: Displayed briefly when joining.
maxplayers: What is the maximum number of players?
sv_eventlog 1: If you want logs of the actual matches. The logs will either end up in
gametype dm: If you want to play DM, otherwise enter other mode
minplayers: If you want to have at least x players filled up by bots, you might want to enter at least 2, otherwise it will be a boring game for one player alone.
g_maplist_check_waypoints 1: Ensures that only maps on which the bots also have waypoints are available for selection. Not necessary for the maps supplied with the game, but may be necessary for third-party maps. Without this it can happen that the bots don't run much on the map, so it gets quite boring.
sv_autoscreenshot 1: If you want a screenshot to be taken at the end of a map (with the results), just like CS.
g_balance_teams 1: If you want the server to automatically balance teams when you join
g_balance_teams_force 1: The same, only also during the map
If necessary, also read the section Map Downloads!
After that, start the server:
./nexuiz -dedicated +serverconfig server.cfg (Linux) bzw.
nexuiz -dedicated +serverconfig server.cfg (Windows).
This starts a dedicated server, that can be terminated at any time with
C. It automatically loads the newly created configuration file. You can theoretically also pass server settings in this console line, with a
+ in front of it. However, specifications in the config take precedence. Of course you can start several servers in this way, but they have to run on different ports. Under Windows you can create this as a service, or under Linux you can run it as a service via init script (in the V-Init system) or a system unit (Systemd). The V-Init is a bit more complicated, because you should have to distinguish between start, stop, restart and if necessary the status display. It also makes sense (under Windows as well as Linux) to run the service under a separate (restricted) user. This user does not have to be able to log on. It is sufficient if it can run services. In the worst case, it makes it harder for an attacker to penetrate the system via the Nexuiz server, as he would then have very few rights, even if he manages to compromise Nexuiz.
Maps are a kind of trouble kid. There are certain compatibilities to Quake 3, which have the catch, however, that corresponding maps do not necessarily have to be bug-free for Nexuiz, just because they were for Quake 3. This leads to all sorts of strange behavior, from strange spawn points to places on the map where you get stuck without a barrier and can't move away. Therefore you should test maps extensively before using them on a server.
Not all maps are suitable for all game modes. For example, it is not possible to use a map for CTF if CTF mode is not being supported by it. Nexuiz automatically analyzes new maps on the first startup and stores the results in
~/.nexuiz/data/data/maps/, or under Windows in the folder
nexuiz\data\data\datamaps. These are pure text files, in which you can also see for which modes they are suitable.
The storage location for maps is in the directory
data of the Nexuiz installation, if you want to store the map playable for all users of the PC. This also applies to servers. The server searches this folder for
*.pk3 files. On the client, if downloaded automatically, they are also located in the folder
~/.nexuiz/data/dlcache (Linux), or the pedant under Windows.
You can tell that a map is missing by the fact that it complains that the game lacks a
*.bsp file and all map textures remain black. In this case the automatic download obviously didn't work or is deactivated. Then you have to get the missing file elsewhere.
Should messages be displayed when joining a server that a
*.bsp file could not be loaded because it did not exist, it was not downloaded to the client. In this case you have to configure the map download on the server side. Unfortunately, this requires an FTP or web server on which the corresponding files are stored. To do this, there must be a section in the config of the server that defines exactly where the maps can be found:
sv_allowdownloads 1 //Are map downloads possible in principle? sv_allowdownloads_archive 1 //Are pk3 downloads possible? sv_allowdownloads_inarchive 1 //Are downloads possible from within PK3s? sv_curl_defaulturl <url> //fallback download URL
This has the disadvantage that you have to rely on an external data source, but the advantage that map downloads are fast or even at all possible. Mappacks are therefore not absolutely necessary, unless we are talking about very low upload bandwidths below 100 kB/s… The maps can also simply be located on a webspace, this does not have to be on the same computer on which the Nexuiz server is running. Only SSL/HTTPS should not be used. Similar to Eliteforce 1 the game has problems with map downloads, if the map depot should be accessed via HTTPS. For some players it is simply not possible to download the maps.
As you can get desperate if you don't know exactly what you are doing, here's a short description of what you need to do on the server and client side to be able to send commands to the server via RCON. First you have to set both sides to
rcon_secure 0 in the config. Other modes would be possible in principle, but require completely synchronous clocks. Since this is anything but guaranteed, better don't set it to anything else. If you set this to another value, the server won't throw out any error messages when you try to authenticate. But it won't react to commands, either, because they don't reach it at all. The command must precede the password because it will set the password to the value to the right, when it is executed. If there isn't any thing, the password will be reset.
On both sides the same password must be set:
rcon Password is the simple variant and should always work. With spaces in between it is necessary to set the password in "", for example:
rcon_password "Password with spaces".
The client-side commands can also be entered manually if they are not in the config. So if you want to be on the safe side, leave that out. You can also do this at the touch of a button by 'BIND'ing it on a key:
alias getmein "rcon_secure 0; rcon_password Blah" bind HOME getmein
With these two parts, the command sequence
rcon_password Blah is placed on the
HOME key. Then, after pressing the
POS1 key, you can happily control the server with
rcon <Command>. These are the most important commands for the beginning:
status 3: Shows who is currently on the server as well as various other information. They all give you the player number.
maps: Lists all maps
kick # <nummer>: Kicks the player with the number
<number>from the server.
restart: Restarts the map
changelevel <mapname>: Map change without client drops
loadconfig: Reload and restart config
map <mapname>: Like
changelevel, but with kicking clients
endmatch: Terminates the currently running map prematurely.
net_stats: Network statistics
lsmaps: Rereads the list of maps. Good if you want to add new maps while the system is running. On the client, without
rcon, it displays the list of maps available on the server for the current game type. For example, with CTF only the CTF-able maps are displayed.
set …: To change a server variable, for example
maxplayers: Maximum number of players, 0 means unlimited
timelimit <duration>: Maps end after
<duration>minutes at the latest.
minplayers: Minimum number of players to be replenished by bots
bot_join_empty: Do bots also play on empty servers?
fraglimit: Does what it sounds like.
fraglimit_override: Frag limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)
g_ctf_capture_limit: CTF capture limit, overwrites the value of the map (0=no limit, -1 for limit from mapinfo)
fly <1/0>: Is there a flight mode?
g_footsteps <1/0>: With or without step noises?
g_grappling_hook <1/0>: With or without grappler?
g_jetpack <1/0>: With jetpack?
g_laserguided_missile <1/0>: With target lasers for rocket launchers?
g_maplist "<map names separated by spaces>": List of allowed maps, if not specified, all available maps are allowed.
g_maplist_shuffle <1/0>: Random order of maps?
g_maplist_votable <anzahl>: How many maps are available for selection at the end of a round?
g_maxplayers <anzahl>: Maximum number of players on the server, 0 means unlimited
g_minstagib <1/0>: Is Instagib (one-hit-kills only) enabled?
g_use_ammunition <1/0>: Do weapons require ammunition?
g_weapon_stay <0-2>: Do weapons persist after collection? 0=no, 1=at least ammunition for it, 2=if already available, nothing is collected
pausable <1/0>: Server pausable?
sv_public ←2 - 1>: How is the server listed? -2: No connection possible, -1: No queries possible, 0: Queries possible, 1: Announced
g_ctf <1/0>: Is it a CTF server?
g_dm <1/0>: Is it a DM server?
g_domination <1/0>: Is it a domination server?
g_lms <1/0>: Last man standing: Everyone has a number of lives. Once they're gone, you're out until the last one's left.
g_nexball <1/0>: Is it a Nexball server?
g_onslaught <1/0>: Is it an onslaught server?
g_runematch <1/0>: Is it a runematch server?
g_tdm <1/0>: Is it a team DM server?
g_tdm_teams <2-4>: How many teams are there?
pause: Pause server
condump <filename>: Saves all previous console output in the specified file in the Nexuiz user directory (
nexuiz\data\in the My Documents folder).
The Nexuiz system does not provide tools for statistical analysis. However, with the appropriate server settings you can create so-called event logs, which record every frag, accident, suicide, flag theft, etc…. Of course you can also summarize this and create a ranking out of it. Nexuizsstats is a program by Martin Wohlauer that is written in Freebasic and can therefore be compiled on Windows and Linux systems. Various command line parameters can be used to influence the output format and other behaviour. Detailed documentation is included with the program, as well as the source code, since the program is available under GPLv3.
Especially for CTF you get points for various actions. The archive
data20091001.pk3 in the server directory
data also contains the file
ctfscoring-div0.cfg, which controls how the default values look like. By default it looks like this:
// Scoring from the democratic poll at http://www.alientrap.org/forum/viewtopic.php?p=49529#49529 // based on ctfscoring-z, but adjusted to be less harsh set g_ctf_flagscore_pickup_base -3 set g_ctf_flagscore_pickup_dropped_early 2 set g_ctf_flagscore_pickup_dropped_late 2 set g_ctf_flagscore_capture 28 set g_ctf_flagscore_kill 2 set g_ctf_flagpenalty_drop 2 set g_ctf_flagpenalty_suicidedrop 2 set g_ctf_flagpenalty_returned 1 set g_ctf_flagscore_return 5 set g_ctf_flagscore_return_rogue 10 set g_ctf_flagscore_return_by_killer 6 set g_ctf_flagscore_return_rogue_by_killer 10 // succeeded capture (pickup capture) 25 (0 for enemy) // failed capture (pickup kill drop return) -6 (8 for enemy) // failed (shot into void) (pickup kill drop) -5 (3 for enemy) // capture retry (kill drop pickup) 0 (3 for enemy) // suicide, then retake (suicidedrop pickup) 0 (0 for enemy) set g_ctf_personalscore_pickup_base -3 set g_ctf_personalscore_pickup_dropped_early 2 set g_ctf_personalscore_pickup_dropped_late 2 set g_ctf_personalscore_capture 28 set g_ctf_personalscore_kill 2 set g_ctf_personalpenalty_drop 2 set g_ctf_personalpenalty_suicidedrop 2 set g_ctf_personalpenalty_returned 1 set g_ctf_personalscore_return 5 set g_ctf_personalscore_return_rogue 10 set g_ctf_personalscore_return_by_killer 6 set g_ctf_personalscore_return_rogue_by_killer 10
</spoiler> The corresponding variables can be found in the Nexuiz cvars and can be overwritten with their own values in a corresponding server configuration.