Altitude game server wrapper
Perl
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
example_scripts
FAQ.md
INSTALL.txt
README.md
UNLICENSE.txt
altalyzer
alti+server
altx-tool
game.jar

README.md

alti+server

Altitude game server wrapper to enable enhanced modes of game play.

Files

  • README.md The file you are reading.

  • FAQ.md Frequently Asked Questions, and helpful tips for server administrators and map makers.

  • INSTALL.txt A list of the quick steps to install this software.

  • UNLICENSE.txt This software is in the Public Domain, this file states so.

  • alti+server The perl code which starts the altitude game engine and monitors it for events.

  • altx-tool Manipulate Altitude map archive files.

  • altalyzer A tool to convert log files to CSV for better analysis

Alti+ game types

Normal Games

All normal game types will run just as normal on alti+server systems. They can be run with all default values, or spiced up by changing camera or plane scale, gravity, etc. It is up to the server admins.

Capture the Flag

There are number of options for game types which are different from what you would normally see. Capture the flag games have a powerup which is located in an area heavlily protected by one team. The power should only be accessible to the other team. The server game mode must be "Ball", as each capture increases the goal count. One variety of Flag capture is a 1-life version, where teams go head-to-head and is very similar to 1dm. Another allows re-spawns and is timed. This mode type should favor the defensive team, and a single capture (goal) should be sufficient for winning. Capture the flag games can also be configured to allow both teams to score. Hear, the game would be similar to tbd, but withou a bomb to pickup. This would hopefully get teams to work together better, instead of people grabbing the bomb and flying off by themselves without support.

Races

Races use specially assigned powerups to act as checkpoints. Each time the first player on a team crosses a checkpoint, a goal is scored. For this reason, the map must be configured for game type ball. Most servers are setup to have 6 goal win. Races are best accomplished with 2 laps and 3 checkpoints, with players starting so that they cannot easilly access the winning (6th) checkpoint until the end of their first lap (starting in a pit row might work). Checkpoints must be crossed in alphabetical order, all powerups are sorted, and the sort order is used to ensure players cross checkpoints in the correct order. Keep this in mind when creating checkpoint names.

A to B races would also be easy, with checkpoints along the way, and the 6th checkpoint at the end. If a final (winning) checkpoint is all that is desired in an A to B, then setting /set score -1 -1 would also help accomplish this game type.

Records will be kept for races. For races where each team has a single spawn point, the nickname of the player who crosses the finish line first will be stored with the record. If teams have multiple spawn points, then a record will only be saved if the number of players is at least equal to the number of spawn points, and then the name of the team will be stored with the record.

Ruin maps

If TBD is good, then total annihilation is even better. Ruin game types require the player to destroy every structure not owned by them. There are two types of Ruin maps, team-style and coop-style. alti+server tells the difference based on if the assignTeam value is set. Set it for coop style, and don't for team style.

Ruin maps which are team-style will only count structures which are of a team color. Neutral turrets and bases will not count towards the final score.

Large Map Coops

Many new spawn options are available with the alti+server. Players can be configured to spawn where they last died, to make continuation easier. If that is too immidiate, players can spawn at the place of their last pickup, or health. Coops can also be made more exciting by the use of devices like portals, to teleport players from one area to another.

Most Dangerous Game

Asymmetrical game mode mdg plays like Counter Strike. The map is configured to assign players to either the left or right team, just like in coop. However, one player (the first one to join a team) is placed by themself to fight an entire team of enemy planes. In this mode, you can specify alternate zones to spawn into. The server will randomly spawn the single player in one of these. This allows the standard spawn zone for that team to be boxed up like a coop game. Here, any Bots can be seperated from the rest of the game. In 1-life games, this box should have a turret to clean up the Bots, or ensure they quickly run into an instant-kill wall.

If everyone agrees that a specific player should be the prey, a vote can be called against the /prey command. This can be used to override the default behavior of first to join a team is the prey.

Tag

This game type only really works well on ffa maps. In this type, it is the expectation of the Alti+ server that, similar to MDG, it is everyone against one player. That player is "it". The difference is that the one player who is it changes each time they are killed. By killing the player who is it, you become it. The game continues this way until the timer runs out. At the end of the round, players are ranked by how long they were it. When a player is it, a counter is running until they die, this counter continues to accumulate throughout the game, with 1st place going to the most elusive (longest running as "it") player.

The server will periodically (~10 seconds) remind the players who is it. If a player has been it for more than 60 seconds, the server will give hints to that player's location on the map.

1-Life Hit

This game type, created by Stam, forces players into the same plane (by default Biplane with Heavy Cannon) with only a primary weapon, and in a configuration where 1 shot kills. This game type works for TDM, 1DM, and FFA game modes. Maps which start with either tdm_1lf_, 1dm_1lf_, ffa_1lf_, or simply 1lf_ will be automatically configured for this type.

Making Alti+ Maps

Alti+ maps are basically the same as any other map. The important part is placing things like powerup in the correct location, so you can attach Alti+ functionality to them later, in your plus.txt file.

When creating maps with paralax views and setting the cameraScale parameter, remember that you need to recalculate your geometry based on a screen size different from 1280x720.

If you are planning on using spawnMode map, you will need to create a view in your map named exactly Spawn. This name, including the capitalization must be kept exactly, as this the only view name that the alti+server looks at for spawn placements. You can use any layer inside that view to place your spawn lines. This is done by creating a new hull. Each data point of the hull will be a spawn point, and the spawn angle will be directly pointed at the next data point. If a player dies, the server will find the closest data point and spawn the player there. Any data points off the visible map boundary will not count, and will be automatically removed for you as possible spawn points. You can add weight to a spawn point by changing the alpha portion of its color specification. It doesn't matter what color a point is, but the alpha can be used to de-prioritize spawn points around curves, or for a variety of reasons. If the alpha specification for a point is 0, then this point is not a valid spawn point, and will not be used. Using this method, or moving location points off of the viewable map are the two methods you can easilly use to complete a hull on a course which is not a circuit. Under most circumstances it is best to set these hulls to be not-visible.

Map Integration

Altitude maps end with a .altx extension. These are simple archive files which contain all the necessary information for game play. A tool is included with alti+server called altx-tool. This tool allows you to list, extract, update, and create .altx archive files (i.e. map files). It has a special -p option which allows users to edit a special file in the root of the archive called plus.txt. This file may contain directives to any alti+server to configure the map per the authors defaults.

This tool is increadibly useful. If the author designs a coop map where users should be defaulted to a specific side, gravity should be disabled, initial goal scores should be set, map introductions are necessary, or any other settable Alti+ attribute; those can be put here. Only the commands set, unset, add, and del are allowed in this file. Any line containing anything else will be ignored. Use this file to set new attributes, or unset old ones which are no longer valid.

