Commit graph

43 commits

Author SHA1 Message Date
Jakob Gillich 407429ee21 Networking
The game uses a UDP-based protocol. Unlike TCP, UDP does not guarantee that
packets arrive, or that they arrive in the correct order. For this reason,
the game protocol implements those features using the following:

* All packets have a sequence number that is utilized for reordering
* Important packets are wrapped in a SlottedMetaPacket with a subslot number
* RelatedA packets ae used to request lost packets using the subslot number
* RelatedB packets are used to confirm received SlottedMetaPackets

All of these go both ways, server <-> client. We used to only partially
implement these features: Outgoing packet bundles used SMPs and could be
resent, but not all packets were bundled and there was no logic for requesting
lost packets from the client and there was no packet reordering, which resulted
in dire consequences in the case of packet loss (zoning failures, crashes and many
other odd bugs). This patch addresses all of these issues.

* Packet bundling: Packets are now automatically bundled and sent as
  SlottedMetaPackets using a recurring timer. All manual bundling functionality
  was removed.

* Packet reordering: Incoming packets, if received out of order, are stashed and
  reordered. The maximum wait time for reordering is 20ms.

* Packet requesting: Missing SlottedMetaPackets are requested from the client.

* PacketCoding refactor: Dropped confusing packet container types. Fixes #5.

* Crypto rewrite: PSCrypto is based on a ancient buggy version of cryptopp.
  Updating to a current version was not possible because it removed the
  MD5-MAC algorithm. For more details, see Md5Mac.scala.
  This patch replaces PSCrypto with native Scala code.

* Added two new actors:
  * SocketActor: A simple typed UDP socket actor
  * MiddlewareActor: The old session pipeline greatly simplified into a
    typed actor that does most of the things mentioned above.

* Begun work on a headless client

* Fixed anniversary gun breaking stamina regen

