Commit graph

19 commits

Author SHA1 Message Date
NickPSF
830ce27551
Update game_objects0.adb.lst 2021-05-31 09:56:51 -05:00
NickPSF
6e23f560bc
Update game_objects0.adb.lst 2021-04-25 18:54:20 -05:00
NickPSF
2c54e8013e
Update game_objects0.adb.lst 2021-04-25 15:41:33 -05:00
NickPSF
12c988912e
Update game_objects0.adb.lst 2021-04-22 21:17:19 -05:00
NickPSF
a2231d70d3
Update game_objects0.adb.lst 2021-04-21 17:35:52 -05:00
NickPSF
f66ed5015d
Update game_objects0.adb.lst 2021-04-21 14:46:41 -05:00
NickPSF
ba1c4ce957
Update game_objects32.adb.lst 2021-04-12 01:54:07 -05:00
NickPSF
edfdf0f7e6
Update game_objects32.adb.lst 2021-04-12 01:49:56 -05:00
NickPSF
546f6b75a0
Update game_objects31.adb.lst 2021-04-12 01:34:35 -05:00
NickPSF
1245e6ffc4
Update game_objects31.adb.lst 2021-04-12 01:19:23 -05:00
NickPSF
3321d630b7
Update game_objects30.adb.lst 2021-04-12 01:12:09 -05:00
NickPSF
b05f9ae3f2
Update game_objects32.adb.lst 2021-04-12 00:20:25 -05:00
NickPSF
08d0d29886
Update game_objects31.adb.lst 2021-04-12 00:14:28 -05:00
NickPSF
e7b1b17279
Update game_objects30.adb.lst 2021-04-12 00:00:38 -05:00
NickPSF
bb6bc4b2a5
Update game_objects29.adb.lst 2021-04-11 23:51:41 -05:00
Jason_DiDonato@yahoo.com
f557ecc13d using the boomer trigger now causes boomers to explode and harm targets 2021-01-12 23:01:08 -05:00
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
Jakob Gillich
fd1fe134f4 Remove AMS certification requirement 2020-09-08 08:00:17 +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