Giter VIP home page Giter VIP logo

subspace-infinity's Introduction

Everything-as-Code, even my profile!👋

I love making things flow through tech. All the way from a to z.

Since I took a masters in informatics1 I've been a developer, an architect, a scrum master and a project manager.

I am an Agile and DevOps advocate and strategist, with roots in ERP project management, architecture and development, resulting in deep experience in the entire software development process from ideation to release and adoption.

I aim to expand and teach quality software habits: Team autonomy and organization alignment, rigorous management of technical and organizational debt, focus on flow of customer value, hypothesis driven development, live site culture, evidence gathered in production and managing infrastructure as flexible resources. To me it is important that people are brought together, processes are streamlined and that products are utilized to alleviate resources efficiently, to create value for the end customer.

I thrive working in a team, with people that can challenge me and the way of working image

Footnotes

  1. Graduated from The Danish Technical University in 2008

subspace-infinity's People

Contributors

assofohdz avatar hensson avatar jchamlin avatar pesegato avatar pspeed42 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

risooonho

subspace-infinity's Issues

Client/Radar: Implement a new viewport in a RadarState client side

Situtation: Currently the radar is not implemented

Ask: Implement a client side radar. Should be a new viewport that only loads spatials based on a new radar-shapeinfo-component . This component defines how entities look on the radar. The RadarState should ask for entities that has BodyPosition + SpawnPosition + RadarShapeInfo, and then attach the given spatials to a radar-root-node. ´It should work much like the ModelViewState that handles the main scene view, but should attach to a given radar-root-node instead.

Module: Kill Game: King of the hill

Implement a module that can be loaded and unloaded (see examples in Module sub project)

"Kill" games have no 'rounds' or 'games'; the objective is simply to kill as many opponents as possible while keeping one's own deaths to a minimum. The original Alpha and Chaos zones followed this basic premise.

King of the Hill – Each player starts off with a crown, which may be lost if the set amount of time runs out. A player's timer, which is displayed at the top right of the screen, is reset every time they kill another player. However, if a player has already lost their crown, they may only regain it by either killing a flagger with a crown (sometimes marked by a red dot on the radar), or by destroying any two players. Generally though, flaggers with low bounty do not give others their crown. The game is then won when there is only one crowned player left standing.[14]

Server/Map: Upgrade the loading of map tiles

Currently, the server loads default block set from MOSS.

Would be nice to implement the tiles from the tilesets of the maps. The loading functionality of that is implemented, but is skipped due to world being blocks and not tiles. The blocks can probably show only one mask and that could be the tile.

Here's the tile info I have so far

Name Number Desc Visibility Fly over/under On radar
vieNoTile 0        
vieNormalStart 1        
vieBorder 20 Borders are not   included in the .lvl files      
vieNormalEnd 161 Tiles up to this point are part of sec.chk      
vieVDoorStart 162 Vertical door   1, mostly open      
  163 Vertical door 2, frequently open      
  164 Vertical door   3, frequently closed      
vieVDoorEnd 165 Vertical door 4, mostly closed      
vieHDoorStart 166 Horizontal door   1, mostly open      
  167 Horizontal door 2, frequetly open      
  168 Horizontal door   3, frequently closed      
vieHDoorEnd 169 Horizontal door 4, mostly closed      
vieTurfFlag 170 The flag      
vieSafeZone 171 Also included in sec.chk      
vieGoalArea 172 Goal area tile   (fly over)   Over  
vieFlyOverStart 173 Tile where ships fly over 1   Over  
  174 Tile where   ships fly over 2   Over  
vieFlyOverEnd 175 Tile where ships fly over 3   Over  
vieFlyUnderStart 176 Tile where   ships fly under 1   Under  
  177 Tile where ships fly under 2   Under  
  178 Tile where   ships fly under 3   Under  
  179 Tile where ships fly under 4   Under  
  180 Tile where   ships fly under 5   Under  
  181 Tile where ships fly under 6   Under  
  182 Tile where   ships fly under 7   Under  
  183 Tile where ships fly under 8   Under  
  184 Tile where   ships fly under 9   Under  
  185 Tile where ships fly under 10   Under  
  186 Tile where   ships fly under 11   Under  
  187 Tile where ships fly under 12   Under  
  188 Tile where   ships fly under 13   Under  
  189 Tile where ships fly under 14   Under  
vieFlyUnderEnd 190 Tile where   ships fly under 18   Under  
  191 Ships go through, items bounce off, Thors go through if you   fire an item while in it, it will float suspended in space. Invisible    
  192   Invisible    
  193   Invisible    
  194   Invisible    
  195   Invisible    
  196   Invisible    
  197   Invisible    
  198   Invisible    
  199   Invisible    
  200   Invisible    
  201   Invisible    
  202   Invisible    
  203   Invisible    
  204   Invisible    
  205   Invisible    
  206   Invisible    
  207   Invisible    
vieAsteroidStart 216 Small asteroid      
  217 Medium asteroid      
vieAsteroidEnd 218 Large asteroid      
vieStation 219 Space station      
vieWormhole 220 Wormhole      
ssbTeamBrick 221        
ssbEnemyBrick 222        
ssbTeamGoal 223        
ssbEnemyGoal 224        
ssbTeamFlag 225        
ssbEnemyFlag 226        
ssbPrize 227        
ssbBorder 228 Use ssbBorder instead of   vieBorder to fill border      
  229        
  230        
  231        
  232        
  233        
  234        
  235        
  236        
  237        
  238        
  239        
  240   Invisible    
  241 Absorbs weapons      
  242 Warp on contact     No
  243   Invisible   No
  244   Invisible   No
  245   Invisible   No
  246   Invisible   No
  247   Invisible   No
  248   Invisible   No
  249   Invisible   No
  250   Invisible   No
  251 Warp on contact, items bounce off, thors dissappear Invisible   No
  252 Animated enemy brick, Items go   through, ship gets warped after 0-2 seconds No    
  253 Animated team brick, items go through     No
  254 Impossible to   lay bricks while on/near it Invisible   No
  255 Animatead green, item sand ship go through     No

Server/Physics: Implement 2d mphys system

Situation: As it is now, the physics system is 3d oriented. For Subspace Infinity, only 2D is needed

  1. Extend PhysicsSpace w. constructor taking a new TandemContactResolver
  2. Overwrite PhysicsSpace::resolveContacts( double step ) and use new resolver
  3. Overwrie TandemContactResolver::resolvePenetration and TandemContactResolver::resolveVelocity and copy-paste, and then cancel out any y-calculations

or

  1. Extend RigidBody and overwrite Integrate() and cancel the y-movement there

Module: Kill Game: Speed

Implement a module that can be loaded and unloaded (see examples in Modules sub project)

"Kill" games have no 'rounds' or 'games'; the objective is simply to kill as many opponents as possible while keeping one's own deaths to a minimum. The original Alpha and Chaos zones followed this basic premise.

Speed – Each round of a Speed game has a time limit. The winner of a round is the player with the most kills for the round. In Speed Zone, ships began with a higher "bounty" (and more weapons and other power ups) than in other zones. Speed Zone proved to be less popular than the Jackpot/Running, Chaos, or "flag" zone games and support was discontinued shortly after SubSpace went to retail.

Module: Flag Game: War

Develop a module (see the examples already in the Module sub-project) that implements the game of War

The objective is to claim all flags for one's own team. Flags can be picked up by opponents only. Flags that are picked up are dropped after a set time. Flagging games usually involve bases to store flags and are heavily team-oriented.

View/Graphics: Implement roll graphics for the ship

Situation: The graphics for the ship is right now static.

Ask: Implement roll, so that when the ship is turning, the rest of the graphics in the spritesheets are used, to give the effect that the ship is turning

Module: Adventure

Implement a module that can be loaded and unloaded (see the Modules sub project for examples)

Create a module that is more single-player than multi-player, or perhaps is even coop as opposed to pvp. This could be anything, including a long voyage, some objectives, some AI-bots to defeat, procedurally generated maps/labyrinths, perhaps spanning multiple maps.

Client/map: Implement a map designer that can work while you are in game

Situation: Currently the map cannot be edited from within the game. The LVL/LVZ editors in the current Subspace sphere is needed

