Space Combat

PvP

NodeRunners is a player-controlled universe. Pilots are able to engage with any other pilots except for three conditions:

  • The players in question are in the hypershield (Zone 1, Nodes A4-A16)

  • The target player is from the same guild

  • The player does not have guns equipped on their ship.

Rewards for ship destruction

Players who destroy another player's ship will receive a reward for the kill. The "PK Reward" will be paid out to the player if/when the ship in question has been salvaged.

Penalties for ship destruction

Upon ship destruction, pilots themselves will be unaffected (other than the “death” statistic being updated). However, the destroyed ship will become unusable until it is salvaged. Salvaging a ship requires the player to pay a small percentage of the ship's market value to use the ship again.

Combat Factors (Basic)

The combat system in NodeRunners is intricate and involves some luck and the following factors.

Attacker:

  • Number of Guns

  • Each gun's firing rate

  • Each gun's damage

  • Each gun's accuracy

Defender:

  • Ship hull (hit points)

  • Max shields

  • Shield applied at time of defense

  • Evasion

Combat Factors (Advanced)

When Alice attacks a Bob, this is the order of operations in how we calculate damage that Bob will receive if any:

Definitions:

  • accuracy: value taken from gun that typically ranges from 40 to 60

  • evasion: value take from ships that typically ranges from 5 to 50

  • shieldValue: value taken from ships that typically ranges from 40 to 60

  • shieldSlider: value taken from user input which can be 0, 25, 50, 75, or 100 (to be used as percentages)

  • firingRate: value taken from guns that range from 80 to 90

  • randAccuracy: that's just random number from 1 to 100

  • randEvasion: that's just random number from 1 to 100

Firing Rate

  1. If Alice has 4 guns we calculate the playerAverageFiringRate from those guns

  2. We then calculate the timeBetweenShots (in seconds) = 35 / playerAverageFiringRate

Note we actually subtract the 80 or 90 firing rate values of each gun by 50 so that we amplify their difference so that players feel more of the difference between different gun’s firing rate.

35 is an arbitrary constant to convert firing rate values of the guns to in real life seconds

Example Calculations: firingrate examples

Each Shot’s Damage

Each shot includes independent rolls of each gun’s damage as calculated below:

ShotTotalDamage = gun1Damage + gun2Damage + gun3Damage + gun4Damage

Each Gun’s Damage

The below calculation is done for each gun Alice has.

if (randAccuracy <= accuracy) //1

{

if (!(randEvasion <= evasion)) //2

damageTaken = (gunDamage - (gunDamage * (shieldValue * shieldSlider / 100))) * 6; //3

}

  1. In English, the above code means that we pick a random number if that random number is less than or equal to the gun’s accuracy, then that means that it was an accurate hit, and we can then proceed forward in the calculation. The higher the accuracy value of the gun the higher the chance the calculation moves forward.

  2. If NOT able to evade, then calculation move forward

  3. damageTaken is equal to the original gunDamage minus the damage reduction by the shieldValue * shieldSlider

The 6 is an arbitrary constant we use that we can adjust up or down depending on how big we want each shot.

Last updated