★ Founding developer program: Pro free for 90 days for the first 50 developers →

Guides · Product

Where do players quit your minigame? Funnels for Minecraft plugins

Players join, find the game, finish a round, come back, or don't. A funnel shows which step loses the most players, so you fix that one first.

Updated · by Skilled · 3 min read

A minigame plugin lives or dies on its first five minutes. A player joins, has to find out the game exists, find how to join it, wait for a round, play it, and want another. Every one of those steps loses people, and from the outside they all look the same: the server's numbers just don't grow.

A funnel splits that into steps and shows how many make it from each one to the next. The step with the biggest drop is the one worth your next week.

The steps of a first game

For an arena plugin, a first experience usually looks like this:

  1. Joined the server
  2. Found the game: typed /arena join, clicked the NPC, opened the menu
  3. Started a round
  4. Finished the round
  5. Started a second round

Each step answers a different question. Few players going from 1 to 2 means they never discover the game. A drop between 2 and 3 usually means waiting: not enough players, or a queue that never fills. Players who start but don't finish are telling you something about the round itself. And the step from 4 to 5 is whether the game is fun.

Tracking the steps

Most of these steps are one line each where they happen in your code. With PluginAnalytics, commands are tracked for you, so /arena join is already an event (command:arena.join), and a player's first join is recorded automatically as Player joined. The rest you track:

analytics.track("game_started", player);
analytics.track("game_finished", player, "result", won ? "win" : "loss");

Players are sent as an anonymous hash that's different on every server; their name, UUID and IP never leave it. Keep property values short and low-cardinality, like a result, a map or a kit, never free text. Events

Building the funnel

In Funnels, create one with those steps in order and a window, for example 7 days. Then it shows, for players whose first join fell in the period you're looking at:

  • how many reached each step,
  • the conversion from the step before,
  • the average time it took,

with the biggest drop highlighted. Funnels

Two details make funnels honest:

  • Only first times count. Each player's first game_started is the one that counts, not every round. Funnels describe first experiences, which is exactly what you're trying to fix. For "how often do people play", look at event counts instead.
  • Order matters. A player who finished a round before ever typing the command (because a friend dragged them into a party) doesn't count as converting through that step. Pick steps that really happen in that order.

Funnels are part of Pro and Premium.

Reading the result

Big drop after "Player joined". Players don't find the game. A join message, a default item that opens the menu, or an NPC at spawn usually fixes more than any gameplay change.

Big drop between finding the game and starting a round. They tried and gave up waiting. Check minimum player counts, queue timeouts, and whether a bot or a smaller mode could start the first round sooner.

Big drop between starting and finishing. Rounds are too long, too hard, or broken. Cross-check with your errors: an exception that hits halfway through a round looks exactly like players quitting. Errors

Good first round, weak second. The first game works; the reason to play again doesn't. Rewards, progression, or a lobby that shows what's next.

Server funnels too

The same works for server owners setting up your plugin. Plugin installed is recorded when a server sends its first data; track your setup steps as server events (no player) and you'll see how many installs ever create an arena, configure it, or open it to players:

analytics.track("arena_created");
analytics.track("arena_enabled");

A plugin that most servers install but never finish setting up has a setup problem, not a gameplay one. That's where better defaults, a setup command or a short guide in the first-run message pay off.

After every update

Save the funnel and open it again after each release, comparing the weeks before and after. Add a release marker in Settings so every chart shows when the update went out. If a step drops right after an update, you know where to look before the reviews tell you. Did your update break something?

Skilled

Makes Minecraft plugins (including The Sift on SpigotMC) and PluginAnalytics, so other plugin developers can see how their plugins are found, installed and used.

More guides

Product

How to see which commands players actually use in your Minecraft plugin

Count which commands and subcommands of your Spigot or Paper plugin get used, by how many players, and which ones nobody touches, with or without a library.

5 min read
Engineering

Did your plugin update break something? How to know in the first hours

How to tell within hours whether a new version of your Spigot, Paper or proxy plugin introduced a bug: errors per version, affected installs, logs and lag.

4 min read

See how your own plugin is found and used

Free for your first plugin or mod. One line of code.