Overview
TGMmc was a multi-year project, initiated in middle school, to build and operate a comprehensive, self-hosted Minecraft server network. The primary goal was to create a unified gaming environment where players from both the Java and Bedrock editions could seamlessly play together. The project evolved into a sophisticated multi-server architecture that supported a variety of gameplay modes, including Survival Multiplayer (SMP), creative building, and competitive minigames.
By managing the entire stack on a dedicated physical machine, this project became a deep-dive into practical system administration, network architecture, and performance optimization. It provided a hands-on education in managing complex software configurations, proxying network traffic efficiently, and understanding the fundamentals of the Java Virtual Machine (JVM) to ensure a stable experience for a community of 10-20 concurrent players.
Key Features
- Seamless Cross-Platform Compatibility: Integrated Geyser and BedrockConnect to translate game protocols in real-time, allowing players on PC (Java Edition) and mobile/console (Bedrock Edition) to connect and interact in the same world.
- Multi-Server Network Architecture: Utilized a Waterfall proxy to manage connections across multiple dedicated server instances. This allowed players to move between a central lobby, a collaborative SMP world, a creative building server, and various minigame servers without disconnecting.
- Dedicated Physical Infrastructure: Hosted the entire network on a self-managed physical desktop computer, providing invaluable experience in hardware management, operating system configuration, and network security outside of a typical cloud environment.
- Optimized Server Performance: Leveraged PaperMC, a high-performance server fork, and applied custom configurations to manage server resources effectively. This involved tuning JVM parameters and understanding Java’s garbage collection mechanisms to maintain a smooth, low-latency gameplay experience.
Technologies & Implementation
The architecture was designed for modularity and cross-platform support. At its core, a Waterfall proxy served as the single entry point for all players, directing them to the appropriate backend server based on their choice in the lobby. This setup isolated different gameplay modes, preventing performance issues in one world from affecting another.
The cross-play functionality was the most complex piece, requiring a stack of translation layers. Geyser handled the primary protocol translation between Bedrock clients and the Java server, while BedrockConnect helped manage authentication and connection nuances specific to the Bedrock platform.
- Server Software: PaperMC
- Proxy Server: Waterfall (BungeeCord Fork)
- Cross-Platform Stack: Geyser, BedrockConnect
- Infrastructure: Self-hosted physical server
graph TD
subgraph "Player Connections"
A["Java Player"]
B["Bedrock Player"]
end
subgraph "Network Infrastructure (mc.tgm.one)"
C["Waterfall Proxy Server"]
D["Geyser + BedrockConnect"]
end
subgraph "Backend Game Servers"
E["Lobby Server"]
F["Survival (SMP) Server"]
G["Minigames Server"]
H["Creative Server"]
end
A --> C
B --> D --> C
C --> E
C --> F
C --> G
C --> H
Challenges & Solutions
The most significant challenge was achieving stable cross-platform gameplay on resource-constrained physical hardware. Bedrock and Java editions have fundamentally different protocols, and the translation process handled by Geyser is resource-intensive. Initially, the server experienced performance drops and instability, especially with multiple Bedrock players connected.
The solution involved a two-pronged approach. First, I meticulously configured the server software, disabling non-essential features and optimizing settings like view distance and entity tracking for each specific server (e.g., lower settings in the lobby, higher in the SMP world). Second, I delved into JVM performance tuning. By researching and experimenting with Java garbage collection flags and memory allocation parameters (-Xms, -Xmx), I was able to optimize the JVM’s performance for the server’s specific workload. This significantly reduced lag spikes and improved overall stability, demonstrating that deep system-level understanding is crucial for application performance.
Results & Impact
The project successfully created a stable and engaging multi-server environment that supported a consistent community of 10-20 concurrent players across both major versions of Minecraft. It served as a practical learning ground, providing foundational knowledge in crucial areas of systems administration and backend infrastructure management.
- Primary Outcome: Established a feature-rich, cross-platform Minecraft network that was publicly accessible via the
mc.tgm.onedomain. - Technical Growth: Gained hands-on experience in network proxying, protocol translation, and JVM performance tuning—skills directly applicable to professional software engineering and DevOps roles.
- Community Building: Fostered a small but active community of players who could enjoy a shared gaming experience regardless of the device they played on.
{TODO: Add screenshot of the in-game server lobby or a community build}
