Контекст
Annihilation как игровой режим живёт давно, но публичных сетей с поддержкой современной 1.21 практически не осталось. Мы решили сделать standalone-сеть, где можно играть на актуальном клиенте и расширять механики (лутбоксы, прогрессия) без зависимости от чужих платформ.
Решение
Архитектура из нескольких контейнеризированных компонент: Velocity как proxy, lobby и Anni game servers на Paper 1.21, NanoLimbo как fallback на случай падения игровых нод. Состояние игрока (классы, прогресс, инвентарь между серверами) — в MongoDB и Redis.
Стек и архитектура
- Runtime: Java 21, Maven multi-module.
- Proxy: Velocity.
- Game servers: Paper 1.21.
- Fallback: NanoLimbo.
- State store: MongoDB + Redis.
- Деплой: Docker Compose (
ops/docker-compose.yml).
Роль и результат
Мы поставили каркас сети. Дальше — наращивание игровых механик внутри готовой инфраструктуры.