Releases: pmmp/RakLib
Releases · pmmp/RakLib
1.1.1
Changes since 1.1.0
SendReliabilityLayer
will now retransmit packets unacked for longer than 2 seconds.- Previously, packets might wait for acknowledgement for up to 9 seconds, causing major connection pauses.
- This timeout will be replaced by a better mechanism in an upcoming release.
1.1.0
Changes since 1.0.0
SendReliabilityLayer
is now aware of, and respects, the remote reliable window.- This is necessary because the client will drop packets if they aren't within its reliable window (without ACK or NAK), causing long resend delays.
- Packets outside this window are buffered until the window has shifted enough to allow the client to accept them.
- A new parameter
$reliableWindowSize
has been added toSendReliabilityLayer::__construct()
, with a default of512
(matching the official RakNet default as seen here).
SendReliabilityLayer
no longer drops the resend queue under any circumstances.- This had the potential to cause a breakdown of reliable packet transmission, causing sessions to get stuck.
- Thanks to the introduction of sending reliability window, the resend queue size should never exceed the reliable window size (
512
packets) anyway.
1.0.0
This release is mostly the same as 0.15.x.
Despite what the version may suggest, this is not a complete RakNet implementation. Staying on 0.x for so long was a mistake that needed to be corrected.
Changes since 0.15.x
- Introduce parameterization for max split packet part count and concurrent split packet handling.
- Improved header size calculation for connected packets when checking whether to split packets. It now calculates the exact header size instead of assuming a hard 60-byte cutoff (this was too much for most packets, causing unnecessary packet splitting, and also didn't handle reliable-sequenced correctly).
- Fixed ack receipts not working when a packet was split into multiple parts.
0.15.0
Changes since 0.14.x
This release modernizes the code to PHP 8.0 standards, and improves some internal structure to open the gates for future extension.
No significant changes have been made, and the API is mostly the same as 0.14.
API
- Use typed properties and promoted properties wherever possible
- Extracted generic session logic into
raklib\generic\Session
raklib\server\Session
is replaced by a much smallerraklib\server\ServerSession
- it inherits most of its logic fromgeneric\Session
- Added specialized
client\ClientSocket
andserver\ServerSocket
with different functionality for each use case isTemporal
renamed toisTemporary
wherever appropriate- Added
DisconnectReason
constants. All disconnect APIs now use these instead of hardcoded string messages.
Tools
- Added new scripts:
tools/scan.php
to scan for servers on a given broadcast addresstools/proxy.php
to set up a simple tunnel between a client and server (useful for getting a Windows Minecraft client onto a WSL BDS instance)
0.14.4
0.14.3
0.12.12
0.14.2
Changes since 0.14.1
- Fixed immediate-send not working.
- Reintroduced delayed disconnect mechanism from 0.12, which waits for all pending packets to go out and be ACKed before sending ID_DISCONNECTION_NOTIFICATION. This fixes various MCPE-specific issues, such as transfers and disconnection screens not working correctly.
0.14.1
0.14.0
Changes since 0.13.x
- PHP 8.0 is now required as a minimum.
- Implemented #105 - new connecting sessions can replace a session in "disconnecting" state from the same IP/port - typically useful in client crash situations
- Fixed custom disconnect messages sometimes not arriving on shutdown (race condition in channel handling #102)
- Negative ping values are no longer reported to the server event listener. (This could happen if the client sent a pong with a timestamp in the future relative to server time.)