lmserver(6)

NAME

lmserver - The server for Leges Motus, a team-based, networked, 2D shooter set in zero-gravity

SYNTAX

lmserver [-c conffile] [-d] [-l] [-m mapname] [-P password] [-p portno]
Only the most useful options are listed here; see below for the remainder.

DESCRIPTION

Leges Motus is a networked, team-based, 2D shooter set in zero-gravity. Using only the force from jumping off of walls and the recoil from their guns, players must travel across the arena to lower their opponent's gate.

This is the server program for Leges Motus. It listens on a UDP port for packets from clients, and relays them to other connected clients. In addition, the server is responsible for scorekeeping, team assignment, timing the gates, and notifying the clients of the map and rules in play.

OPTIONS

The following command line options are supported. Note that some options can also be specified in the server configuration file (see CONFIGURATION below). Option values specified on the command line always override option values specified in the configuration file.

-c <conffile>
    Load server configuration options (see CONFIGURATION below) from <conffile>.

-d  Daemonize (i.e. run in background) the server program (does not work on Windows).

-l  (Local server) Do not register the server with the meta server.

-m <mapname>
    Sets the server map to <mapname>. (config option: map) (default: alpha1)

-P <password>
    Enables operator mode and sets the operator password to <password>. Warning: using this option will expose the operator password to other users of the system through commands like ps(1). You should use the password configuration option instead.

-u <user>
    Drop privileges to <user> (e.g. nobody). By default, privileges are not dropped. Only the super user may use this option. Not supported on Windows.

-g <group>
    Drop group privileges to <group> (e.g. nogroup). By default, if no -u or -g options are specified, privileges are not dropped. If only -u is specified, then group privileges are dropped to the user's primary group. Only the super user may use this option. Not supported on Windows.

-i <interface>
    Listen only on the interface with address <interface>. (config option: interface) (by default, listen on all interfaces)

-p <portno>
    Listen on port <portno>. (config option: portno) (default: 16877)

-?, --help
    Output help information and exit.

--version
    Output version information and exit.

COMMANDS

These commands are entered in the client's chat bar (see legesmotus(6)). Some commands (marked as [op]) require operator status.

/server auth <password>
    Become operator, if <password> matches the server operator password.

/server teamscore
    Display the score of each team.

/server teamcount
    Display the number of players on each team.

/server maps
    Display a list of maps available on the server.

/server balance
    Balance the teams by reassigning players as necessary. (See also the autobalance configuration option below.) [op]

/server shakeup
    Randomly reform the teams. [op]

/server reset
    Reset the scores. [op]

/server map <mapname>
    Load the map named <mapname> and immediately start a new game. [op]

/server newgame
    Declare a draw and start a new game, with the same map. [op]

/server kick <player>
    Kick the player named <player> from the game. [op]

/server shutdown
    Immediately shutdown the server. [op]

/server help
    Display a summary of commands supported by the server.

CONFIGURATION

Various aspects of the server can be configured by a standard text file which has one configuration directive per line. Blank lines and lines starting with a # or ; are ignored. Each configuration directive has the following syntax:

option_name option_value

At least one space or tab character must separate the option_name from the option_value.

The path to the server configuration file is specified by passing the -c command line option. If no -c option is passed, then no configuration file is loaded, and the defaults are used. Note that some configuration options can also be specified using command line options. Values specified on the command line always override values specified in the configuration file.

The following options are supported. Configuration directives containing an unrecognized option name are ignored. Unless otherwise specified, all option values that specify times are in milliseconds.

password <password>
    Enable operator mode and set the operator password to <password>. (command line option: -P)

map <mapname>
    Set the server map to <mapname>. (command line option: -m) (default: alpha1)

interface <interface>
    Listen only on the interface with address <interface>. (command line option: -i) (by default, listen on all interfaces)

portno <portno>
    Listen on port <portno>. (command line option: -p) (default: 16877)

server_name <name>
    Set the human-readable server name to <name>. If set, appears in the server browser in lieu of the hostname.

server_location <location>
    Set the human-readable geographic location of the server to <location>. Not presently used, but in the future will appear in the server browser.

autobalance [ yes | no ]
    Specifies whether to enforce balanced teams. When enabled, players are not permitted to switch teams if it would cause an imbalance, and when imbalances are caused by player departures, random players are switched until the teams are balanced. (default: disabled)

register_server [ yes | no ]
    Specifies whether to register the server with the global meta server. When enabled, the server will appear in the server browsers of Internet players. When disabled, the server will only appear in the server browsers of LAN users. (default: enabled)