* Resolved a few sentry errors
2020-09-26 23:58:09 +02:00
Mazo 98e4d1d72f
Merge pull request #588 from Fate-JH/none
_
2020-09-25 15:37:28 +01:00
Jason_DiDonato@yahoo.com a38e6a7651 ensuring that match error conditions are eliminated 2020-09-25 08:04:31 -04:00
Fate-JH 11289caa64
Merge pull request #584 from Fate-JH/trunk-access-fix
Trunk Content Access
2020-09-21 23:18:39 -04:00
Fate-JH d70d23deb8
modifiers for flak burst (#579) 2020-09-21 23:18:11 -04:00
Jason_DiDonato@yahoo.com adc95168b0 restore access to trunk contents when seated in a vehicle 2020-09-21 09:18:31 -04:00
Fate-JH 7626c8e6c9
Lightweight Locker (#578)
* object registration adjustments for players and avatars and lockers (especially lockers)

* refactored locker container

* modifications to fields and method names for guid-related files; SpecificNumberSource created

* locker item display; proper item insertion into locker-space and searchability of that locker-space

* proper item removal from locker-space, including swap-items on other insertion tasks

* comments and tests; adjusted avatar/player registrations; allowed for restriction in the SpecificNumberSource; renamed CataloguedInventory to LocallyRegisteredInventory, and made internal object registration work

* accommodations for RequestDestroy, to allow the locker's Clear button to work; modification of expectation for resolving projectiles through ValidObject
2020-09-15 19:46:56 -04:00
FateJH e22d546965 restore default slot loadout 2020-09-05 09:16:40 -04:00
Fate-JH 78f970a4ac
Spud Gun (#572)
* initial spiker logic for charging mechanic; it's functional but doesn't work exactly by the numbers say it should

* no damage degrade for radial damage; charge mode features, including damage on the projectile and fire mode on the weapon; the Spiker's damage output is pretty close to accurate

* ammunition drain timer works correctly; no need for the progress completion function; new formatting sucks

* dial back on fire mode changes; stop excessive weapon discharge case; comments

* master merge; test fix (when did it change?)

* test repair; fixed unintentional side-effect of instantiation of StanDamProf
2020-09-05 09:08:18 -04:00
Jakob Gillich 8d332500c6 Fix lattice 2020-08-28 19:18:21 +02:00
Fate-JH de87845bfe
Aggravation (#529)
* introduction of aggravated damage properties and modification of damage pathways such that 'aggravated' is treated as a unique damage type

* initial work and tests for AggravatedDamageMessage

* wrote aggravated damage properties into the definitions of projectiles that convey them; basic workflow for aggravation from projectile damage is in place, but not tested

* merge rebase resolutions

* grenade projectile flag on projectile definition; better timing control on aura behavior and integration with player control

* timing and damage tuning around: standard, reinforced, max; plasma grenades, dragon

* work on starfire damage profile; moved aura behavior into own folder and creates an aura container object; extended aura behavior to vehicles; applied target-control to aggravation effect

* woring Starfire damage calculations; projectiles have open-ended quality modifier

* working comet calculations

* separated aggravation behavior and uara management behavior; moved files into packages and deleted old files

* moved aggravation damage into damage implementations of turrets and vehicles, rather than directly into ther immediate control agencies; revamp projectile quality modifiers; comet now does initial damage and one less tick of aggravation; the implementation progression of damageable entities is different now

* eliminated multiple timers for a single aura effect; added comments; added tests; fixed tests

* aura effects that will run for longer will not get replaced by aura effects that would end sooner

* merge rebase; accommodation for suppressing aura where no aura should be displayed; new radial degrade calculations

* test repairs

* merge rebase hell

* dragon fireball burn damage modification

* fireball burn effect should always be 1 as long as it does damage, despite radial degrade
2020-08-28 00:32:45 -04:00
FateJH 2b6ec727f2 revert radial damage calculations 2020-08-28 00:30:23 -04:00
Jakob Gillich c0e3363fe4 Set warp gate factions 2020-08-28 06:16:32 +02:00
Jakob Gillich 08eed0f331 More fixes
* Fix !list not distinguishing between players and corpses
* Fix /worldkick not working
* /silence no longer responds with a message window
* Fix 96-99 zone map files
* Fix implants not resetting after being jammend
* Fix MAXes requiring the wrong certs
2020-08-28 06:16:32 +02:00
Jakob Gillich 8a0a7d8539 Make tells case insensitive 2020-08-27 16:45:43 +02:00
Jakob Gillich e34f96ce18 Fixes
* RefreshLoadouts no longer queries loadoads from the database
* /gmtell no longer sends to self
* Set AMS spawn timer to 10 seconds
* Fix medkit cooldown display
* Fix wrong max type being purchased
* Fix implants not being locked when fatigued
* Fix implants progress bar
* Make tells case insensitive
2020-08-27 07:58:05 +02:00
FateJH 37af460a89 fireball burn effect should always be 1 as long as it does damage, despite radial degrade 2020-08-26 22:42:07 -04:00
FateJH 285d5c94ae dragon fireball burn damage modification 2020-08-26 19:10:43 -04:00
Jakob Gillich 63dea5af05 Eliminate return from AvatarActor 2020-08-26 22:56:12 +02:00
Jakob Gillich 20011691f0 Fix period conversion exception
"Cannot convert to Seconds as this period contains months and months vary in length" during login
2020-08-26 21:13:26 +02:00
FateJH 89a7f180dd merge rebase hell 2020-08-26 14:40:16 -04:00
Jakob Gillich 06e63dd960 Fix psadmin, artifact upload 2020-08-26 20:04:00 +02:00
FateJH bb3c0f5d91 test repairs 2020-08-26 11:59:37 -04:00
FateJH e27e827552 merge rebase; accommodation for suppressing aura where no aura should be displayed; new radial degrade calculations 2020-08-26 11:59:37 -04:00
FateJH f627571f0e eliminated multiple timers for a single aura effect; added comments; added tests; fixed tests 2020-08-26 11:48:42 -04:00
FateJH fc89355acf moved aggravation damage into damage implementations of turrets and vehicles, rather than directly into ther immediate control agencies; revamp projectile quality modifiers; comet now does initial damage and one less tick of aggravation; the implementation progression of damageable entities is different now 2020-08-26 11:48:41 -04:00
FateJH 89d7aea633 separated aggravation behavior and uara management behavior; moved files into packages and deleted old files 2020-08-26 11:45:07 -04:00
FateJH a79fc6bd2f working comet calculations 2020-08-26 11:45:05 -04:00
FateJH 80c1a34fb0 woring Starfire damage calculations; projectiles have open-ended quality modifier 2020-08-26 11:45:05 -04:00
FateJH 66eb3b5b95 work on starfire damage profile; moved aura behavior into own folder and creates an aura container object; extended aura behavior to vehicles; applied target-control to aggravation effect 2020-08-26 11:45:03 -04:00
FateJH 97e64d5edc timing and damage tuning around: standard, reinforced, max; plasma grenades, dragon 2020-08-26 11:45:02 -04:00
FateJH d149e07e89 grenade projectile flag on projectile definition; better timing control on aura behavior and integration with player control 2020-08-26 11:45:00 -04:00
FateJH 2054586a0d merge rebase resolutions 2020-08-26 11:44:59 -04:00
FateJH 811c7b09b5 wrote aggravated damage properties into the definitions of projectiles that convey them; basic workflow for aggravation from projectile damage is in place, but not tested 2020-08-26 11:44:58 -04:00
FateJH e5d0690c42 introduction of aggravated damage properties and modification of damage pathways such that 'aggravated' is treated as a unique damage type 2020-08-26 11:44:57 -04:00
Jakob Gillich cf9e4ea194 Fix MAX subtype numbers 2020-08-26 06:19:00 +02:00
Jakob Gillich 51d71ed732 Weapon-based MAX cooldowns 2020-08-26 06:19:00 +02:00
Jakob Gillich 8ea2ffad0f Fix loadouts not being deleted 2020-08-26 06:19:00 +02:00
Jakob Gillich cc38ee3f3f Bug fixes
* /certadd retains zero-cost certs
* Fix squad chat
* Fix tells showing wrong name
* Add workaround for premature resecure messages
2020-08-26 06:19:00 +02:00
Jakob Gillich eeae2073ac Fix deployables not working when cert is attained after login 2020-08-26 06:19:00 +02:00
Jakob Gillich 0fdd3a0133 Add unprivileged-gm-commands config option
Also replaced !kick with /worldkick (CMT_KICK)
2020-08-26 06:19:00 +02:00
Jakob Gillich 0429003863 Auto publish docs 2020-08-26 06:19:00 +02:00
Jakob Gillich f4fd78fc5d Restructure repository
* Move /common/src to /src
* Move services to net.psforever package
* Move /pslogin to /server
2020-08-26 06:19:00 +02:00