Ask: Implement functions on the client side that interacts with the MapSystem on the server to create/update/delete tiles in the game. A Lemur panel can be used to create functions to let the player choose which tile to create etc.

Movement: Implement Warp

Implement the warp feature. Can only be used at full energy. the MOSS apps/frameworks includes a warp feature that can maybe be used.

From Wikipedia:
Ships can instantly warp (Ins) to a random location on the map. This action requires the ship to be at full energy, and its energy is totally drained once the warp is complete, although the ship will begin recharging its energy immediately.

Module: Ball Game: Hockey

Implement a module that can be loaded and unloaded (see examples in Module sub project)

Ball games involve taking control of a ball and scoring it in the opposing team's goal. Players cannot fire weapons or warp while carrying the ball, and can only carry the ball for a few seconds. Before the ball timer runs out, they must pass the ball to a teammate (using Ins, Tab, or Ctrl keys), or the ball will shoot out from their ship in a random direction. If a player dies while carrying the ball, the ball is dropped immediately and may be picked up by anyone. A team wins a game when they achieve a certain number of goals, or the game may be timed, with the highest-scoring team winning when time expires.

Hockey simulates futuristic ice hockey in a space setting. the "ball" is the equivalent of the hockey puck. Each ship's settings have been modified to fit that ship into a unique role on the team; for instance, Lancasters and Sharks are "goalie" ships. the Warbird, Javelin and Weasel are Forwards, Spiders and Terriers make up the midfield, and the Levithan is a defensive beast. The rules of the game are based on real hockey rules with some variations due to the 2d nature of the game.

Movement: Implement an AttachSystem and AttachState

Situation: Currently there's no way to attach to another player

Ask: Implement a system for handling attaching to another player as a turret. Effectively the attaching player latches on and becomes a turret on the moving player.

Would require a server side System to handle attach limitations and taking over the movement based on the target player. The SettingsSystem can be asked for:

- Thrust penalty	
- Speed penalty	
- Limit

Phase 1: Start by using the chat interface to attach to another player
Phase 2: Select the moving player in a list of players that are currently online and on your frequency (team)

From Wikipedia:
Ships may also attach to other friendly ships. In this scenario, the attaching ship loses thrust control and becomes a weapons turret on the back of another ship. This is technically achieved by performing a warp, thus requiring full energy to attach and draining energy in the process. A turret ship takes damage like a normal ship and may detach at any time. In addition, a ship carrying turrets may detach one or all of them at any time.

Module: Server: Profanity

Implement a module that can be loaded and unloaded (see Module sub project for examples)

This module should be able to do pattern matching on obscene language in the chat and blank words or block entire messages.

Module: Flag Game: Basing

Implement a module that can be loaded and unloaded (see examples in the Module sub project)

Basing – Similar to Turf, except there is a base with one flag. The team that controls that flag controls the base, and thus the base is often completely populated by the controlling team. Trench Wars is an example of a popular basing game.

Server/play: Implement different prizes

Situation: Currently the prizes are implement

Ask: Make sure the prizes can also be spawned through a chat command via the following numbers:

1 = Recharge: Increases recharge rate of consumer
2 = Energy: Increases max energy of consumer
3 = Rotation: Increases rotation speed of consumer
4 = Stealth: Grants stealth ability (hiding consumer from radar of ships without XRadar)
5 = Cloak: Grants the cloaking ability (invisibility)
6 = XRadar: Grants the XRadar ability, allowing
7 = Warp: Grants a consumable warp (if no portal: a default warp to arena center)
8 = Guns: Upgrades guns
9 = Bombs: Upgrades bombs
10 = Bouncing Bullets: Grants bouncing bullets
11 = Thruster: Upgrades thruster (question?)
12 = Top Speed: Increases top speed
13 = Full Charge: Sets consumer to full health
14 = Engine Shutdown: A dud, disables engines temporarily
15 = MultiFire: Grants multifire
16 = Proximity: Grants proximity bombs (will explode within a given range of enemies)
17 = Super!
18 = Shields: Not sure?
19 = Shrapnel: Upgrades shrapnel count of bombs
20 = AntiWarp: Grants the antiwarp ability
21 = Repel: Grants a consumable repel
22 = Burst: Grants a consumable burst
23 = Decoy: Grants a consumable decoy
24 = Thor: Grants a consumable thor (a special bomb that goes through walls and bricks)
25 = Multiprize: Grants a set of prizes
26 = Brick: Grants a consumble, placable brick
27 = Rocket: Grants a consumable rocket (increased thrust)
28 = Portal: Grants a consumable portal (that will be used as target when warping)

List:

  • Add doubly linked list with above numbers matching strings in PrizeTypes-class
  • Command to spawn prizes next to player
  • Set up PrizeSystem to detect collisions between ships and prizes
  • Implement prizes (as pure distinct data) - without an effect on the server side.
  • Player picks it up, hears the sound

Module: Flag Game: Running

Implement a module that can be loaded and unloaded (see examples in Module sub project)

Running – Flags in running zones do not have drop timers, and may only be claimed by killing an opponent carrying flags or picking up neutral flags. Variants include Rabbit Chase.

Module: Ball Game: Powerball (soccer)

Implement a module that can be loaded and unloaded (see examples in Modules sub project)

Ball games involve taking control of a ball and scoring it in the opposing team's goal. Players cannot fire weapons or warp while carrying the ball, and can only carry the ball for a few seconds. Before the ball timer runs out, they must pass the ball to a teammate (using Ins, Tab, or Ctrl keys), or the ball will shoot out from their ship in a random direction. If a player dies while carrying the ball, the ball is dropped immediately and may be picked up by anyone. A team wins a game when they achieve a certain number of goals, or the game may be timed, with the highest-scoring team winning when time expires.

Powerball (Soccer) – is similar to hockey, in that it also features two teams (Warbirds and Javelins) and goals at opposite ends of a symmetrical map. Powerball primarily uses SVS settings, except that the Warbird and Javelin have identical ship settings, creating two evenly matched teams. Each ship starts with 100 bounty and comes "greened" with a number of basic upgrades and randomly selected special abilities (e.g. burst, repel, etc.). It is not possible to choose any other type of ship. Although scoring goals is the primary objective of Powerball, shooting and killing other players is very much an important part of the game.

Movement: Implement afterburners

Afterburner makes the ship go faster, but depletes health. Get settings for how much health is depleted through the Settings state. The afterburner effect can possibly be a debuff applied to the player while afterburner is in effect, then maybe the EnergySystem will automatically reduce health on the player.

From Wikipedia:

Players achieve their ship's top speed by maintaining thrust. Each ship is also equipped with afterburners (Shift+Up/Down) which allow the ship to exceed its typical top speed; however, this gradually drains the ship's energy. When afterburners are disengaged, the ship's inertia returns to its normal top speed, not its speed with afterburners.

Gameplay: Scoring

Implement a player score - every kill or score from any module increases this score.

From Wikipedia:
Players primarily increase their score by killing other players. Each ship has a bounty, which is increased by collecting prizes, killing enemies, or other in-game mechanics. When a ship is killed, its bounty is added to the killer's score.

Client/player: Chat commands from player perspective

Situation: Currently no player commands or macros exist

Ask: Implement the commands below that make sense in a new server/client setup

