Skip to content

RelativityMC/VMP-forge

Repository files navigation

Very Many Players

Github-CI Discord

A Forge mod designed to improve server performance at high playercounts.

VMP is still in early development and things may break. Please report any issues to our issue tracker.

So what is VMP?

Very Many Players, or VMP for short, is a Forge mod designed to improve general server performance at high playercount without sacrificing vanilla functionality or behavior.
For the best performance it is recommended to use VMP along with Lithium.

How VMP achieves its performance improvements?

This list may contain features currently unreleased and only found in development builds

Server-side game logic performance improvements:

  • Uses area maps to optimize nearby packet sending and player lookups
  • Uses cache to optimize entity trackers, fluid state lookups, ingredient matching and biome lookup
  • Optimizes natural spawning with caches and other tricks
  • Optimizes entity tracking with area maps
  • Optimizes entity iteration for collisions
  • Optimizes ticket propagator using MCUtil from the Paper project (patch licensed under MIT)
  • Makes initial chunk loading async on player login
  • Makes several commands run async only when issued by a player

Client-side game logic performance improvements:

  • Makes time source to use built-in Java time source instead of GLFW via JNI calls

Networking performance & responsiveness improvements:

  • Uses our own chunk sending mechanism (optionally with packet-level rate-limiting)
  • Adds packet-level per-player render distance
  • Makes vanilla tcp connections more responsive using packet priority from raknetify
    (works best when the server is connected without reverse proxies such as Velocity and SSH port forwarding)
  • Mitigates several kinds of bot attacks with split event loops and optimizations

Other improvements:

  • Uses AsyncAppender to improve logging performance and keep logging IO off the main thread

... and more

Support

Issue tracker
Discord server

Building and setting up

Requires Java 17 or later, both to build it and to use it.
Use Git to clone this repository, do NOT download zip
Run the following commands in the project directory:

./gradlew clean build

License

License information can be found here.