High performance RakNet implementation targeting unreliable and rate-limited client connections. It provides strict netty style server and client channels.
This implementation uses Netty channels to provide a fast and effective RakNet server, offering the full feature set of the transport protocol, while providing room for extension with any plugins or custom behavior.
- Recylable objects:
- Heavily used objects are recycled.
- Reduces GC pressure.
- Instrumented with Netty leak detection.
- Strict Netty patterns:
- Uses Bootstrap and ServerBootstrap pattern.
- Signals backpressure using Channel writability.
- Uses Netty ChannelOptions for channel config.
- Follows the normal bind and connect patterns.
- Accurate promise responses for write, connect and others.
- 0-copy buffer interactions:
- Retained buffer references throughout.
- Composite buffers used for encapsulation and defragmentation.
- Easy-to-use data streaming interface:
- Configurable packet ID used for raw ByteBuf writing and reading.
- Extensible to allow for multiple packet ID and channel configurations.
- True to Netty form, the pipeline can be modified and augmented as needed.
- Advanced flow control
- Back pressure signals useful for buffer limiting when client is overloaded.
- Pending frame-set limits reduce unnecessary resends during high transfer rates.
- Resend priority based on frame sequence so you get older packets faster.
- Automated flush driver
- Recommended to write to pipeline with no flush.
- Flush cycles condense outbound data for best use of MTU.
<dependencies>
<dependency>
<groupId>network.ycc</groupId>
<artifactId>raknet-server</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>network.ycc</groupId>
<artifactId>raknet-client</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
<repository>
<id>waterdogpe-repo-releases</id>
<name>WaterdogPE Repository</name>
<url>https://repo.waterdog.dev/releases</url>
</repository>
A good example can be seen in the simple Hello World test case.