GAME PARAMETERS

Various aspects of gameplay can be adjusted by setting game parameters. Game parameters can be set either as server configuration options (see above), or in the header of map files. When specified in map files, the values act as defaults for that map, and game parameters in the server configuration take precedence.

The following game parameters are supported. Unless otherwise specified, all values that specify times are in milliseconds.

max_players <number>
    The maximum number of players allowed at any given time. After this number is reached, players will not be allowed to join. (default: 32)

gate_open_time <time>
    The time required to open the gate when one player is engaging it. (default: 15000 ms)

gate_close_time <time>
    The time that the gate takes to fully close from being fully open when no players are engaging it. (default: 5000 ms)

freeze_time <time>
    The time for which players are frozen after being shot. (default: 10000 ms)

friendly_fire [ on | off ]
    When off, players are immune to shots from their teammates. (default: on)

radar_mode [ on | off | aural ]
    Determines how the radar (minimap) operates. When on, all players within range (see radar_scale below) are visible on radar. When off, no other players are visible on radar. When set to aural, only players who are in range and have fired recently (see radar_blip_duration below) are visible. (default: on)

radar_scale <decimal>
    Distances on the radar are displayed at <decimal> times the size of their actual distances. (For example, a value of 0.1 means that distances on the radar are one-tenth of their actual distances.) (default: 0.1)

radar_blip_duration <time>
    The time for which players are visible on an aural radar after firing. (default: 1000 ms)

game_start_delay <time>
    The time before a new game starts. The countdown starts either after the previous game ends or after the first player joins. (default: 5000 ms)

late_join_delay <time>
    The time which a player who joins mid-game must wait before spawning. (default: 5000 ms)

team_change_period <time>
    The minimum time that a player must wait after switching teams before being allowed to switch again. (default: 30000 ms)

firing_recoil <decimal>
    The affect on a player's velocity when firing his gun. (default: 1.5)

firing_delay <time>
    The minimum time permitted between gunfire. (default: 700 ms)

NOTES

If no operator password is set, then any player connecting from the localhost (127.0.0.1) will be given operator status. If this is undesirable behavior, then be sure to set an operator password.

By default, the Leges Motus server will contact the meta server so other players on the Internet can connect to and play on the server. If you would NOT like your server to appear in server browsers of other Internet users, pass the -l ("local") option to lmserver, or set the server configuration option "register_server" to "no" (See CONFIGURATION above).

If a server is run behind a firewall, and it is registered with the meta server, the meta server will attempt to traverse the firewall so that clients outside the firewall are able to connect to the server. However, this technique does not work with all firewalls, and is not 100% reliable. If you intend to host a long-running server behind a firewall, you are strongly recommended to modify your firewall settings to allow/forward UDP port 16877.

FILES

$LM_DATA_DIR/maps

ENVIRONMENT VARIABLES

LM_DATA_DIR
    Specifies the location of the directory containing Leges Motus data files.

LM_METASERVER
    Specifies the address to use for registering with the meta server. This is useful only for testing alternative meta servers, and should not be used generally.

EXAMPLES

To run the server in the background:

lmserver -d

To run Leges Motus every time you start your computer, you could put this in a system startup script (e.g. /etc/rc.local):

lmserver -d -u nobody

If you don't want to register your server with the meta server:

legesmotus -l

Run the server with the gamma3 map:

legesmotus -m gamma3

To set an operator password:

legesmotus -P foobar

To authenticate with your operator password:

/server auth foobar

To kick an unruly player:

/server kick Steve

AUTHORS

Andrew Ayer <agwadude@users.sourceforge.net>
Nathan Partlan <greywhind@users.sourceforge.net>
Jeffrey Pfau <archaemic@users.sourceforge.net>

COPYRIGHT

Copyright 2009 Andrew Ayer, Nathan Partlan, Jeffrey Pfau

Leges Motus is free and open source software. You may redistribute it and/or modify it under the terms of version 2, or (at your option) version 3, of the GNU General Public License (GPL), as published by the Free Software Foundation.

Leges Motus is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the full text of the GNU General Public License for further detail.

For a full copy of the GNU General Public License, please see the COPYING file in the root of the source code tree. You may also retrieve a copy from <http://www.gnu.org/licenses/gpl-2.0.txt>, or request a copy by writing to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

BUGS

The map format and protocol are still completely undocumented.

SEE ALSO

legesmotus(6)