← All projects
02 Production infrastructure · 2025-present

The core behind
a live network.

Vise keeps a multi-server PvP platform coherent: immediate gameplay state, shared cross-server services, durable player records, and the telemetry needed to operate it with confidence.

Explore the architecture Production system
5 secfleet telemetry cadence
72 hrhot profile cache
17,280health samples retained
TLSRedis and MariaDB
02
INFRASTRUCTURE FIRST

Gameplay is only the surface.
The system underneath is the project.

The difficult part is not incrementing a win counter. It is making that update fast on one server, visible on every server, durable across restarts, observable in production, and available to approved integrations without exposing the storage layer.

SYSTEM WALKTHROUGH

Scroll through the network.

Each chapter activates one part of the production path.

01 / SERVER FLEET

One core, deployed across distinct game servers.

Every Paper instance identifies its region and server number, then loads the same modular core. Players can move between services while shared infrastructure keeps their network identity intact.

  • Java 21 on Paper 1.21.3
  • Region and instance-aware server identity
  • BungeeCord channel for network travel
vise.network → EU-1 / NA-1 / D-2
02 / EVENT BUS

Redis turns separate servers into one social space.

Global chat is published as JSON to a shared Redis channel. Every other server receives the event asynchronously, rejects local echoes, sanitizes the payload, and renders it for its own players.

  • Redis pub/sub on chat:global
  • Five-second reconnect after connection loss
  • Network work stays off the game thread
PUBLISH chat:global {server, uuid, message}
03 / PLAYER DATA

Fast state, shared state, durable truth.

A player event updates the in-process object first. Redis receives a self-expiring cache entry and atomic leaderboard score. MariaDB receives the authoritative profile and statistics through a pooled, prepared upsert.

  • 72-hour Redis profile and stat caches
  • Sorted-set leaderboards trimmed to the top 100
  • HikariCP pool with prepared SQL over TLS
memory → SETEX / ZADD → SQL UPSERT
04 / OBSERVABILITY

The fleet reports its own health every five seconds.

Each instance samples TPS, players, worlds, chunks, JVM memory, threads, garbage collection, uptime, OS, and architecture. The latest snapshot powers quick checks while a Redis stream preserves roughly 24 hours of history.

  • Latest health stored as a Redis hash
  • 17,280 samples retained per server
  • Online status requires a ping newer than ten seconds
server:<name>:health:latest + :stream
05 / RELIABILITY

Failures are expected, contained, and recoverable.

Redis operations are retried before being marked unhealthy. Subscribers reconnect. Database connections are pooled. Scheduled restarts warn players before a clean shutdown, and module teardown closes listeners and storage clients deliberately.

  • Three Redis attempts with five-second recovery delay
  • Default 24-hour controlled restart cycle
  • Graceful unsubscribe and connection cleanup
detect → retry → recover → report
06 / SERVICE BOUNDARY

Integrations receive capabilities, not database access.

Game features and external services meet the core at a controlled boundary. Tier data is fetched in parallel, Discord linking uses a five-minute one-time challenge, and tournament operations stay behind validated commands.

  • Parallel tier-provider requests
  • Six-digit Redis challenge with a 300-second TTL
  • Only verified identity links become durable records
approved client → Vise Core → private storage
VISE NETWORK / LIVE ARCHITECTURE
DRAG NODES / CLICK TO INSPECT
01 / 06
CLIENTPLAYERauthenticated session
NETWORKPROXYserver travel
JAVA 21VISE COREmodular runtime
EU-1NA-1D-2
SHAREDREDIScache / pub-sub / streams
DURABLEMARIADBprofiles / history / links
CONTROLLEDSERVICESDiscord / tiers / tournaments
OPERATIONSHEALTHlatest + 24h stream
SERVER FLEET A shared core across the network
RUNTIMEJava 21
PLATFORMPaper
STATEOnline
  1. Core modules initialized
  2. EU-1 registered with network identity
  3. Shared services ready
03
PLAYER STAT TRANSACTION

One duel. Three state layers. Zero blocking reads.

RANKED_DUEL_COMPLETE
BZWINAX
match: Q6A20QPI
01IN PROCESS

Immediate update

WINS184 185
ELO1842 1860
ConcurrentHashMap
02REDIS

Shared hot state

SETEX72h profile cache
ZADD#17 leaderboard
pooled + TLS
03MARIADB

Durable truth

UPSERTplayer_stats
INSERTranked_match
HikariCP + prepared SQL
TRANSACTION COMPLETEprofile available network-wide
04OPERATIONS

The system explains
how it is behaving.

Infrastructure is only trustworthy when its state is visible. Vise emits a fresh operational snapshot every five seconds and keeps enough history to investigate the shape of a bad hour, not just its final moment.

FLEET HEALTH / LIVE
TPS / LAST 60 SECONDSEU-1
healthy
60s ago45s30s15snow
TPS 1M19.98target 20.00
PLAYERS14 / 2007% capacity
JVM HEAP2.4 GBof 8.0 GB
UPTIME17h 42mrestart in 6h
WRITE TARGETserver:EU-1:health:stream
RETENTION17,280 samples
FRESHNESS< 10 sec = online
next sample in5.0s
05Engineering decisions

Designed for the failure modes
of a live server network.

01

Keep gameplay local.

Active player objects remain in memory, so a hot path does not wait on a remote database before the game can continue.

immediate reads
02

Share only what must be shared.

Redis handles cross-instance data, expiring challenges, leaderboards, event fan-out, and short-lived operational history.

pooled + expiring
03

Make truth durable.

MariaDB stores the records that must survive process exits: identities, profiles, statistics, links, and ranked history.

prepared + durable
04

Observe before guessing.

Five-second fleet samples make capacity, stalls, memory pressure, uptime, and instance freshness visible during operation.

latest + history
THE RESULT

A backend that makes the network feel like one product.

Players see continuous identity, statistics, chat, ranks, matches, parties, and tournaments. Operators see isolated instances, explicit persistence layers, recoverable dependencies, and measurable health.

Ranked queuesPlayer statisticsGlobal chatDiscord linkingTier integrationsTournamentsPartiesCustom kits
Next projectMNIST Neural Network