Releases: pmmp/RakLib
Releases · pmmp/RakLib
1.2.1
Changes since 1.2.0
- Added PHP 8.5 to test matrix.
- Improved error reporting when fields are not set correctly in
EncapsulatedPacket. Previously, leaving some fields blank might have resulted in unexpected behaviour. tools/proxy.phpnow scrubs non-printable characters from server ping responses to avoid console beeps and other undesirable behaviour from special characters.
1.2.0
Changes since 1.1.x
- Noisy packet error and IP blocking messages are now suppressed if more than 2 such messages are generated per second. This significantly reduces the performance impact of certain kinds of attacks.
- Added support for disabling IP banning on packet errors via the
Serverconstructor. See #239 for motivation.
1.1.2
1.1.1
Changes since 1.1.0
SendReliabilityLayerwill 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
SendReliabilityLayeris 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
$reliableWindowSizehas been added toSendReliabilityLayer::__construct(), with a default of512(matching the official RakNet default as seen here).
SendReliabilityLayerno 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 (
512packets) 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\Sessionis replaced by a much smallerraklib\server\ServerSession- it inherits most of its logic fromgeneric\Session- Added specialized
client\ClientSocketandserver\ServerSocketwith different functionality for each use case isTemporalrenamed toisTemporarywherever appropriate- Added
DisconnectReasonconstants. All disconnect APIs now use these instead of hardcoded string messages.
Tools
- Added new scripts:
tools/scan.phpto scan for servers on a given broadcast addresstools/proxy.phpto set up a simple tunnel between a client and server (useful for getting a Windows Minecraft client onto a WSL BDS instance)