PLAYER COMMANDS Description
--------------- -----
?usage displays your current usage information
?sheep display sheep message and play sheep sound
?buy displays list of things which can be bought
?buy buys the specified item, ex ?buy repel
?userid displays your unique user id
?owner displays name of arena owner (see server.cfg Owner:Name)
?packetloss displays your current packetloss percentages
?getsettings if you own the arena or have sysop powers, this allows you to change settings (same as ESC-C)
?setlevel if you own the arena or are a sysop, allows you to change the level/map
?arena displays list of public arenas (private ones too if you are sysop)
?time displays amount of time remaining in current game (timed games)
?crown displays how many kills you have left/need for a crown
?chat[name] set your chat channel to 'name' ex ?chat omega
?best displays your personal best in timed games
?flags displays who is carrying flags
?team displays team-mates of player ticked in stat box
?score show score in a soccer game
?ignore [who] ignores ticked player or 'who' if specified
?log [filename] logs all messagse to file specified (default name used if not) type ?log again to stop logging of messages
?target[x] sets your target bounty
?status displays status of your ship
?kill causes kill messages to be logged to message area
?ping displays your round-trip ping time to the server
?savemap [name.bmp] saves a bitmap of current map to specified file (default name used if not)
?go [name] go to next public arena, or a private arena if 'name' specified
?lines[xxx] show/set number of message lines
?zone [zone name] tell you which zone you are in or take you to specified zone (RZE  Running Zone East, etc...)
?spec display a list of who is specating you
?password pw Change your personal password to pw
?squadjoin name:password Join an existing squad
?squadcreate name:password Create a new squad
?squadleave Leave your existing squad
?squaddissolve Completely get rid of squad
?squadpassword pw Change squad password to pw
?squadkick playername Kick playername off of squad
?away [message] Sets/clears an away message
?lines[x] sets number of displayed message lines
?namelen[x] sets length of name portion in message area
?music[x] sets music volume (0 to 10)
?loadmacro load message macros
?savemacro save message macros
?setsettings used to upload a modifed .set file (as downloaded via ?getsettings) -- not recommended method...
?recycle allows arena owner to recycle the arena
?cheater (name) sends message to all online mods/smods/sysops and people logged into BanG (version 1.34.3 or higher. Or connected to bang)
?getnews downloads news.txt to your SS folder (version 1.34.2 or higher)
?scorereset Scoreresets yourself (version 1.34.4 or higher)
?lag Will display both ping and ploss at once (version 1.34.5 or higher)
?squadowner (squad name) tells owner of squad
?squadgrant (player name) gives ownership to that player
?squad (player name) tells you what squad they are currently in
?find (player name) tells you what zone they are in or not online
?get X:Y get a setting in .cfg in section X, varible Y
?set X:Y:Z set a setting in .cfg in section X, varible Y, setting Z
?obscene toggles if you view obscene messages or not
?getfile [filename] same as sysop's *getfile (version 1.34.5 or higher)
?putfile [filename] same as sysop's *putfile (version 1.34.5 or higher)
?squadlist lists all players on your squad (squadowner only command, SSC billing only)
?sound[x] change's ingame sounds (Continuum)
?enter toggles player entering arena msgs in middle/chat/no where (Continuum)
?leave toggles player leaving arena msgs in middle/chat/no where (Continuum)
?logbuffer [filename] starts a log, and will include all messages you have received since you logged into zone (Continuum)
?message name:message leave a message to that player (SSC Billing only)
?messages read all messages sent to you (SSC Billing only)
?nopubchat toggles viewing public messages (Continuum .37)
PLAYER MACROS Description
------------- -------
%red name(bty:flags) of nearest enemy flag carrier
%redname name of nearest enemy flag carrier
%redbounty bounty of nearest enemy flag carrier
%redflags number of flags of nearest enemy flag carrier
%tickname ticked name
%selfname your name
%squad your squad
%freq your frequency
%bounty your bounty
%flags your flag count
%energy your energy
%shield your shield time
%super your super time
%killer last person to kill you
%killed last person you killed
%coord your coords (IE: A4, J12)
%area your area (ie: Upper-Right, Middle)

Server/Settings: Implement a system to keep track of settings per map

Situation: Currently all settings are to some degree hard-coded via InfinityConstants.java in the api project.

Ask: Upgrade the SettingsSystem to load settings alongside arenas - if an arena has no specifically loaded setting, default server settings should be used. The system should allow for other server systems (or client status via rmi) to ask for a given setting, given a ship type, a location and whatever setting is required (eg. ship speed)
The location is used to ask the ArenaSystem in which arena the player is currently located. The SettingsSystem then returns the given setting to whatever system is asking.

Design guide:

  • Arena entities will have an area component giving the world bounds and a component to hold the settings
  • All settings relevant to a ship will be components on a ship
  • Show the arena with a basic shape
  • When players collide with the, do the check and add/remove the arena settings to the player
  • Settings relevant for teams will be given to a Teams entity with components relevant for teams (like captain etc)
  • etc.

From Minegobooms site:

10.2 Arena setting

All:AfterburnerEnergy
Type: Integer
Amount of energy required to have 'Afterburners' activated

All:AntiWarpEnergy
Type: Integer
Amount of energy required to have 'Anti-Warp' activated (thousanth
per tick)

All:AntiWarpStatu
Type: Integer
Range: 0-2
Whether ships are allowed to receive 'Anti-Warp' 0=no 1=ye
2=yes/start-with

All:AttachBounty
Type: Integer
Bounty required by ships to attach as a turret

All:BombBounceCount
Type: Integer
Number of times a ship's bombs bounce before they explode on impact

All:BombFireDelay
Type: Integer
delay that ship waits after a bomb is fired until another weapon may
be fired (in ticks)

All:BombFireEnergy
Type: Integer
Amount of energy it takes a ship to fire a single bomb

All:BombFireEnergyUpgrade
Type: Integer
Extra amount of energy it takes a ship to fire an upgraded bomb. i.e.
L2 = BombFireEnergy+BombFireEnergyUpgrade

All:BombSpeed
Type: Integer
How fast bombs travel

All:BombThrust
Type: Integer
Amount of back-thrust you receive when firing a bomb

All:BrickMax
Type: Integer
Maximum number of Bricks allowed in ship

All:BulletFireDelay
Type: Integer
Delay that ship waits after a bullet is fired until another weapon may
be fired (in ticks)

All:BulletFireEnergy
Type: Integer
Amount of energy it takes a ship to fire a single L1 bullet

All:BulletSpeed
Type: Integer
How fast bullets travel

All:BurstMax
Type: Integer
Maximum number of Bursts allowed in ship

All:BurstShrapnel
Type: Integer
Number of bullets released when a 'Burst' is activated

All:BurstSpeed
Type: Integer
How fast the burst shrapnel is for this ship

All:CloakEnergy
Type: Integer
Amount of energy required to have 'Cloak' activated (thousanths per
tick)

All:CloakStatu
Type: Integer
Range: 0-2
Whether ships are allowed to receive 'Cloak' 0=no 1=ye
2=yes/start-with

All:DamageFactor
Type: Integer
How likely a the ship is to take damamage (ie. lose a prize)
(0=special-case-never, 1=extremely likely, 5000=almost never)

All:DecoyMax
Type: Integer
Maximum number of Decoys allowed in ship

All:DisableFastShooting
Type: Boolean
If firing bullets, bombs, or thors is disabled after using
afterburners (1=enabled) (Cont .36+)

All:DoubleBarrel
Type: Boolean
Whether ships fire with double barrel bullet

All:EmpBomb
Type: Boolean
Whether ships fire EMP bomb

All:Gravity
Type: Integer
How strong of an effect the wormhole has on this ship (0 = none)

All:GravityTopSpeed
Type: Integer
Ship are allowed to move faster than their maximum speed while
effected by a wormhole. This determines how much faster they can go (0
= no extra speed)

All:InitialBomb
Type: Other
Range: 0-3
Initial level a ship's bombs fire

All:InitialBounty
Type: Integer
Number of 'Greens' given to ships when they start

All:InitialBrick
Type: Integer
Initial number of Bricks given to ships when they start

All:InitialBurst
Type: Integer
Initial number of Bursts given to ships when they start

All:InitialDecoy
Type: Integer
Initial number of Decoys given to ships when they start

All:InitialEnergy
Type: Integer
Initial amount of energy that the ship can have

All:InitialGun
Type: Integer
Range: 0-3
Initial level a ship's guns fire

All:InitialPortal
Type: Integer
Initial number of Portals given to ships when they start

All:InitialRecharge
Type: Integer
Initial recharge rate, or how quickly this ship recharges its energy

All:InitialRepel
Type: Integer
Initial number of Repels given to ships when they start

All:InitialRocket
Type: Integer
Initial number of Rockets given to ships when they start

All:InitialRotation
Type: Integer
Initial rotation rate of the ship (0 = can't rotate, 400 = full
rotation in 1 second)

