Minecraft Easter Egg Hunt

Minecraft Easter Egg Hunt

Git Repo
FEATURED ON ABC NEWS
Tags
JavaC++DockerLinuxDNS

When the pandemic first hit my local church was strongly impacted as many of the events that had been planned for the year were based on gathering people in the local area to a physical location– this required a complete mindset pivot for how to continue to engage the community and provide activities. Annually they’ve hosted an Easter Egg Hunt which draws families from the community– but this wasn’t an option during the pandemic... so the team brainstormed the idea to host a virtual Easter Egg Hunt (and we ended up using Minecraft as the platform to accomplish it).

A promo released with a signup form to gage interest

We knew we’d need our own instance of a Minecraft server running so we could build out the activities and run custom plugins as needed. So I launched a signup form to gage interest and the results were quite overwhelming– in less than two weeks we had over 500 people express interest– most with multiple different devices (Mac & Windows computers, Xbox, Playstation and Nintendo Switch consoles and mobile devices).

We realized that we’d need to support players across two different editions of the game and multiple platforms, each with their own limitations.

Minecraft has two different versions of the game: Minecraft Java Edition (which is the original release and source of the game) and Minecraft Bedrock Edition (written in C++). The Java edition works on Mac, Windows (and some Linux distros), while the C++ version the architecture used for all mobile platforms and consoles. Unfortunately the server software and binaries are not compatible between versions, meaning you cannot (out of the box) have players playing together between editions... this posed a problem for us, as we realized we’d need to build the same environment on two different builds of the game (both with separate tooling) and we’d have a split player-base which complicates things like moderation and player experience. As if it wasn’t confusing enough, some consoles don’t support custom servers and instead only support Minecraft Realms or Xbox Live-based multiplayer. Realms have an 11-player limit per-instance, making them unsuitable for our scale and Xbox Live multiplayer is limited to the max number of players that your local hardware can handle (which is currently hard-coded to max out at 30 players). In addition to building for multiple editions, we realized we’d need to build out multiple smaller instances of the same game experience to allow us to scale up to the level of interested players.

Server
Platforms Supported
Max Clients
Link
Bedrock Dedicated Server (Linux)
Mobile & Desktop Bedrock Clients (consoles excluded)
Default 20, can be increased. Mostly dependent on server hardware limitations.
Minecraft Java Edition Server
Java Edition Desktop Client
200+
Minecraft Linux Project
All Bedrock Clients
30-per server instance

Solution #1 – 2020 (Bedrock Edition)

For the first year we launched this event, I decided to use the community-built Minecraft Linux project. This project uses Minecraft: Bedrock Edition (the Android app – from Google Play Store – running in emulation) as the host-server for players to join. This allowed me to spin up multiple instances of the same server project to be run synchronously scaling the user count horizontally.

The world was built on the Minecraft: Bedrock Edition, (primarily by players on Nintendo Switch consoles!) and then we brought the world over to the Official Minecraft Bedrock Server hosted by Apex Hosting. This allowed us to scale up to over 200 concurrent players!

For console players on Xbox, Sony PlayStation, or Nintendo Switch we offered multiple different accounts they could friend to join the server through Xbox Online. The idea being, the user could add these users as a friend through Xbox Live and then join the game instance when we hosted it through the Minecraft Linux Project.

Solution #2 – 2021 (Java & Bedrock Editions)

After reviewing the tech setup from 2020, we decided to base our project on a Java server stack this year… we wanted to continue to support the Bedrock clients from the previous year, so having backwards compatibility was a core requirement as well.

In an ideal situation (and if we orchestrated the tech stack properly) we could bring all of the clients and platforms on to a single server.

image

Using the same host as in 2020 (Apex Hosting) I setup a Java Minecraft server. This time with the goal to host it on two ports: 25565 (for Java Edition) and 19132 (for Bedrock).

Tech Stack