What Does Velocity Do For Me?
We believe that Velocity is one of the best proxies for Minecraft around, and there's not much that can top it. However, we do diverge from more established, mainstream solutions in some important ways. That can make Velocity a bit hard to sell. We are frequently asked "why?" so often. This page is our answer to that question.
Strong experience
The founder and primary developer of Velocity (Tux) has been active in developing proxy software for Minecraft: Java Edition since 2013. They created the RedisBungee plugin, contributed to BungeeCord from 2014 to 2017, and also founded the Waterfall project and led it from 2016 to 2017. In fact, the current maintainer of Waterfall helped encourage them to start a brand-new proxy from the ground up!
Leading performance
Velocity powers several highly-populated Minecraft networks, while using fewer resources than the competition. The recipe to the sauce is simple.
No entity ID rewriting
When a Minecraft client connects to another Minecraft server, the server will send back an ID that uniquely identifies a specific player connection. This ID is used in packets that target the player that the server may send. But what happens when they're actually connecting a proxy that has the ability to change what server the player is connected to?
Other proxy solutions try to solve this problem by rewriting entity IDs that reference the current player, changing it from the entity ID assigned by the server the player is currently connected to, to the entity ID that the player got when they connected to the first server they connected to through the proxy. This approach is often complicated, leads to bugs, reduces performance, breaks mods, and ultimately cannot be a complete solution.
However, the Minecraft client actually supports changing its entity ID with a special packet sequence. Velocity takes advantage of this and forces the client to change its entity ID. This approach improves performance, improves mod compatibility, and reduces issues caused by incomplete entity ID rewrites.
Going deep
Velocity goes deeper than optimizing the handling of the Minecraft protocol. Smart handling of the protocol produces incredible performance gains but for more performance, we need to go much deeper.
One way in which we drastically improve performance and throughput is by improving the speed of compressing packets to be sent to the client. On supported platforms (Linux x86_64 and aarch64), Velocity is able to replace the zlib library ( which implements the compression algorithm used by the Minecraft protocol) with libdeflate which is twice as fast as zlib while delivering a similar compression ratio.
Velocity also employs several tricks to get the JIT (just-in-time) compiler on our side. Those tricks require deep understanding of how Java works, but we put in the work to apply those tricks which translate to increased performance.
Internal stability policies
Finally, Velocity does not attempt to maintain a stable internal API between minor and major
releases. This allows Velocity to be more flexible and still deliver performance improvements and
new features with each release. For instance, Velocity 1.1.0 delivered massive performance
improvements and added many significant new features by breaking parts of the internal API while
still keeping full compatibility with older plugins. Compare to BungeeCord which is often very
conservative about API breaks and when it does so, provides little notice of the break, and even
when doing a break, does not take the opportunity to seriously improve the API being broken (for
instance, adding RGB support to ChatColor
).
Control is in your hands
We take pride in tuning Velocity to be the most performant proxy, but in case the speed provided
out-of-the-box is not good enough, you can easily tweak several performance-related settings in
velocity.toml
.
Improved security
Velocity also features more security features, some of which are unique to Velocity. We proactively foreclose as many denial-of-service attacks as soon as possible and feature a unique player info forwarding system for Minecraft 1.13+ that requires the server and proxy to know a pre-arranged key.
Standards and mod support
Unlike certain platforms which only provide lip service to the modding community (and can be at time hostile to them), Velocity embraces the richness of the platform Minecraft provides. As just a small example, we have a Fabric mod that helps bridge the gap between Velocity itself and mods that extend the Minecraft protocol and feature full Forge support for 1.7 through 1.12.2 and 1.20.2 or higher. Velocity also supports emerging standard libraries in the community such as Kyori's Adventure library. We collaborate with the Minecraft modding community.