All:InitialSpeed
Type: Integer
Initial speed of ship (0 = can't move)

All:InitialThor
Type: Integer
Initial number of Thor's Hammers given to ships when they start

All:InitialThrust
Type: Integer
Initial thrust of ship (0 = none)

All:LandmineFireDelay
Type: Integer
Delay that ship waits after a mine is fired until another weapon may
be fired (in ticks)

All:LandmineFireEnergy
Type: Integer
Amount of energy it takes a ship to place a single L1 mine

All:LandmineFireEnergyUpgrade
Type: Integer
Extra amount of energy it takes to place an upgraded landmine. i.e. L2
= LandmineFireEnergy+LandmineFireEnergyUpgrade

All:MaxBomb
Type: Integer
Range: 0-3
Maximum level a ship's bombs can fire

All:MaxGun
Type: Integer
Range: 0-3
Maximum level a ship's guns can fire

All:MaximumEnergy
Type: Integer
Maximum amount of energy that the ship can have

All:MaximumRecharge
Type: Integer
Maximum recharge rate, or how quickly this ship recharges its energy

All:MaximumRotation
Type: Integer
Maximum rotation rate of the ship (0 = can't rotate, 400 = full
rotation in 1 second)

All:MaximumSpeed
Type: Integer
Maximum speed of ship (0 = can't move)

All:MaximumThrust
Type: Integer
Maximum thrust of ship (0 = none)

All:MaxMine
Type: Integer
Maximum number of mines allowed in ship

All:MultiFireAngle
Type: Integer
Angle spread between multi-fire bullets and standard forward firing
bullets (111 = 1 degree, 1000 = 1 ship-rotation-point)

All:MultiFireDelay
Type: Integer
Delay that ship waits after a multifire bullet is fired until another
weapon may be fired (in ticks)

All:MultiFireEnergy
Type: Integer
Amount of energy it takes a ship to fire multifire L1 bullet

All:PortalMax
Type: Integer
Maximum number of Portals allowed in ship

All:PrizeShareLimit
Type: Integer
Maximum bounty that ships receive Team Prize

All:Radiu
Type: Integer
Default: 7
Range: 0-255
The ship's radius from center to outside, in pixels. (Cont .37+)

All:RepelMax
Type: Integer
Maximum number of Repels allowed in ship

All:RocketMax
Type: Integer
Maximum number of Rockets allowed in ship

All:RocketTime
Type: Integer
How long a Rocket lasts (in ticks)

All:SeeBombLevel
Type: Integer
Range: 0-4
If ship can see bombs on radar (0=Disabled, 1=All, 2=L2 and up, 3=L3
and up, 4=L4 bombs only)

All:SeeMine
Type: Boolean
Whether ships see mines on radar

All:ShieldsTime
Type: Integer
How long Shields lasts on the ship (in ticks)

All:ShrapnelMax
Type: Integer
Maximum amount of shrapnel released from a ship's bomb

All:ShrapnelRate
Type: Integer
Amount of additional shrapnel gained by a 'Shrapnel Upgrade' prize.

All:SoccerBallFriction
Type: Integer
Amount the friction on the soccer ball (how quickly it slows down -
higher numbers mean faster slowdown)

All:SoccerBallProximity
Type: Integer
How close the player must be in order to pick up ball (in pixels)

All:SoccerBallSpeed
Type: Integer
Initial speed given to the ball when fired by the carrier

All:SoccerThrowTime
Type: Integer
Time player has to carry soccer ball (in ticks)

All:StealthEnergy
Type: Integer
Amount of energy required to have 'Stealth' activated (thousanths per
tick)

All:StealthStatu
Type: Integer
Range: 0-2
Whether ships are allowed to receive 'Stealth' 0=no 1=ye
2=yes/start-with

All:SuperTime
Type: Integer
How long Super lasts on the ship (in ticks)

All:ThorMax
Type: Integer
Maximum number of Thor's Hammers allowed in ship

All:TurretLimit
Type: Integer
Number of turrets allowed on a ship

All:TurretSpeedPenalty
Type: Integer
Amount the ship's speed is decreased with a turret riding

All:TurretThrustPenalty
Type: Integer
Amount the ship's thrust is decreased with a turret riding

All:UpgradeEnergy
Type: Integer
Amount added per 'Energy Upgrade' Prize

All:UpgradeRecharge
Type: Integer
Amount added per 'Recharge Rate' Prize

All:UpgradeRotation
Type: Integer
Amount added per 'Rotation' Prize

All:UpgradeSpeed
Type: Integer
Amount added per 'Speed' Prize

All:UpgradeThrust
Type: Integer
Amount added per 'Thruster' Prize

All:XRadarEnergy
Type: Integer
Amount of energy required to have 'X-Radar' activated (thousanths per
tick)

All:XRadarStatu
Type: Integer
Range: 0-2
Whether ships are allowed to receive 'X-Radar' 0=no 1=ye
2=yes/start-with

Bomb:BBombDamagePercent
Type: Integer
Percentage of normal damage applied to a bouncing bomb (in 0.1%)

Bomb:BombAliveTime
Type: Integer
Time bomb is alive (in ticks)

Bomb:BombDamageLevel
Type: Integer
Amount of damage a bomb causes at its center point (for all bomb
levels)

Bomb:BombExplodeDelay
Type: Integer
How long after the proximity sensor is triggered before bomb explode

Bomb:BombExplodePixel
Type: Integer
Blast radius in pixels for an L1 bomb (L2 bombs double this, L3 bomb
triple this)

Bomb:BombSafety
Type: Boolean
Whether proximity bombs have a firing safety. If enemy ship is within
proximity radius, will it allow you to fire

Bomb:EBombDamagePercent
Type: Integer
Percentage of normal damage applied to an EMP bomb (in 0.1%)

Bomb:EBombShutdownTime
Type: Integer
Maximum time recharge is stopped on players hit with an EMP bomb

Bomb:JitterTime
Type: Integer
How long the screen jitters from a bomb hit (in ticks)

Bomb:ProximityDistance
Type: Integer
Radius of proximity trigger in tiles (each bomb level adds 1 to thi
amount)

Brick:BrickSpan
Type: Integer
Default: 10
The maximum length of a dropped brick.

Brick:BrickTime
Type: Integer
How long bricks last (in ticks)

Bullet:BulletAliveTime
Type: Integer
How long bullets live before disappearing (in ticks)

Bullet:BulletDamageLevel
Type: Integer
Maximum amount of damage that a L1 bullet will cause

Bullet:BulletDamageUpgrade
Type: Integer
Amount of extra damage each bullet level will cause

Bullet:ExactDamage
Type: Boolean
Default: No
Whether to use exact bullet damage (Cont .36+)

Burst:BurstDamageLevel
Type: Integer
Maximum amount of damage caused by a single burst bullet

Chat:RestrictChat
Type: Integer
Default: 0
This specifies an initial chat mask for the arena. Don't use thi
unless you know what you're doing.

Cost:PurchaseAnytime
Type: Boolean
Default: No
Whether players can buy items outside a safe zone.

Door:DoorDelay
Type: Integer
How often doors attempt to switch their state

Door:DoorMode
Type: Integer
Door mode (-2=all doors completely random, -1=weighted random (some
doors open more often than others), 0-255=fixed doors (1 bit of byte
for each door specifying whether it is open or not)

Flag:CarryFlag
Type: Integer
Whether the flags can be picked up and carried (0=no, 1=yes, 2=yes-one
at a time)

Flag:DropOwned
Type: Boolean
Default: Ye
Whether flags you drop are owned by your team.

Flag:DropRadiu
Type: Integer
Default: 2
How far from a player do dropped flags appear (in tiles).

Flag:EnterGameFlaggingDelay
Type: Integer
Time a new player must wait before they are allowed to see flag

Flag:FlagBlankDelay
Type: Integer
Amount of time that a user can get no data from server before flag
are hidden from view for 10 second

Flag:FlagCount
Type: Other
Default: 0
Range: 0-256
How many flags are present in this arena.

Flag:FlagDropDelay
Type: Integer
Time before flag is dropped by carrier (0=never)

Flag:FlagDropResetReward
Type: Integer
Minimum kill reward that a player must get in order to have his flag
drop timer reset

Flag:FlaggerBombFireDelay
Type: Integer
Delay given to flaggers for firing bombs (zero is ships normal firing
rate) (do not set this number less than 20)

Flag:FlaggerBombUpgrade
Type: Boolean
Whether the flaggers get a bomb upgrade

Flag:FlaggerDamagePercent
Type: Integer
Percentage of normal damage received by flaggers (in 0.1%)

Flag:FlaggerFireCostPercent
Type: Integer
Percentage of normal weapon firing cost for flaggers (in 0.1%)

Flag:FlaggerGunUpgrade
Type: Boolean
Whether the flaggers get a gun upgrade

Flag:FlaggerKillMultiplier
Type: Integer
Number of times more points are given to a flagger (1 = double points,
2 = triple points)

Flag:FlaggerOnRadar
Type: Boolean
Whether the flaggers appear on radar in red

Flag:FlaggerSpeedAdjustment
Type: Integer
Amount of speed adjustment player carrying flag gets (negative number
mean slower)

Flag:FlaggerThrustAdjustment
Type: Integer
Amount of thrust adjustment player carrying flag gets (negative
numbers mean less thrust)

Flag:FlagReward
Type: Integer
Requires module: points_flag
Default: 5000
The basic flag reward is calculated as (players in arena)2 * reward /
1000.

Flag:FriendlyTransfer
Type: Boolean
Default: Ye
Whether you get a teammates flags when you kill him.

Flag:GameType
Type: Enumerated
Default: $FLAGGAME_NONE
The flag game type for this arena. $FLAGGAME_NONE means no flag game,
$FLAGGAME_BASIC is a standard warzone or running zone game, and
$FLAGGAME_TURF specifies immobile flags.

Flag:NeutOwned
Type: Boolean
Default: No
Whether flags you neut-drop are owned by your team.

Flag:NeutRadiu
Type: Integer
Default: 2
How far from a player do neut-dropped flags appear (in tiles).

Flag:NoDataFlagDropDelay
Type: Integer
Amount of time that a user can get no data from server before flags he
is carrying are dropped

Flag:PersistentTurfOwner
Type: Boolean
Default: Ye
Whether ownership of turf flags persists even when the arena is empty
(or the server crashes).

Flag:ResetDelay
Type: Integer
Default: 0
The length of the delay between flag games.

Flag:SpawnRadiu
Type: Integer
Default: 50
How far from the spawn center that new flags spawn (in tiles).

Flag:SpawnX
Type: Integer
Default: 512
The X coordinate that new flags spawn at (in tiles).

Flag:SpawnY
Type: Integer
Default: 512
The Y coordinate that new flags spawn at (in tiles).

Flag:SplitPoint
Type: Boolean
Default: No
Whether to split a flag reward between the members of a freq or give
them each the full amount.

General:LevelFile
Type: String
A list of extra files to send to the client for downloading. A '+'
before any file means it's marked as optional.

General:Map
Type: String
The name of the level file for this arena.

General:NeedCap
Type: String
Requires module: arenaperm
If this setting is present for an arena, any player entering the arena
must have the capability specified this setting. This can be used to
restrict arenas to certain groups of players.

General:ScoreGroup
Type: String
Default: (arena name)
If multiple arenas share the same value for this setting, they will
share scores for intervals that allow shared scores.

Kill:BountyIncreaseForKill
Type: Integer
Number of points added to players bounty each time he kills an
opponent

Kill:EnterDelay
Type: Integer
How long after a player dies before he can re-enter the game (in
ticks)

Kill:FlagValue
Type: Integer
Default: 100
The number of extra points to give for each flag a killed player wa
carrying.

Kill:JackpotBountyPercent
Type: Integer
Default: 0
The percent of a player's bounty added to the jackpot on each kill.
Units: 0.1%.

Kill:MaxBonu
Type: Integer
FIXME: fill this in

Kill:MaxPenalty
Type: Integer
FIXME: fill this in

Kill:RewardBase
Type: Integer
FIXME: fill this in

Lag:C2SLossToDisallowFlag
Type: Integer
Default: 50
The C2S packetloss when a player isn't allowed to pick up flags or
balls. Units 0.1%.

Lag:C2SLossToSpec
Type: Integer
Default: 150
The C2S packetloss at which to force a player to spec. Units 0.1%.

Lag:PingToDisallowFlag
Type: Integer
Default: 500
The average ping when a player isn't allowed to pick up flags or
balls.

Lag:PingToIgnoreAllWeapon
Type: Integer
Default: 1000
The average ping when all weapons should be ignored.

Lag:PingToSpec
Type: Integer
Default: 600
The average ping at which to force a player to spec.

Lag:PingToStartIgnoringWeapon
Type: Integer
Default: 300
The average ping to start ignoring weapons at.

Lag:S2CLossToDisallowFlag
Type: Integer
Default: 50
The S2C packetloss when a player isn't allowed to pick up flags or
balls. Units 0.1%.

Lag:S2CLossToIgnoreAllWeapon
Type: Integer
Default: 500
The S2C packetloss when all weapons should be ignored. Units 0.1%.

Lag:S2CLossToSpec
Type: Integer
Default: 150
The S2C packetloss at which to force a player to spec. Units 0.1%.

Lag:S2CLossToStartIgnoringWeapon
Type: Integer
Default: 40
The S2C packetloss to start ignoring weapons at. Units 0.1%.

Lag:SpikeToSpec
Type: Integer
Default: 3000
The amount of time the server can get no data from a player before
forcing him to spectator mode (in ticks).

Lag:WeaponLossToDisallowFlag
Type: Integer
Default: 50
The weapon packetloss when a player isn't allowed to pick up flags or
balls. Units 0.1%.

Lag:WeaponLossToIgnoreAllWeapon
Type: Integer
Default: 500
The weapon packetloss when all weapons should be ignored. Units 0.1%.

Lag:WeaponLossToSpec
Type: Integer
Default: 150
The weapon packetloss at which to force a player to spec. Units 0.1%.

Lag:WeaponLossToStartIgnoringWeapon
Type: Integer
Default: 40
The weapon packetloss to start ignoring weapons at. Units 0.1%.

Latency:ClientSlowPacketSampleSize
Type: Integer
Number of packets to sample S2C before checking for kickout

Latency:ClientSlowPacketTime
Type: Integer
Amount of latency S2C that constitutes a slow packet

Latency:S2CNoDataKickoutDelay
Type: Integer
Amount of time a user can receive no data from server before
connection is terminated

Latency:SendRoutePercent
Type: Integer
Percentage of the ping time that is spent on the C2S portion of the
ping (used in more accurately syncronizing clocks)

Message:AllowAudioMessage
Type: Boolean
Whether players can send audio message

Mine:MineAliveTime
Type: Integer
Time that mines are active (in ticks)

Mine:TeamMaxMine
Type: Integer
Maximum number of mines allowed to be placed by an entire team

Misc:ActivateAppShutdownTime
Type: Integer
Amount of time a ship is shutdown after application is reactivated

Misc:AllowSavedShip
Type: Integer
Whether saved ships are allowed (do not allow saved ship in zone
where sub-arenas may have differing parameters)

Misc:BounceFactor
Type: Integer
How bouncy the walls are (16 = no speed loss)

Misc:DecoyAliveTime
Type: Integer
Time a decoy is alive (in ticks)

Misc:ExtraPositionData
Type: Integer
Whether regular players receive sysop data about a ship

Misc:FrequencyShift
Type: Integer
Amount of random frequency shift applied to sounds in the game

Misc:GreetMessage
Type: String
The message to send to each player on entering the arena.

Misc:NearDeathLevel
Type: Integer
Amount of energy that constitutes a near-death experience (ship
bounty will be decreased by 1 when this occurs - used for dueling
zone)

Misc:SafetyLimit
Type: Integer
Amount of time that can be spent in the safe zone (in ticks)

Misc:SeeEnergy
Type: Enumerated
Default: $SEE_NONE
Whose energy levels everyone can see: $SEE_NONE means nobody else's,
$SEE_ALL is everyone's, $SEE_TEAM is only teammates, and $SEE_SPEC i
only the player you're spectating.

Misc:SendPositionDelay
Type: Integer
Amount of time between position packets sent by client

Misc:SheepMessage
Type: String
The message that appears when someone says ?sheep

Misc:SlowFrameCheck
Type: Integer
Whether to check for slow frames on the client (possible cheat
technique) (flawed on some machines, do not use)

Misc:SpecSeeEnergy
Type: Enumerated
Default: $SEE_NONE
Whose energy levels spectators can see. Check 'SeeEnergy' for the
description of the options.

Misc:TeamKillPoint
Type: Boolean
Default: No
Whether points are awarded for a team-kill.

Misc:TickerDelay
Type: Integer
Amount of time between ticker help message

Misc:TimedGame
Type: Integer
Default: 0
How long the game timer lasts (in ticks). Zero to disable.

Misc:VictoryMusic
Type: Integer
Whether the zone plays victory music or not

Misc:WarpPointDelay
Type: Integer
How long a portal is active

Misc:WarpRadiusLimit
Type: Integer
When ships are randomly placed in the arena, this parameter will limit
how far from the center of the arena they can be placed
(1024=anywhere)

Modules:AttachModule
Type: String
This is a list of modules that you want to take effect in this arena.
Not all modules need to be attached to arenas to function, but some
do.

Periodic:RewardDelay
Type: Integer
Default: 0
The interval between periodic rewards (in ticks). Zero to disable.

Periodic:RewardMinimumPlayer
Type: Integer
Default: 0
The minimum players necessary in the arena to give out periodic
rewards.

Periodic:RewardPoint
Type: Integer
Requires module: points_periodic
Default: 100
Periodic rewards are calculated as follows: If this setting i
positive, you get this many points per flag. If it's negative, you get
it's absolute value points per flag, times the number of players in
the arena.

Prize:DeathPrizeTime
Type: Integer
How long the prize exists that appears after killing somebody

Prize:EngineShutdownTime
Type: Integer
Time the player is affected by an 'Engine Shutdown' Prize (in ticks)

Prize:MinimumVirtual
Type: Integer
Distance from center of arena that prizes/flags/soccer-balls will
spawn

Prize:MultiPrizeCount
Type: Integer
Number of random greens given with a MultiPrize

Prize:PrizeDelay
Type: Integer
How often prizes are regenerated (in ticks)

Prize:PrizeFactor
Type: Integer
Number of prizes hidden is based on number of players in game. Thi
number adjusts the formula, higher numbers mean more prizes. (Note:
10000 is max, 10 greens per person)

Prize:PrizeHideCount
Type: Integer
Number of prizes that are regenerated every PrizeDelay

Prize:PrizeMaxExist
Type: Integer
Maximum amount of time that a hidden prize will remain on screen.
(actual time is random)

Prize:PrizeMinExist
Type: Integer
Minimum amount of time that a hidden prize will remain on screen.
(actual time is random)

Prize:PrizeNegativeFactor
Type: Integer
Odds of getting a negative prize. (1 = every prize, 32000 = extremely
rare)

Prize:TakePrizeReliable
Type: Integer
Whether prize packets are sent reliably (C2S)

Prize:UpgradeVirtual
Type: Integer
Amount of additional distance added to MinimumVirtual for each player
that is in the game

PrizeWeight:AllWeapon
Type: Integer
Likelihood of 'Super!' prize appearing

PrizeWeight:AntiWarp
Type: Integer
Likelihood of 'AntiWarp' prize appearing

PrizeWeight:Bomb
Type: Integer
Likelihood of 'Bomb Upgrade' prize appearing

PrizeWeight:BouncingBullet
Type: Integer
Likelihood of 'Bouncing Bullets' prize appearing

PrizeWeight:Brick
Type: Integer
Likelihood of 'Brick' prize appearing

PrizeWeight:Burst
Type: Integer
Likelihood of 'Burst' prize appearing

PrizeWeight:Cloak
Type: Integer
Likelihood of 'Cloak' prize appearing

PrizeWeight:Decoy
Type: Integer
Likelihood of 'Decoy' prize appearing

PrizeWeight:Energy
Type: Integer
Likelihood of 'Energy Upgrade' prize appearing

PrizeWeight:Glue
Type: Integer
Likelihood of 'Engine Shutdown' prize appearing

PrizeWeight:Gun
Type: Integer
Likelihood of 'Gun Upgrade' prize appearing

PrizeWeight:MultiFire
Type: Integer
Likelihood of 'MultiFire' prize appearing

PrizeWeight:MultiPrize
Type: Integer
Likelihood of 'Multi-Prize' prize appearing

PrizeWeight:Portal
Type: Integer
Likelihood of 'Portal' prize appearing

PrizeWeight:Proximity
Type: Integer
Likelihood of 'Proximity Bomb' prize appearing

PrizeWeight:QuickCharge
Type: Integer
Likelihood of 'Recharge' prize appearing

PrizeWeight:Recharge
Type: Integer
Likelihood of 'Full Charge' prize appearing (not 'Recharge')

PrizeWeight:Repel
Type: Integer
Likelihood of 'Repel' prize appearing

PrizeWeight:Rocket
Type: Integer
Likelihood of 'Rocket' prize appearing

PrizeWeight:Rotation
Type: Integer
Likelihood of 'Rotation' prize appearing

PrizeWeight:Shield
Type: Integer
Likelihood of 'Shields' prize appearing

PrizeWeight:Shrapnel
Type: Integer
Likelihood of 'Shrapnel Upgrade' prize appearing

PrizeWeight:Stealth
Type: Integer
Likelihood of 'Stealth' prize appearing

PrizeWeight:Thor
Type: Integer
Likelihood of 'Thor' prize appearing

PrizeWeight:Thruster
Type: Integer
Likelihood of 'Thruster' prize appearing

PrizeWeight:TopSpeed
Type: Integer
Likelihood of 'Speed' prize appearing

PrizeWeight:Warp
Type: Integer
Likelihood of 'Warp' prize appearing

PrizeWeight:XRadar
Type: Integer
Likelihood of 'XRadar' prize appearing

Radar:MapZoomFactor
Type: Integer
A number representing how far you can see on radar

Radar:RadarMode
Type: Integer
Radar mode (0=normal, 1=half/half, 2=quarters, 3=half/half-see team
mates, 4=quarters-see team mates)

Radar:RadarNeutralSize
Type: Integer
Size of area between blinded radar zones (in pixels)

Repel:RepelDistance
Type: Integer
Number of pixels from the player that are affected by a repel

Repel:RepelSpeed
Type: Integer
Speed at which players are repelled

Repel:RepelTime
Type: Integer
Time players are affected by the repel (in ticks)

Rocket:RocketSpeed
Type: Integer
Speed value given while a rocket is active

Rocket:RocketThrust
Type: Integer
Thrust value given while a rocket is active

Shrapnel:InactiveShrapDamage
Type: Integer
Amount of damage shrapnel causes in it's first 1/4 second of life

Shrapnel:Random
Type: Boolean
Whether shrapnel spreads in circular or random pattern

Shrapnel:ShrapnelDamagePercent
Type: Integer
Percentage of normal damage applied to shrapnel (relative to bullet
of same level) (in 0.1%)

Shrapnel:ShrapnelSpeed
Type: Integer
Speed that shrapnel travel

Soccer:AllowBomb
Type: Boolean
Whether the ball carrier can fire his bomb

Soccer:AllowGoalByDeath
Type: Boolean
Default: No
Whether a goal is scored if a player dies carrying the ball on a goal
tile.

Soccer:AllowGun
Type: Boolean
Whether the ball carrier can fire his gun

Soccer:BallBlankDelay
Type: Integer
Amount of time a player can receive no data from server and still pick
up the soccer ball

Soccer:BallBounce
Type: Boolean
Whether the ball bounces off wall

Soccer:BallCount
Type: Integer
Default: 0
The number of balls in this arena.

Soccer:BallLocation
Type: Boolean
Whether the balls location is displayed at all times or not

Soccer:GoalDelay
Type: Integer
Default: 0
How long after a goal before the ball appears (in ticks).

Soccer:Mode
Type: Enumerated
Goal configuration ($GOAL_ALL, $GOAL_LEFTRIGHT, $GOAL_TOPBOTTOM,
$GOAL_CORNERS_3_1, $GOAL_CORNERS_1_3, $GOAL_SIDES_3_1,
$GOAL_SIDES_1_3)

Soccer:NewGameDelay
Type: Integer
Default: -3000
How long to wait between games. If this is negative, the actual delay
is random, between zero and the absolute value. Units: ticks.

Soccer:PassDelay
Type: Integer
How long after the ball is fired before anybody can pick it up (in
ticks)

Soccer:SendTime
Type: Integer
Default: 1000
Range: 100-3000
How often the server sends ball positions (in ticks).

Soccer:SpawnRadiu
Type: Integer
Default: 20
How far from the spawn center the ball can spawn (in tiles).

Soccer:SpawnX
Type: Integer
Default: 512
Range: 0-1023
The X coordinate that the ball spawns at (in tiles).

Soccer:SpawnY
Type: Integer
Default: 512
Range: 0-1023
The Y coordinate that the ball spawns at (in tiles).

Soccer:UseFlagger
Type: Boolean
If player with soccer ball should use the Flag:Flagger* ship
adjustments or not

Spectator:HideFlag
Type: Boolean
Default: No
Whether spectators are disallowed from haveing X radar (Cont .36+)

Team:AllowFreqOwner
Type: Boolean
Default: Ye
Whether to enable the freq ownership feature in this arena.

Team:DesiredTeam
Type: Integer
Default: 2
The number of teams that the freq balancer will form as players enter.

Team:FrequencyShipType
Type: Boolean
Default: No
If this is set, freq 0 will only be allowed to use warbirds, freq 1
can only use javelins, etc.

Team:IncludeSpectator
Type: Boolean
Default: No
Whether to include spectators when enforcing maximum freq sizes.

Team:MaxFrequency
Type: Integer
Default: 9999
Range: 0-9999
The highest frequency allowed. Set this below PrivFreqStart to
disallow private freqs.

Team:MaxPerPrivateTeam
Type: Integer
Default: 0
The maximum number of players on a private freq. Zero means no limit.

Team:MaxPerTeam
Type: Integer
Default: 0
The maximum number of players on a public freq. Zero means no limit.

Team:PrivFreqStart
Type: Integer
Default: 100
Range: 0-9999
Freqs above this value are considered private freqs.

Team:SpectatorFrequency
Type: Integer
Default: 8025
Range: 0-9999
The frequency that spectators are assigned to, by default.

Toggle:AntiWarpPixel
Type: Integer
Distance Anti-Warp affects other players (in pixels) (note: enemy must
also be on radar)

Wormhole:GravityBomb
Type: Boolean
Whether a wormhole affects bomb

Wormhole:SwitchTime
Type: Integer
How often the wormhole switches its destination

Server/Settings: Apply rules for a player based on where they are in the world

Acceptance criteria:

Implement or update Settings-system to allow lookup of settings based on world location. Other systems will call this system to lookup rules (e.g. physics, how fast should the player move etc.). Should return a "rule" object of some sort (or maybe just primitives?)

Scenario:

  1. Player is located in a no-map zone (either no map is loaded or player is outside loaded map bounds), server default rules apply
  2. Map is spawned where player is, rules reset to fit new map rules
  3. Player moves out of map and default rules is applied again
  4. Player moves between maps, rules updated on border to fit new map

Get logging working again

I suggest for now we use SLF4J's simple binding. I have no specific/complex/advanced logging requirements. If we need to, we can go back to

Server: Master server

Implement a server that subspace infinity servers can connect to. This server is named Master Server (in old Subspace lingo I think that's the Biller)

Master server keeps track of:

  1. Player logins (name/passwords)
  2. Zones (Subspace Infinity servers) pings and player counts

Server/security: Access roles

Situation: Currently there's no implementation of login or security access levels

Ask: Look into and design some of the most necessary access levels.

As inspiration: Taken from minegoboom's website: http://www.minegoboom.com/server/commands.html

See also: http://wiki.minegoboom.com/index.php/Server_Setup

SYSOP COMMANDS

-MISC- Description
*stat Displays server statistics
*addword Adds word to the obscene list
*shutdown [exename] Shutdowns server (terminates process) optionally runs exename.exe
s Set server.ini file variable, ex sMisc:MaxPlayers:4
g Get server.ini file variable, ex gMisc:MaxPlayers
*log Display a log of messages printed on server screen
*energy Turns on viewing of other players energy levels (if sent privately, let's person it is sent to see energy levels)
*system (command) Do DOS command access (priv to player or public to server) -REMOVED- (VIE Subgame)
*addip (ip) Adds ip# to ipblock.txt -REMOVED- (VIE Subgame)
*removeip (ip) Removes ip from ipblock.txt -REMOVED- (VIE Subgame)
*listip Lists all ip# from ipblock.txt -REMOVED- (VIE Subgame) ipblock.txt still works for blocking IP#
*addmachine (id) Adds machineID# to idblock.txt (version 1.34.5 or higher)
*removemachine (id) Removes id# from idblock.txt (version 1.34.5 or higher)
*listmachine Lists all id# from idblock.txt (version 1.34.5 or higher) idblock.txt still works for blocking ID#
*ufo Give yourself UFO ship. Can be turned on and off (version 1.34.1 or higher)
*super Give yourself the super ship with everything (version 1.34.1 or higher)
*mirror Shows what everyone sees you as. No one else can see it, and will always be a spider (version 1.34.1 or higher)
*getnews Downloads news.txt to your comp (version 1.34.2 to 1.34.4)
*putnews Uploads news.txt from your SS folder to server (version 1.34.2 to 1.34.4)
*getsysoplist Downloads sysop.txt (version 1.34.2 to 1.34.4)
*putsysoplist Uploads sysop.txt (version 1.34.2 to 1.34.4)
*getsmodlist Downloads smod.txt (version 1.34.2 to 1.34.4)
*putsmodlist Uploads smod.txt (version 1.34.2 to 1.34.4)
*getobscene Downloads obscene.txt (version 1.34.2 to 1.34.4)
*putobscene Uloads obscene.txt (version 1.34.2 to 1.34.4)
*getfile (name) Downloads file from server (version 1.34.5 or higher)
*putfile (name) Uploads file from server. Cannot upload some files (.dll, .exe, etc) (version 1.34.5 or higher)
*delfile (name) Deletes file from server. Cannot delete some files (.dll, .exe, etc) (version 1.34.5 or higher)
*version Tells what subgame version it is. (version 1.34.6 or higher)
*lag List all player's quick lag info (version 1.34.8 or higher)
PRIVATELY SENT - Description
*sysop Sent privately, grants sysop priviledges to player (temporary, allows no sounds)
*smoderator Sent privately, grants super moderator priviledges to player (temporary, allows no sounds)
*monitor # Shows you all commands from player at certain text levels -REMOVED- (VIE Subgame) 0: Public, 1:  priv/public, 2: priv/public/team, 3: priv/public/team/chat, 4: all messages
*say (text) Makes a player say something without them really typing it (will allow ? and * commands through this) -REMOVED- (VIE Subgame)
*getfile (name) Download file from player's computer (priv one) -REMOVED- (VIE Subgame)
*putfile (name) Uploads file to player's computer (priv one) -REMOVED- (VIE Subgame)
*thor # Sets players thor level to #. 0
*lowbandwidth # (#  0 or 1) 0 means normal, 1 means gets/sends every packet doubled to help stop lag (version 1.34.1 or higher)
*messagelogging # Sent privately, detects if a player is logging messages and at what level if a sysop (version 1.34.4 or higher)
*super Gives someone super ship (1.34.4 or higher)
*ufo Gives someone ufo ship (1.34.4 or higher)
*einfo Displays player's Userid# and their screen rez (1.34.5 or higher) Also displays which client they are using [VIE or Continuum] (1.34.9 or higher, 1.34.10 or higher has client version)
*bandwidth # Will set (or display) their CutbackWatermark. If you set theirs, will override Latency:CutbackWatermark for them (version 1.34.11h or higher)
*points # Will add points to player. If negitive, will subtract. WARNING: Will set ALL points to flag points (avg kill goes to 0). (version .134.11 or higher)

SUPER MODERATOR COMMANDS

MISC - Description
*szone Sends message to all zones with same scoreid as current zone
*zone Send message to all arenas in this zone
*getlist Get list of people permitted (to file)
*putlist Put list of people permitted (permit.txt)
*getmodlist Get list of people who are moderators
*putmodlist Put list of people who are moderators (moderate.txt)
*recycle Recycles the server (kicks everybody off)
*restart Restarts timed games (speed zone)
*prize Grant all ships random prizes, sent privately, grants to that ship only
*prize # Grant a specific prize to all players, sent privately, grants to that ship only (negative prizes take away -- see list above)
*listmod Will display all players that have mod/smod/sysop curretly logged into the zone (1.34.4 or higher)
PRIVATELY SENT - Description
*info Sent privately, displays lot of player info
*where Sent privately, tells location of player
*trace Sent privately, tells server to do a tracert to that person (NOTE: Needs the subgame version 1.34.1 or higher to be named subgame2.exe or else will not work)
*moderator Sent privately, makes person it is sent to a moderator for that session (temporary, allows no sounds)
MODERATOR COMMANDS Description
*arena Send message to this arena
*permit Permit person to enter restricted zone
*revoke Revoke permission to enter restricted zone
*beginlog [text] Begin logging game session (put text at top of log)
*endlog End logging game session (will auto send log file to you)
*shipreset Reset all ships to 0 bounty, sent privately, resets ship of person sent to
*scorereset Sent privately, sets players stats to zero, sent publicly, reset score off all players in zone
*flagreset Resets the flag game
*timereset Resets timer on timed game
*banner Turns on your banner (despite point requirements)
*lock Locks game so nobody can enter (toggle)(everybody put in spectator mode)
*lockspec Toggles the lock*'s to effect only spectators or everyone.
*lockteam Locks team messages (the " ones)
*lockprivate Locks private messages (the / and :: ones)
*lockpublic Locks public messages (good for no-blue matches)
*lockchat Locks chat messages (the ; type)
*lockall Locks all messages (public, priv, etc)
*timer Start a timer going (notifies players periodically)
*kill [minutes] Sent privately, kicks player off (for specified minutes optionally)
*shutup Sent privately, prevents person from being able to talk (watch out, if you do this to yourself, you can't undo unless you exit game and re-enter)
*spec Sent privately, forces specified player into spec mode (locks him there too)
*specall Send publicly, specs everyone. Doesn't lock them there. Can't spec people with higher level (version 1.34.3 or higher)
*setship # Sent privately, sets players ship to #, can't do to higher level (1 - 8) (version 1.34.2 or higher)
*setfreq #### Sent privately, sets players freq to #, can't do to higher level (0 - 9999) (version 1.34.2 or higher)
*locate (name) If player is in zone, tells you which arena (version 1.34.2 or higher)
*watchgreen As long as that player stays in that arena, you can see every green he gets (priv) (version 1.34.5 or higher)
*listban Will display all people banned by *kill, and their time (version 1.34.5 or higher)
*removeban (ID#) Will remove machineID# ban by *kill (version 1.34.5 or higher)
*packetloss Will display to you player's Packetloss -REMOVED- (version 1.34.5 pre-release)
*lag Will show player's Ploss and Ping (version 1.34.5 or higher, .6 and higher have weapon ploss also)
*greeninfo Private command, displays greenID# and their count of getting that green since last shipreset (version 1.34.9 or higher)
*flags Display flag's coords (version 1.34.9 or higher)
*warn [Text] Sent privately, will msg player with a predetermined mod sound in red text with the format: Moderator Warning: [Message] - (Mod Name) (version 1.34.10 or higher)
*warpto [X] [Y] Sent privately, will warp player to certain X,Y coords (ie: *warpto 512 512
*relkills # If sent # of 1, you will always get reliable kills. Otherwise, if < 200 bty kills, may not be (version 1.34.11h or higher)
*tinfo Sent privately, display's player's time history information (version 1.34.12pr2 or higher)
*watchdamage Sent privately, toggles viewing player's damage information (version 1.34.12pr4 or higher) [Continuum .37]+B10

Syops have all the powers listed above.
Super-Moderator have all the powers above but the Sysop powers.
Moderators have all the abilitys above but Sysop powers, Super-Moderator powers, and Prize powers.

When a Sysop and/or Super-Moderator gives the temporary ability of Sysop, Smod, or Mod to a player, that player gains all abilitys of those powers but since it is temp powers, they do not get sounds. And if you give anyone the Sysop, Smod, or Mod powers, please place there names in the moderator.txt so that if they don't add the Power-Password to there passwords, they still will get the ability to play sounds. IE If you give someone your Smod password, add them to you moderator.txt file so they don't have to add the Power-PW to there passwords, but just have to type it in the game. And, unless you really trust them, don't give anyone your Mod Power-Password. Add there name to the moderator.txt file instead. It is easier for them, and better for you. And remember, that you can not turn off one of these commands to a player with powers, so watch out who you give it to. The last bit of informantion is that a lower power class (Mods/smods) can not use the following commands on a player with higher powers (Smods/Sysop) unless they are at the same power level. The commands they can't use on higher powers are *spec, *shutup, *kill. If you are a Smod/Sysop, you can use the *moderator command on a moderator to temporay cancel out there powers. Sysops can do this to Smods. Thanx, Mine GO BOOM

Server/Map: Load/unload maps

Acceptance criteria:

Implement map-system that keeps track of loaded maps and their coordinates (all maps are equal size), (maybe map locations are managed by server), note: there may already be a mapsystem drafted
Implement commands to load a map, giving "name"
Implement commands to unload a map given the name

Scenario:

  1. Server starts empty (no maps loaded on startup)
  2. Type in command to load a map from the assets library
  3. Server loads that map
  4. Type in command to load second map in a different location
  5. Server loads second map and the rules
  6. Type in command to unload a map
  7. Server unloads the map

Client/GUI: HUD display

Implement a basic player HUD:

On the server, there should be a system keeping track of player stats

On the client, create a hud state that uses the HostState.java to retrieve the above system and get the stats displayed

  • Location/Position (bin/area and world coordinates)
  • Energy / health
  • Freq / team
  • Flag info (maybe just how many flags are owned by client freq)
  • Bounty (goes up with kills or greens)
  • Timer (only needed if a module loads a timer
  • Spacebucks (score)

Map: Safe-zones

Implement fly-over safe zones (see the map upgrade work item)

From Wikipedia
Safe zones allow a players to evade enemies or simply take a break from the game. While in a safe zone, a ship cannot take damage but also cannot fire. Most safe zones have a time limit; if a player stays in a safe zone too long, he is kicked from the game and must rejoin the zone. This prevents players from camping out in a safe zone and leaving their computer idle for an extended period of time in order to maintain their state in the game.

Server: Web interface to the running server

Implement a web interface that provides overview of players and bans.

Features the web interface provides access to:

  1. Online players
  2. Players that have historically logged into the running server
  3. Bans
  4. Loaded maps (1024x1024) with their respective loaded settings
  5. Running modules

Module: Flag Game: Bounty Rabbit

Implement a module that can be loaded and unloaded (see examples in the Module sub project)

Bounty Rabbit – One player is the rabbit, and has the 'flag'. The rabbit's kills are worth 101 points while a regular players' kills are only worth 1 point. Kill the current rabbit to become the new rabbit. The player with the most points at the end of the game wins. This game is usually run by bots in a main arena or sub-arenas.

Server: Squadrons

Implement squadrons for players to join and manage. Squadrons have their own chat channel that all players in the squadron can see and chat to.

From Wikipedia:

Many SubSpace players are organized into squads. These squadrons serve the same purpose as clans or teams do in other online games and allow players to cooperate and improve their skills, as well as to become more familiar with fellow players. In addition, many squads compete in competitive leagues hosted by various zones. Dueling is another favorite pastime and many zones have separate arenas for this purpose alone.

Module: Flag Game: Turf

Implement a module that can be loaded and unloaded (see examples in Module sub project)

Turf – Territorial flag game in which flags are located at specific locations around the map. Ownership is claimed by simply passing over the flag by any player. Turf games can either be won or involve periodic point rewards.

This is somewhat similar to King of The Hill (where there's only one flag)

Server/Mods: Implement Mod Pack functionality

Implement a system that can load groovy mod packs (much like the dynamic loading of java classes that is in already):

https://github.com/pspeed42/moss/tree/master/action/src/main/java/com/simsilica/action
https://github.com/pspeed42/moss/tree/master/mmod

See also: https://github.com/assofohdz/moss/blob/master/tools/blocked2/src/main/java/com/simsilica/blocked/ScriptState.java

and https://github.com/assofohdz/moss/tree/master/tools/mapper/sample/scripts

This is a lot of new stuff to take in, but would be very cool to have in.

  • Get action and actionenvironment implemented
  • Get mmod implemented
  • Get ScriptState implemented and running
  • How to test?
  • Write a guide/doc on how to use mod packs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.