-
Notifications
You must be signed in to change notification settings - Fork 1
Player Affinity

Player affinity makes lobby changes feel less random by preferring the healthy lobby a player used recently. It is useful when short-lived lobby state, friends, or cached data make returning to the same server desirable.
[routing.affinity]
enabled = true
stickiness = 0.7stickiness is a value from 0.0 to 1.0:
| Value | Behaviour |
|---|---|
0.0 |
Always use normal routing |
0.7 |
Prefer the recent lobby about 70% of the time |
1.0 |
Always return when that lobby is still eligible |
The remembered lobby must still be registered, healthy, below capacity, and allowed by the current routing context. If it is unavailable, VelocityNavigator simply chooses another candidate.
Affinity records expire after ten minutes. Unexpired records are saved in plugins/velocitynavigator/affinity-store.json, so a normal proxy restart does not immediately forget everyone.
With Redis enabled, affinity updates are shared between Velocity proxies. See Redis and Multi-Proxy for the network setup.
The consistent_hash routing mode already maps a player's UUID to a stable server, so the separate affinity preference is skipped in that mode.
For most networks, power_of_two with stickiness = 0.7 is a good balance between familiar routing and even load.
Home · Quick Start · Configuration · Operations · FAQ
GitHub · Support / Discord · Report a Bug
VelocityNavigator v4.3.0 · by DemonZ Development
![]()
Getting Started
Routing
- Routing Algorithms
- Algorithm Visualizations
- Initial Join Balancing
- Contextual Routing Guide
- Player Affinity
- Health & Circuit Breakers
- Retries & Fallbacks
Player Experience
Configuration
Network & Operations
- Advanced Proxy Systems
- Redis & Multi-Proxy
- Storage & Databases
- Server Management
- Backend Lifecycle States
- HTML Dashboard
- Operations Runbook
- Prometheus & Grafana Setup
- Troubleshooting Guide
- FAQ
VelocityNavigator 4.3.0