See Extended Commands for Admins and Map Makers for more information.

Additional Commands

The below list of commands are available to players to interface with and manage Alti+ game maps.

Extended Commands for Players

  • /switch
    This command is useful for Coop maps, it allows users who are assigned to the wrong team to spectate and choose the other side. This command should usually not be needed, as the correct side should be set by the server or map maker with the /set assignTeam [left|right] command.

  • /rank [player] [type]
    Display the rating for player on games of type. If type is not specfied, it defaults to the current map type. If player is the keyword me, then the requestors rating is displayed. So, to list your own rank, the fastest way is to run /rank me unless your nickname is actually shorter than that.

    If player is a queston mark ? or the word help, a brief help message is displayed. Otherwise, it must be one of the following:

    • initial name - This name is mapped to ladder AKA names (for those who have them.
    • partial nickname - A piece of the current nickname (or last nickname used when logging into the server) of a player.
    • server id - Each player has a unique ID the server uses to track their multiple accounts, this ID is a simple integer and can be used to lookup a player if you know it.
    • vaporID - Either the entire, or the ending part of a vaporID can be used to query a player.
    • place - This method is used to lookup who occupies a particular place in the rankings. place must be a number followed without spaces by either st, nd, rd, or th. You don't actually have to use the correct suffix for the server to lookup the holder of that place.
  • /vote prey [player]
    If there is an mdg (Most Dangerous Game assymetric game play) map in the rotation, this command will be present. Normally, the single player is choosen as the first to join the game (first to press f). If greater than 60% of people believe another person should be the prey, then this command can be used to change the player listed as the prey.

    It is proper ettiquite for a person to nominate themselves, and not to for players to be chosen against their will.

  • /spawnZone [zone]
    When a player has a non-standard spawn zone, they can reset their spawn zone to the original map default by running /spawnZone start. Otherwise, this command works only if the server is in zone spawning mode. It allows players to choose which zone they will respawn into when they die. Also, when players execute this command, they will automatically be removed from the map and a new spawn will be initiated in zone. All bars and powerups will be lost.

  • /sz [zone]
    This is an alias for /spawnZone

  • /start
    This is an aliwas for /spawnZone start

  • /changePlane
    Change plane without having to die. If you run /changePlane, then your plane will be removed from the map and you will have the opportunity to choose a different plane and respawn when you left off. This feature can be turned off on a map-by-map basis, so it may not always be enabled. The purpose of this map is mainly for coop maps which require multiple planes for specific parts, but where there are not enough players to fill each part.

  • /cp
    This is an alias for /changePlane

  • /restartMap
    This command is a front-end to /balanceTeams on coop maps. If you are a server admin or one of the two remaining alive players on the map, the server will immediately execute /balanceTeams. If you are a server moderator, you may also run /restartMap at any time.

    Otherwise, your request will be stored and the other players will be notified. After more than half the active players run /restartMap, the server will initiate a /balanceTeams.

  • /vote randomMap
    Change to a random map from the mapRotation. This command requires a vote threshold of 66% or greater.

  • /timer [time]
    Use the xx extention setTime to set the timer. This function is mostly a debugging interface, but it is nicer than using setTime directly. You specify the time you want the timer to say, and this function sets it for you. You can specify 2 minutes and 30 seconds as either 2:30 or 150. If you place a + sign in front of the time, it sets the time to that much from the start. So, a time of +30 would set the timer not to 30 seconds left, but instead 30 seconds into the timer.

  • /who [player]
    Print information about player including their permanent name (if they have one), their IP address, and other nicknames they have used in the past.

  • /mesg [status]
    The server has a private messaging feature designed to aid players in meeting goals or to talk privately with the map designer. Howerver, to ensure this feature is not abused, this feature can be disabled via this command and it's argument. status can be one of Yes, No, or ? to turn messaging on, off, or query your message setting respectively. This setting is persistent.

  • /talk [player] [text ...]
    Send a private message to player. You do not have to be friends with player to do so, but they can disable messaging with the /mesg No command. Abusers will be banned.

  • /vote game ?? ??
    This command is used to modify add-on scripts. Any add-on script may watch for this command and do whatever it needs to with the arguments. Run /help game for help on available settings.

Extended Commands for Admins and Map makers

  • /sum [crc32|md5|sha1|sha256]
    Generate a checksum (message digest) of the .altx map file for the current map. The purpose of this command is to help map makers verify the current map is the right version.

  • /logPickups
    Display the X and Y coordinates to the screen for each powerupPickup or powerupAutoUse for your plane. The purpose of this command is to help identify powerups for use with portals, doors, and different spawn types. These are defined more below.

  • /help [setting]
    Display a help message for setting. If a setting has a /list, /set, /unset, /add, /del, or /upload command associated with it, then it will also have a /help command to provide more detail on what is required.

  • /list [setting]
    Display the current value or values for setting. For a list of settings, see the /set and /add commands below. You should specify setting exactly as named for /set commands. For /add commands you should pluralize the the setting name.

  • /unset [setting]
    Remove current value or values for setting and restore them to the default behaviour. For a list of settings, see the /set commands below.

  • /set score [left] [right]
    Set the initial score for ball mode games to left and right. These values must be integers. If they are negative, then that value will be subtracted from the winning score value.

    Set the winning score for tdm and 1dm game modes to left and right. These values must be integers, they should always be positive for games of this mode. This is necessary in game race types to set the winning score, which should be a count of checkpoints, not laps. This is also helpful for regular tdm matches where you wish to either set a mercy rule or just end after a certain number of kills.

  • /set assignTeam [left|right|none]
    Specify that players must join either the left or right team, depending on this setting. You can also use < and > as shorthand for left and right respectively. This feature is most useful in Coop game types, where every player should be on one team. Setting this value to none is equivalent to /unset assignTeam, the setting will be removed and the server returned to its default behaviour.

  • /set nextMap [map]
    This command is usefull for map makers. When you want the next map to be a specific map, regardless of what players vote; then use this command. It ensures that the next map loaded is [map]. It even works across server restarts. So, if you upload a new map and need to /restartServer, use this command first to ensure the server comes up on the new map. Before the map is loaded it can be undone with the /unset command. Once the map is loaded, the value of nextMap is erased automatically.

  • /set gravity [0|1|2|3]
    Set the default gravity configuration for this map. This setting will be kept between server restarts for this map. If this map is removed from the server, the setting will be lost. This command can only be used to update the current map in-use. The numeric arguments correspond to the argument for the /testGravityMode. Values are: 0 - default gravity, 1 - disable gravity for planes/weapons/powerups, 2 - disable ball gravity only, or 3 - disable all gravity.

  • /set weapons [0|1|2|3]
    Set the weapons mode for this map. This will ensure each time this map is loaded that the /testDisableWeaponMode command is run. Values are: 0 - default weapons mode, 1 - disable primary weapons only, 2 - disable secondary weapons only, or 3 - disable all weapons.

  • /set spawnHealth [1-999]
    Set the full health for a plane to be a percentage of the default. 100 is the default, lower is less than default. And the maximum value allowed is 999% of normal.

  • /set cameraScale [40-300]
    Set the camera scale (zoom) level from anywhere between 40 and 300. The default is 100%, scale up or down from there. This setting will automatically call /testCameraViewScale to set the current scale, and it will update the server to make this setting each time the current map is loaded in the future. This setting will persist across server restarts. To set it back to the default of 100, you can /unset cameraScale or /set cameraScale 100.

  • /set planeScale [40-300]
    Set the plane scale level from anywhere between 40 and 300. The default is 100%, scale up or down from there. This setting will automatically call /testPlaneScale to set the current scale, and it will update the server to make this setting each time the current map is loaded in the future. This setting will persist across server restarts. To set it back, you can /unset planeScale or /set planeScale 100.

  • /set spawnMode [map|died|crash|powerup|health|zone|near|after|portal|normal][,center|hmirror|vmirror]
    This specifies the type of respawning when a user dies, or requests to spawn. The type can be any of the following: map (Use the hulls defined on a layer named Spawn), died (the location of last death), crash (same as death, but don't turn players around after crashing), powerup (the location of their last powerup of any kind -see zones), health (the location of their last health powerup), zone (zone based spawning where uses can cange their spawn zone on demand), near (nearest zone to a player when they die), after (past a zone when they die), portal (players continue to spawn at the end of a portal after a death --implied with died, crash, powerup, and health), or normal (at the normal, map defined start). If users get into a bind, they can use /sz start to spawn in the normal location.

    Optionally, you can also override the spawn angle. This only really makes sense for died, powerup, and health. But, it technically works in all situations to override spawn angle. The types are as follows: center (always spawn facing the center of the map), hmirror (always spawn facing the map axis), vmirror (always spawn facing the middle bisect).

  • /set changePlane [0|1]
    Enable (1, the default) or disable (0) the ability for players to use the /changePlane and /cp commands to respawn in their current location with a different plane. This feature is mainly for coop maps, but can be used (and abused) on all game types. Players will not record a death for their action, and they will be able to respawn at the same place they were when they ran the /changePlane command.

  • /set maxPlayers [#]
    Set the maximum number of players who can spawn simultaneously on the map. This allows a game to have a lower number of maximum players than the server does. This setting is not intelligent like a ladder server. It is a first come, first serve setting. If overused, it is likely to cause players to leave the game. However, it is useful for MDG games, where 13 against 1 seems a little too asymmetric.

  • /set gameType [coop|flag|race|ruin|zone|mdg|1lh|std|normal]
    Normally the type of a game is ascertained by te file name. If that cannot be done properly, the game type can be set via this mechanism.

  • /set roundTime [#]
    Set the round time for this map in seconds. This value must be less than an hour, and only works if the server is configured to time maps of this mode.

  • /set botCount [#]
    Set the number of bots which should be available on this map.

  • /set intro [text ...]
    Store text to be displayed at the loading of a map, and to new players when they join. This is intended to help players figure out what to do on the map, and what it is all about.

  • /add plane [+|-] [Loopy|Bomber|Explodet|Biplane|Miranda] [perks] ..
    Specify that only the list of planes provided here are allowed on this map. A + is used to add an allowed configuration, and - is used to forbid a configuration. If neither are present, + is assumed. When players attempt to spawn with the wrong plane, they will be benched and the server will display a message explaining the valid plane list. Nicknames whale and randa are also allowed. You can specify planes and perks, but be careful with perks, because players may not have a pre-defined setup for your list. This is most useful when disallowing a specific perk/plane combination (like randa/rubber on coop).

  • /add portal [name] [px],[py] [sx],[sy],[sa]
    When a player auto-uses the health powerup located at px,py, then they are automatically transported to sx,sy and spawn at the angle sa. See Angles for more information.

  • /del portal [name]
    Delete the portal named name for this map.

  • /add door [name] [x],[y]
    Create a door named name at coordinates x,y. Any number of keys can be created with the same name, and all of these must be found before unlocking the door. When a key is found, the finder will receive a message from the server. When all the keys for a door are found, all users on the team which has unlocked the door will receive a message from the server.

  • /del door [name]
    Delete the door named name.

  • /set keys [team|personal]
    Set if keys apply to an entire team, or to just one player.

  • /unset keys
    Unset all keys flags and return to default behavior.

  • /add key [name] [door|zone] [team] [x],[y]
    Create a key named name which opens the door door or zone zone, for team. The powerup which serves as this key will be located at coordinates x,y.

  • /add key [name] [door] [team] [powerup]
    Create a key named name which can be used to enter the door door for players on team. This is a different kind of key. A player must posses powerup to pass through door. In this method, you specify the powerup by type (e.g. 'Homing Missle'), and you must not have used it, it must be in your posession. You cannot carry a Health powerup, therefore it cannot be used as a key, it simply doesn't make sense. Any other powerup type is fine. If a door has both types of keys, either one (not both) may open the door.

  • /del key [name|zone|door]
    Delete all keys named name, or for the door or zone listed.

  • /add diverter [name] [x1],[y1] [x2],[y2]
    Create a diverter pair called name with one powerup diverter at coordinates x1,y1 and the other at coordinates x2,y2. A diverter alternates access between it's two powerups. The purpose is to forcably break up a team and ensure a fairly even split between two sections.

  • /del diverter [name]
    Remove the divirter pair named name.

  • /add oneway [x],[y] [direction]
    Specify that a powerup can only be used in one direction. It isn't exactly one direction, it is actually 180 degrees of a circle with the middle being the specified direction. So, players do not have to perfectly pass through a oneway. This device isn't perfect. The server periodically stores plane positions, and this is the data used to attain direction. To ensure that the logPlanePositions command is issuing data from before the pickup, a delay is introduced. It is not recommended to use a oneway in an area where the map would cause a player to cross back across the 180 degree plane of the oneway within 2 seconds.

  • /del oneway [x],[y]
    Delete the oneway powerup located at coordinates x,y.

  • /add zone [name] [team] [sx],[sy],[sa]
    Create (or overwrite) a spawn zone named name. When invoked, spawn users at coordinates sx,sy and at angle sa. Players must use /spawnZone name to change their spawn zone to this location when spawnMode is set to zone. Players will automatically spawn at the closest zone to their death when spawnMode is set to near and similarly after uses the zone direction to ensure the player is past the zone. See Angles for more information on angle specifications.

    If a zone is added with the special name start, then this will override the map-defined start locations for planes. This feature is mostly only useful to ensure human players spawn on playable areas while bots spawn sequestered.

    If zones are specified and spawnMode is set to powerup, then only powerups listed as spawn zones act as checkpoints. When this occurs, the user is told they have reached a checkpoint.

  • /del zone [name] [team]
    Delete the zone named name for this map for team. You can specify left, right, <, >, or * for the team. * means both teams.

  • /add powerup [name] [team] [x],[y]
    Specify that a special powerup for team should be at the coordinates x,y. If this is picked up by the correct team, then that team the behaviour is defined based on gameType. team can be one of left, right, <, >, or * (for both teams). For exampe, if gameType is set to flag, then the team which picks up the powerup earns a goal, and the players respawn.

  • /del powerup [team] [x],[y]
    Delete the special powerup ``teamatx`,`y`.

  • /set timer [#:##]
    Set the initial timer to be #:##, instead of the default server setting. This setting only works if the xx server patches are applied, and the time is less than the server default.

  • /unset timer
    Unset the default timer overload and return to default behaviour of using the server's setting.

  • /add timer [+|-#:##] [team] [x],[y]
    Add a timer update to the powerup at x,y. This timer should start with a plus + or minus - to indicate if the timer should go up or down. team can be specified as with powerups.

  • /del timer [team] [x],[y]
    Delete the timer for team at x,y.

  • /add note [x],[y] [message text]
    Create a message associated with the powerup at coordinates x,y. Whenever a player trips this powerup, the message will be displayed to them. This can be used to offer help to players, make fun of them, or congratulate them on meeting a certain objective.

  • /del note [x],[y]
    Remove the message associated with the powerup at coordinates x,y.

  • /! [command] [arg1] [arg2] [...]
    This special admin command is only availble when the server option configSize is set to tiny. All administrative commands are removed from the generated custom commands file. Access to these funcions go through this command. Enter /!, then a space, then the admin command as it would otherwise be (e.g. /! set gravity 3). This command can also be used to access super admin funcitonality. No help is given on this command, or any of the administrative sub-commands, save an error message when an invalid command is entered. Only use this feature if you need to run more than 100 maps on a server and you set the configSize option to be tiny. See Server Options below for more information on the configSize option.

Extended Commands for Race Tournaments

Race tournaments all the server to be configured for a special tournament mode designed to manage and log race results. Race results are stored in dated files in the directory specified by the config raceData.

  • /raceAdd [player]
    Add player to the list of players which will participate in the next race.

  • /raceDel [player]
    Remove player from the list of players which will participate in the next race.

  • /raceList
    List the players scheduled to participate in the next race.

  • /raceGoals [#]
    Set the winning Goals (checkpoints) to #. This defaults to the server's winning goals setting. Use this command to lower that value (you can't raise it).

  • /raceMap [map]
    Set the next race to occur on map, and notify the particpants that the race is ready to start.

  • /vote raceStart
    Players can call a vote to start a race. This allows for a recorded race to be played without a moderator. When used, 75% of players must agree, then all players are entered into the race.

  • /raceCancel
    Cancel the pending race, removing all players and unsetting the next map. If a race is in-progress, it will be halted and all players may join the map.

  • /go
    Let the server know that you are ready to participate in a race.

Extended Commands for Super Admins

Super admin functionality is set in the alti+server code itself. The superAdmin setting can be set to either admin (all admins can perform super admin functionality), console (super admin functionality is limited to the console), and list (where an option array superAdmins contains a list of vaporIds which are allowed to execute super admin functionality. The purpose of the distinction between normal Altitude admin functionality and Super Admin functionality is that super admins can change the maps on a server and restart it. There may be users who are admins to set ban and kick, and can also set assignTeam to keep the game going, but should have access to restart the server. If this option is set to console, then the upload and removeMap commands will not be included in the custom_json_commands.txt file to save space for more maps.

  • **/abuse [player] [chat|ban|nick|rude] This is a quick form access to various player control mechanisms. It starts with short term consequences, and increases duration automatically if behaviour does not improve. chat will allow the player to continue to play, but ban them from allChat and teamChat. ban will ban the player. nick is to be used if a player has an incorrect nick (most likely because they are abusing clan tags), and will not allow them to re-join the server until their nick is changed. rude uses the internal alti+server infractions system to increase the player's infraction count by 5, and sends them a server message telling them to clean up their act; if the player is within 5 infractions of being kicked, they will be kicked by the server.

    The /abuse command is also available to moderators.

  • /restartServer
    Restart the server. This will shut the currently running server down, and start a new one. This should be used to load new maps or to re-load the configuration after a map has been deleted. If an update to an existing map is made, the server does not need to be restarted.

  • /removeMap [map]
    Remove the map named map. The map file will be removed from the server, and it will also be removed from the maplist and rotation. This will not be fully implemented until the server is restarted, which should always be done after removing a map.

  • /upload official [map]
    Upload the map map FROM http://maps.altitudegame.com/ and save it on the server in the maps directory. The name map must be exactly the name of the map file without the .altx extension. If the uploaded map is not currently listed in the server configuration file, it will be added. However, the server must be restarted for the map to be added to the maplist and rotation.

  • /upload alti+ [map]
    Upload the map map FROM https://github.com/biell/alti-maps/blob/master/maps and save it on the server in the maps directory. The name map must be exactly the name of the map file without the .altx extension. If the uploaded map is not currently listed in the server configuration file, it will be added. However, the server must be restarted for the map to be added to the maplist and rotation.

  • /upload altitudegame [map]
    Upload the map map FROM http://altitudegame.com/map/ and save it on the server in the maps directory. The name map must be exacly the same as the linkable text of the altitude game map site. The most recent version of the map will be uploaded to the server from altitudegame.com. If the uploaded map is not currently listed in the server configuration file, it will be added. However, the server must be restarted for the map to be added to the maplist and rotation.

  • /upload ladder [map]
    Upload the map map FROM http://maps.planeball.com/ and save it to the server in the maps directory. The name map must be exacly the same as the name of the file but without the .altx extension. If the uploaded map is not currently listed in the server configuration file, it will be added. However, the server must be restarted for the map to be added to the maplist and rotation.

  • /upload tinyupload [key]
    Upload the map stored on http://s000.tinyupload.com/ with the file_id of key and save it to the server in the maps directory. The key should be a 20 digit decimal number, you do not need to provide the rest of the URL. Get the map name from the tinyupload website, and name the map in the maps directory from that scraped web content. If the uploaded map is not currently listed in the server configuration file, it will be added. However, the server must be restarted for the map to be added to the maplist and rotation.

  • /upload url [map] [url]
    Upload a map to the server FROM url and save it as map. You do not need to specify an extension for the map, nor do you need to specify a location. The map will be stored in the correct location under the maps directory on the server. The url given may be an HTTP redirect, tinyurl, etc. The url given cannot require user interaction, or contain a javascript based redirect. If you attempt to upload a file from a location with a javascript URL, the HTML containing the javascript will instead be uploaded. This will be detected, and the upload will be aborted. If the uploaded map is not currently listed in the server configuration file, it will be added. However, the server must be restarted for the map to be added to the maplist and rotation.

  • **/command [enable|disable|list] [all|...] The alti+server server has many extended features which augment the commands already available on a server. This console command allows these commands to be enabled or disabled. This can be done because a particular command isn't necesary on a server (e.g. race league commands on a non-race league server). These commands require space in the Altitude configuration packet, and this decreases the number of maps which can be loaded on the server. As such, you want to disable commands you aren't using to increase the number of maps you can serve. Run /command list all to see a list of all commands and their current enabled state.

Console only commands

  • /server [list|set|unset|add|del] [option] [args...]
    List, set, etc. server options. These commands are available only from the console because they are sensitive. For example, you can specify who is a super admin using these commands, change the message of the day (motd), or change the maximum size allowed for upload files. These settings are stored in your stash, and read in front of the default options listed in the server code. Which means they persist across software updates. See Server Options below for a full list of options with descriptions.

  • /importDefaults
    If the .altx map file for the currently loaded map contains a file called plus.txt, then execute the commands in that file to set the authors defaults. This function is automatically initiated if a map is uploaded using one of the /upload commands, or if the map is being loaded for the first time and has never been initialized. If you need to load the defaults at any other time, use this console command to initiate that task.

  • /stashDisplay [map]
    Print the stash object in memory for map.

  • /stashClearSettings [map]
    Clear all settings for map. Afterwards, only records (if any) will be left in the settings cache for this map.

  • /stashClearRecords [map]
    Clear all records for map. Afterwards, records will be started fresh if the map is played again and recordTypes is set to include map.

  • /setPlayerName [player] [name]
    Set the real name for player to be name. player can be the current name field, nickname, server unique ID, or a partial vaporID.

  • /updateNames
    Connect to ladder and merge in the "AKA" field (overwritting any local changes) into the server's name field for each player. This process will also link accounts which have been linked in ladder.

  • /showAdmins
    Print the names and vapor ID's of the server admins.

  • /showPlayer [player]
    Print information on player

  • /showTeams
    Print a list of teams and the players who are on them.

  • /showSeen
    If user information is being kept per the "altBouncer" option, then display the users recently having played on this server.

  • /showRecent
    If user information is being kept in a database, then display the users recently having played on any server sharing that database. For servers with a dedicated database, this is roughly equivalent to /showSeen.

  • /showRatings [mode|type]
    List in console the ratings for either mode or type. The output will be sorted in ascending order.

  • /showPowerups
    List all the powerups defined for the current map. This is useful for finding powerup coordinates to specify Alti+ powerup overloading.

  • /chatLeft [message]
    Send message to all members of the left team.

  • /chatRight [message]
    Send message to all members of the right team.

  • /chatSpec [message]
    Send message to all spectators.

  • /shutdown
    Shutdown the Altitude game engine, then alti+server itself

Server Options

Use the console-only /server list, /server set, /server unset, /server add, and /server del commands to modify the below values.

  • lobby [map]
    Set map to be the lobby map for this server. When the server becomes idle, alti+server will change the map to lobby. When players join the server, the server will change the map for them to a random map in rotation. Lobbies serve two purposes: (1) maps should be started with players ready to play so they can be assured to start fresh, and (2) some maps use a lot of CPU (especially some coop maps where bots spawn on top of a health), and the lobby map can be set to be low CPU. If set to a null string, no lobby map is in effect; this is the default. N.B. The nextMap setting is not consulted on an idle server when lobby is set.

  • updateMapList [0|1]
    Specify if alti+server can change your launcher_config.xml file with an updated map list and map rotation list. These lists will be automatically randomized each time the server restarts. Furthermore, if your map list is too large for the Altitude game engine to support, it will trim the list focusing on keeping more recent and popular maps in the list, and discarding less popular/older maps. This feature is required if you wish to have the map upload feature automatically add new maps to the map list. Without this feature, you will need to edit your launcher_config.xml file by hand (or with the server_configurator) to manually add new maps. Set to 1 to enable this feature, set to 0 to disable.

  • enableTalk [0|1]
    Server aided direct chats with other players are supported when enableTalk is set to 1. They are disabled when it is set to 0. Server aided direct chats allow any player to communicate only with one other player, regardless of if they are friends. This feature is increadibly useful when developing new maps. Map makers can discuss issues and provide tips to individual players without spamming all players. Most servers do not require this kind of interaction, and server administrators may be concerned the commands will result in abuse. As such, enableTalk is off by default. Additionally, these commands take up space in the Altitude initialization packet, thus limiting the number of maps the server can load. Not enabling this feature results in enough space for an additional couple maps to be run by the server.

  • changePlane [0|1]
    Set the server wide default value for changePlane. This can be overridden on a per map basis, but if not set, this will be the default. The code default is 1 (allowing use of the /changePlane and /cp commands.) Setting this to 0 will reverse that behaviour.

  • allowUploads [0|1]
    Allow uploads to the server by admins (assuming the user fits the criteria of a superAdmin as defined below). If this option is disabled, then the upload and removeMap commands will not be included in the custom_json_commands.txt file. This option is useful if you don't plan on using this feature, and wish to reserver more space for maps. Disabling this ability will allow your server to run between 4 to 12 extra maps, depending on their names. While on by default, it is recommended that this feature be disabled if you don't plan on using it. Disabling this feature removes it from both the game and from the console.

  • ulSizeLimit [#]
    Specify the maximum size of an uploaded map. This number is an integer which represents Bytes. If the integer is followed by the letters g, m, or k then the number is assumed to be in gigabytes, megabytes, and kilobytes (respectively). Since you may allow other people to upload files to your server, there needs to be some sort of maximum value. Please note that the file may need to be fully downloaded before its size can be checked. If the size is above ulSizeLimit, then the map file will be promptly deleted.

  • roundTime [type|mode] [#]
    Set the default round time for maps of this type or mode. First, alti+server will check to see if a map specific roundTime is set. If not, it will check to see if there is a game type specific time set. Next, it will check to see if there is a mode default value. If all of this fails, it will go to the default values. Any mode or type can be used, including coop, tag, race, ball, tbd, ...

  • botCount [#]
    Set the number of bots, by default, ther server should configure.

  • altBouncer [0|1]
    Add support for sending data on users who join the server to the AltBouncer (http://tec27.com/altbouncer/) site. Setting this to 0 (the default) will ensure data does not get forwarded to the AltBouncer site. Setting this to 1 will periodically send data to the site. Data will normally be sent when the server is otherwise idle, so the upload process does not affect game play. Also, when shutting down, user info will be flushed to the AltBouner server before exiting.

  • restartMapTime [#]
    Specify to alti+server that if users download the altx map file in longer than game delay, but less than # seconds, then restart the map over. This allows the game to be more properly played and balanced. Also, it is critical for race maps that players start at the same time.

  • restartMapTypes [type1,type2,...]
    Specify that the map restart functionality described just above only apply to game types type``,type2`, ... This functionality is best used on race and coop maps, where times matter.

  • boxColor [black|blue|cyan|green|magenta|red|white|yellow]
    Two sections of the console curses interface are encapsulated in boxes. This value specifes the color of these boxes. The color must fall into the limited Curses color name values.

  • chatFromColor [black|blue|cyan|green|magenta|red|white|yellow]
    In the chat window, the name of the person sending a chat message will be displayed. This value is the color of the nickname text of that person. You must use the limited The color must fall into the limited Curses color name values.

  • chatToColor [black|blue|cyan|green|magenta|red|white|yellow]
    In the chat window, a specifer as to the recipients of a message is displayed. This value is the color of that specification. The color must fall into the limited Curses color name values.

  • uiPrettyBoxes [0|1]
    Curses can draw attractive boxes on the screeen using either a terminal's Alternate Character Set (ACS) or Unicode drawing characters. This almost always works, but when it doesn't, the experience is quite appalling. Setting this to 0 will disable these specialty characters and just the standard ASCII '-' and '|' characters. Setting this to 1 will tell Curses to draw attractive boxes on the terminal screen.

  • askSalt [0|1]
    When alti+server stores a password, it hides it by combining the password or other authentication data with a pad. The pad is, by default, generated using system data which doesn't usually change. Users can use the environment variable ALTITUDE_SALT to manually set the seed for this pad. Another, almost secure, method is to provide the salt manually on startup. With this option set to 1, the server will pause and wait for input before continuing.

  • dbType [SQLite|Pg]
    Specify the type of database to use. By default sqlite3 will be used if it is available. Only sqlite3 and postgres are supported.

  • dbName [filename|dbname]
    For sqlite3, this is the name of the file to save the database to, and it defaults to sqlite.db. Otherwise, it is the database name to connect to.

  • dbUser [login name]
    The login name, if necessary, when connecting to a postgres database.

  • dbPass [password]
    The password, if necessary, when connecting to a postgres database.

  • noviceLevel [#]
    Require the novice users (Ace 0) attain at least this level before being allowed to play on the server. Players below this level will be forced to spectate, and sent a server message outlining the policy. Continued attempts to join will result in a kick. This value differes from the server enforced level requirements, as it only affects players of Ace Rank 0. The smaller number between noviceLevel and aceLevel will be used to set the server's minLevel configuration.

  • aceLevel [#]
    Require users who have recently Aced (anywhere from 1 to 10) to have at least obtained this level before being allowed to play. Players below this level will be forced to spectate, and sent a server message outlining the policy. Continued attempts to join will result in a kick. This value differs from the server enforced level requirements, as it only affects players of Ace Ranks 1 through 10. The smaller number between noviceLevel and aceLevel will be used to set the server's minLevel configuration.

  • snarkChance [#]
    Specify the likelihood that a snarky comment will be made about a player. The server is configured with a number of funny comments to make about plane choices, perks, skins, etc. Events which cause these to be displayed are things like spawning. So, this number is the likelihood per user that this happens. If you set this to 0, then snarky comments are disabled.

  • bullyKick [0|1]
    Online games with chat functionality will, from time to time, attract players who play a sort of meta-game, one where (for them) the real game is to abuse other players and create havoc. These sorts of individuals often result to vulgar language to acheive their goals. The server looks for these types of behaviour and warns players who engage in it. After many repeated attempts, the server will kick the bullies. Setting this to 1 enables this player protection and the support of a positive gamming experience. Setting this to 0 disables the servers ability to protect players from this sort of harrasment.

  • infractions #
    The number of infractions (defaults to 10) before a player is kicked. An infraction could be language related if the bullyKick option is enabled, but there are also other infractions. For example, continually trying to join a game that you cannot join is an infraction b/c it is seen as a way to try to break the server. Spamming chat even after a player is chat blocked is seen as overly aggressive behavior when bullyKick is enabled, and so is also an infractions. Normally, infraction count is incremented by 1. However, some infractions will increase the count by more or less depending on their likelihood to be the cause of normal behavior vs a willfull attempt to break the system. Each time the map changes 1 infraction is forgiven.

  • debug [0|1]
    Enable debugging. Statements in the code which call the debug library will now send messages to console, and to all admins who are playing the game.

  • awards [0|1]
    At the end of a game, custom awards are provided. This feature can be disabled by setting awards to 0. See Custom Awards for more information.

  • recordsTypes [type1,type2,...]
    Keep records of game types type1, type2, and so on. This is a commonly desired feature on coop and race map types, and not so much on other map types. If this string is set to non-empty, then for these maps the top 5 times will be displayed at the end of each round. Additionally, a team will be congratulated if they score in the top 5.

    For game types of race, alti+server will keep the name of the winner. If the team the winner is on has exactly 1 available spawn point for members of that team, then the individual name is stored. Otherwise, the color of the team is stored with the record.

  • saveLogTypes [type1,type2,...]
    For the listed game times, keep game specific logs in a special directory heirarchy for later review.

  • saveLogRecord [#]
    If saveLogTypes is set for a game type which has records, only keep the logs if a record is set which is lower than #. Basically, this can be used to detect cheating. We don't care much about cheaters who record the worst time ever, but the best times should be legitimate.

  • rotationRE [RE]
    Not all maps need to be in the map rotation, and should only be available via an admin /changeMap or a /vote changeMap. This value is a regular expression (so you can seperate values with a pipe "|" character) which specifies which maps should be in rotation. For example, "1de_coop" maps often kill servers, causing players to quit. This can be used to keep this from happening. Conversely, it could also be used to make only 1-life games occur. It is the perogative of the server administrator.

  • configSize [normal|small|tiny]
    Set the configuration size to be either normal (preferred), small (if you need to serve more than 80 maps), or to tiny (if yo uneed to serve more than 100 maps). This configuration parameter changes the way the custom_json_commands.txt file is generated, and how users inside altitude interact with the alti+server code. If the preferred setting of normal is used, users on the console and in the game have the same experience. They both get help on arguments and command expansion when typing. If set to small, then users inside the game no longer get help on arguments and expansions. Where lists of sub-commands used to be, free-form strings must be entered which either match commands, or produce errors. If set to tiny, then administrative commands are pushed under a super command named !. No help is given on this commands, and users inside the game must remember exact syntax. For any setting here, use of the /help command is especially helpful.

  • raceData [directory]
    Normally tournament race data is stored in the servers directory with all normal log files. This configuration option can be used to store this data in a seperate location. This is useful if you want to keep it seperate, organized by event, or export to other people via a file transfer protocol such as HTTP.

  • javaHome [directory]
    Altitude comes with an old 32-bit JVM. If you with to use a newer or 64-bit JVM, then you can set the environment variable INSTALL4J_JAVA_HOME_OVERRIDE to specify a different JDK directory. If you have this environment variable set, this parameter (javaHome) will be overridden to the same value. Otherwise, the value of this option will be placed into INSTALL4J_JAVA_HOME_OVERRIDE before starting the Altitude server. This parameber can be changed before running /restartServer to change the JVM used for subsequent server starts.

  • notifyMethod <file|email|pushbullet>
    Specify if notifications should go to a file only, or to both a file and pushbullet. The Alti+ server has two priorities of messages: info and warn. Messages of type info only ever go to a file in the server directory named notify.txt. This file looks just like the Altitude log.txt file. Messgae of type warn can also be sent to an email or pushbullet channel.

  • notifyTag
    The name of the pushbullet channel tag to send messages.

  • notifyAuth
    The login password or security token necessary for the application to send messages via a remote service. If you are sending information via email, please don't use your primary email account. It is easy to create a new email account, and use that for this purpose. This allows you to store the account's password in alti+server without opening your primary account's password to risk.

  • notifyFrom
    When using a notifyMethod of email, use this as both the From: field address, and as the username to login to the mail server.

  • notifyTo
    Specify the recipient address of emails, presumably this is an email you have easy access to.

  • notifyServer host:port
    Specify the hostname and port which accepts SSL connections, this is usually 465.

  • secretCode [password]
    Altitude servers can be configured using the server_configurator program to require a passcode to join the server. This setting allows you to perform the same function on the alti+server console, saving you from having to run a gui or edit an XML file directly.

  • superAdmin [admin|console|list]
    Some servers have two levels of admins. Admins whose job it is to keep the peace, and admins who support the server. This setting allows for a distinction between these two types of admins with respect to alti+server's custom commands. Commands which add or remove maps are super admin commands. Also are commands which allow the restart of a server. Set this to admin to make admins and super admins the same group. Set this to console, and super admin commands will only be available for users at the alti+server console. Finally, setting this to list will allow a list of vaporIds to be set with actual super admin users.

  • admins [vaporID|nickname]
    An array of server admins. If this list is unset, then the adminsByVaporID section of the launcher_config.xml file is left in-tact. If this array is set, then the vapor IDs in this array are set to be the server administrators and any vapor IDs listed in the launcher_config.xml file are replaced with this list.

  • superAdmins [vaporID|nickname]
    This is an array (so use "add" and "del" when at the console) of vapor IDs which have super admin privledges. It is used only if the value of the above "superAdmin" value is set to "list". If you specify a vaporID, then it will be added to the list of super admins. If you specify a nickname, then that player must be on the server right now, so their vaporID can be looked up and stored in the list of super admins. You cannot actually store a nickname in the list of super admins and have it work, that would be dangerous.

  • motd [message text...]
    This is the Message of the Day (motd) used when players join the server. It is an array (each element is a new line) so use the "add" and "del" sub functions of /server when entering from the console.

Server Extensions

alti+server also has support for patched altitude servers for extending the game capabilities. These are non-official changes to game.jar which alter the behavior of the server.

xx

x.x (aka xal, xalri, LewisH) has added a number of functions to altitude which are supported by alti+server. When using these patches, you should manage the server patch configuration files through alti+server. Whenever possible, support for these features is directly integrated and used automatically. Manually overriding this behaviour is also possible.

If you do not wish to have alti+server manage the server extensions, and you would prefer to manage them by hand, you can set the global config option xxEnabled to a false value.

Use the console-only /xx list, /xx set, /xx unset, /xx add, and /xx del commands to modify the below values.

  • logPositions [#]
    Specify a floating point number which signifies the number of seconds apart to automatically log a logPlanePositions event. The default is 0, which means not to log automatically.

  • voteCooldown [#]
    The default time between votes is 90 seconds, you can change it to # seconds. If #<=3600, then the time is interpreted as seconds. If #>3600, then the time is interpreted as milliseconds. This attribute only affects after a successful vote.

  • voteFailCooldown [#]
    The default time between failed votes is 300 seconds, you can change it to # seconds. If #<=3600, then the time is interpreted as seconds. If #>3600, then the time is interpreted as milliseconds. This attribute only affects after an unsuccessful vote.

  • extendPermisisons [true|false]
    Tell the patched server code to enable it's extensions to the Altitude permissions engine. This add-on provides roles based access support to enable serve access levels beyond just admin and player. It supports a moderator role just like alti+server, and can be configured to expand the commands a moderator can run. This parameter may be automatically enabled by the /command console command interface.

  • aclFallback [true|false]
    When extendPermissions is set to true, tell the server if a command does not exist in permissions.hjson to fall back on the default Altitude behaviour as described in the launcher_config.xml file. The default is false, don't fall back.

  • admins [player|vaporId]
    Use xx add or xx del to add or delete player's from the acl admins group. When extendPermissions is enabled, these players will have access to run any commands restricted to the admins acl group. Normally this command is not needed, this functionality is tied to the server add admins command, and that command should be used instead of this one. This command should only be used to query or fix issues with the admins group.

  • moderators [player|vaporId]
    This works just like the admins group above, but for the moderators role.

  • clientCommand [command]
    Use /xx add or /xx del to add or delete commands which will be included in the client packet. Doing so will allow players to run the command at the expense of using up space in the already tight configuration packet.

  • joinIgnoreDefault [true|false]
    The server patches can override the built-in join control engine or work as an extra layer of join control. If set to true, then only the patches join control will be enabled. If set to false (the default), then both engines will be enabled. N.B. setting this to true and failing to select a join policy from the extension will leave access to the server fairly open.

  • minAce [#]
    Set the minimum Ace (badge) level a player must be to join the server. It defaults to 0.

  • minLevel [#]
    Set the minimum level a player must be to join the server. This minimum level applies only players in or above minAce. If your Ace level is below minAce, then you can't join. Conversely, if your Ace level is above minAce, then your level can be below minLevel. In alti+server, this value will be automatically set to the value of noviceLevel if noviceLevel is set lower than aceLevel. In this case, the alti+server sets the minLevel launcher_config.xml value to that of aceLevel. This ensures that only valid players may join. Of course, that only applies if joinIgnoreDefault is set to false.

  • maxAce [#]
    Set the maximum Ace (badge) level a player must be to still be able to join the server. This defaults to 10.

  • maxLevel [#]
    Set the maximum level a player can be to join the server. This works the exact opposite way of minLevel. In this case, if your Ace level is below that of maxAce, then your level may be higher than maxLevel. If your Ace level is above maxAce, then you can't join, even if the level is below maxLevel.

  • levelRestrictions [true|false]
    Enable (if set to true) the above restriction engine. The default is disabled (false).

  • whitelist [true|false]
    Enable (if set to true) the whitelist join engine. If this is enabled (which it is not by default), then only players in the special allow list may join.

  • allow [player]
    Use /xx add allow [player] to add players to this list and /xx del allow [player] to remove players from this list. You can specify players via their VaporID, or if they are already a part of the alti+server player database (you must have database support enabled for this), then it will search for them by their player name or most recent in-game nickname. This feature is very useful when used after running /updateNames to pull in the ladder user database. In this case, anyone on ladder can be added (or removed) by using their most recent nickname or their ladder @AKA names.

  • acl [command] [groups...]
    This command is slightly more complicated than the rest. It is used to set the acl groups which have access to run a command. The groups may be specified as comma or space seperated. This overrides whatever is already listed, it does not add or subtract; so specify all groups an acl should have. The following groups may be specified:

    • disabled
      Nobody may run this command, it is disabled
    • all
      Everybody may run this command, it is open
    • vote
      Anyone can propose a vote for this command
    • admins
      Server admins may run this command
    • moderators
      Server moderators may run this command

    If you unset a command, it goes back to it's default. Which is to fallback to default Altitude behaviour in most, but not all, cases. The unset operation will tell you what that new value is.

Console Interface

Beyond the numerous additional game play extensions and settings, there is an enhanced altitude server console built into alti+server. Any of the above Server Options only or xx commands may only be executed on the console. This interface alone may be the reason some people wish to use alti+server to wrap around the Altitude game engine.

The console interface consists of 3 sections:

  1. On top is the standard output of the Altitude game engine,
  2. just below that is a chat window showing the player chat interaction, and
  3. on bottom is an input window for chatting or running commands.

Any line starting with a slash / character will be interpreted as a command, anything else will be interpreted as a message for the server to chat to all players.

Each of the three sections has their own scroll back. In the input window, you can use arrow keys to look through your history and modify the commands in it for new execution. To scroll through the chat window, use PageUp and PageDown; to jump to the oldest and newest chat messages, use the Home and End keys respectively. If you want to scroll back through the server's standard output, you can use F11 to go up, F12 for down, F9 to skip to the oldest message, and F10 to scroll all the way to the most recent.

In case you get lost, if at any time you press enter in the input window, all windows will scroll to their most up-to-date section.

Angles

Various interfaces in alti+server allow you to specify angles for spawning. When specifying angles, the following table lists the allowed values:

  • 0 to 80
    The angle in degrees starting from 0(facing right) to 180(facing left)

  • -1 to -179
    The downward facing angles in degrees starting from -1 (very nearly facing right) to -179 (very nearly facing left). The angle of -90 is straight down.

  • 181 to 359
    The downward facing angles in degrees. These numbers are converted automatically to the correct -1 to -179 values where 181 is equivalent to -179, 270 is equivalent to -90, and 359 is equivalent to -1.

  • right|up|left|down
    These directions are converted to 0, 90, 180, and -90 respectively.

  • e|ne|n|nw|w|sw|s|se
    Compass directions which are converted to 0, 45, 90, 135, 180, -135, -90, and -45 respectively. The long names of east, northeast, ..., southeast are also allowed.

  • c|h|v
    Specify relative angles directed towards the center of the map, facing horizontally left or right towards the middle vertical axis, or facing vertically up or down towards the middle horizontal axis. The long names of center, horizontal, and vertical are also allowed.

Custom Awards

At the end of a game, give out additional awards. Awards are only given if there are enough human players to make them not pointless, and only if a human player is deserving of the award. Providing custom awards can be disabled with the awards server option. They are on by default, and are defined as such:

  • Training Wheels Award
    This award goes to the player who crashes the most.

  • Kenny McCormick Award
    This award goes to the player who dies the most, named after South Park character who can't make it to the end of an episode.

  • Ball Hog Award
    This award goes to the player who holds onto the ball the most. Though slightly derogative souding, this can be a compliement.

  • Sledge Hammer Award
    This award is named after the 1980's TV character who shot first and didn't bother to ask questions. To paraphrase: guns don't kill people, bullets kill people. This is for most damage dealt.

  • Tank Award
    This award goes to the player who manages to sustain the most damage. Every team needs a good tank.

  • Best Ratio
    This award is given to the player who has the best final ratio of Kills to Deaths. Players late to the game may scoop this award.

  • Front Runner
    This award is given to the player who has is the first person on their team to get to the most checkpoints. This award is designed for a game type of race.

Scripting Interface

If you are OK writing perl, there is a scripting interface for alti+server. It isn't anything fancy, you have to write exactly the same code as you would to directly add your code to the base server code. But, it allows for easy loading and unloading of script modules. And, it is an easy way to change the behaviour of the server. This is helpful for setting up league events and could be used for a map which required tight integration with the server code. See the example_scripts directory on github for examples.

A special command /vote modify is available to tune scripts

Snarky Server

The server can be configured to emit snarky comments from time to time by setting the code OPTION snarkChance to a positive value. Setting this value to 20 (for example) should give each player a 1 in 20 chance for receiving a snarky comment for things for which a comment like this may occur. The most commong snarky comments are for plane configuraion choices and occur when a plan spawns. So, if a snarkChance is set to 20 and a player dies 20 times in one game, it is likely that they will receive a snarky comment (if their plane choices have a preconfigured comment).

Setting snarkChance to 0 disables this feature, and no snarky comments will be emitted by the server.

Minimum Level Requirements

If the requireLevel OPTION is set, then the server will not allow players to spawn who don't meet the minimum requirements.

New players (Ace 0) must unlock all their planes (level 21) to join a game.

Recently aced players (Ace 1 - Ace 10) must unlock all their first loopy blue perk (level 8).

Managing Aggressive Behaviour

The server can be configured with the bullyKick OPTION to warn, then eventually kick players who behave in overly aggressive ways towards other players. Language which is often used in offensive statements is looked for, and after 10 utterances, the aggressive player is kicked.

More information

See the Altitude+ wiki for more information on using the server: http://altiplus.glaciated.org/