Ship Combat.html

From EVEmu Wiki
Revision as of 02:22, 4 April 2021 by DarksHeiress (talk | contribs) (Created page with "= <span id="SHIP_AND_OTHER_VESSEL.2FSTRUCTURE_COMBAT_WORK" class="mw-headline"> SHIP AND OTHER VESSEL/STRUCTURE COMBAT WORK </span> = An equation to test LaTeX: <span class=...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

SHIP AND OTHER VESSEL/STRUCTURE COMBAT WORK

An equation to test LaTeX:

<math> \operatorname{erfc}(x) = \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt = \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}} </math>



SPACE OPERATIONS

  • Accurate Positioning: since we cannot emulate destiny ship movement calculations exactly we mave have to force a '/syncloc' on every ship object (exclude drones) at some interval of destiny ticks with the first interval counting ticks from the moment the DestinyManager instance for that ship was created
  • Collisions: we need to implement purely elastic 3D collisions that conserve momentum on both parties involved and ONLY with ships. The collision should calculate a vector of travel along which a GoToDirection() action is forced with a speed calculated from the conservation of momentum. The previous active ship movement should be queued as the collision is detected then on the next tick after the collision's GoToDirection is ordered, thae queued action should immediately resume. At this time, to ensure accurate positioning of both ships involved, issue a '/synloc' on both ships.
    • Collision Detection: The only way to detect collisions is to query distance to and radius of every collidable object in the current bubble, on every destiny tick. Then if the result of distance is <= to other object radius plus this ship's radius then a collision is detected.
    • Do all this and see how bad the /syncloc results are after a bunch of different collisions at different speeds for both ships. Also, evaluate the increase in load on the cpu by the server.



Sources

TARGETING

  • Initiating a Target Lock: Evemu should support the following aspects of targeting:
    • Attempt to Lock Target - receive packet, check max targeting distance attribute of ship, and if within that distance to target, proceed to lock target, send target lock packets to aggressor and targeted ship clients
    • Unlock Target - when requested by aggressor, this should happen immediately
      • Loss of Target Lock
        • when a target travels beyond the max targeting range of the aggressor, that target's lock will be lost immediately
        • when the aggressor jumps a gate, when the aggressor docks in a station, when the aggressor becomes jammed by another ship, ALL targets' locks will be lost



DAMAGE

  • we need to make application of damage to ships, drones, modules, and structures work
    • Damage.cpp file holds all the work so far. Should this be separated out to each class' cpp file?
      • Adequately document the procedure for applying damage to a target object
      • Tracking attributes and sensor attributes must be used to determine the probability that a target is actually hit with a weapon and the weapon and charge attributes must be used to determine how much damage points and which of the four types are actually applied to the target object



EFFECTS

  • we need to consider how effects are applied to a target object since no damage is involved in this process, only changes in either ship attributes or ship state (speed, warp ability, cloak, others?)
    • we need a message passing mechanism that can pass information on an effect and really a message that contains an array of 1 or more effects that an aggressor ship is applying to a target object
      • INFO:
        • aggressor shipID
        • effectID or pointer to effect class for that effectID
        • specific data regarding how said effect applies to target (list of attribute modifiers?)



DEATH

  • we need to make ship, drone, structure explosions work in the client
    • when deemed to happen, the item should be destroyed in memory and database along with its inventory but before that is done, the wreck should be spawned and its inventory filled with the randomly selected list of inventory items for the 'loot drop'
      • how do we know which wreck ID matches the ship, structure that was destroyed?
        • there is no linkage of these typeIDs in the database, so we'll have to create them in our own database table. there are 279 entries in 'invTypes' with 'wreck' in description.. not that bad :/
    • Kill mails: we need to create a system that creates properly formatted kill mails and delivers them to the players and i imagine they are all stored in the database too so they can be retreived via API keys for out-of-game killboards
  • ** Capsule death: when capsule is destroyed, NO wreck is spawned, but a corpse with char's name IS then the character whose capsule was destroyed should be moved into a new clone (and capsule with a noob ship) into the station last selected for medical clone, set clone as grade Alpha
      • we need clone station selection AND clone upgrades to be working to support capsule death