BadgeUp Achievements

Introducing achievements for Sponge! :trophy:

I’m not talking about those built-in Minecraft achievements either! These are custom achievements, backed by criteria, with awards attached. There are a lot of interesting things you can do with these achievements.

I’ve been working on BadgeUp over the past year with @Zirconium, who most of you already know. He’s created a bunch of other neat plugins, and now we are bringing one of the most interesting plugins yet to Sponge. We created this both because we love the Sponge project, and to show off BadgeUp, which is actively being developed. Feedback is appreciated.

Try it Out

Server: sponge-demo.badgeup.io
This server is running SpongeVanilla 1.10.2-5.1.0-BETA-357.

Demo Video

How it Works

The plugin sends events to BadgeUp on every player action. This includes eating things, punching blocks, and movement. BadgeUp processes these events and matches them against criteria and corresponding achievements, optionally granting awards when they are earned.

Run it Yourself

If you want to run this on your own server, you’ll need the BadgeUp Sponge Plugin and a BadgeUp account. You can signup for an account for free at www.badgeup.io. Documentation for the plugin is at docs.badgeup.io.

6 Likes

Why do you need to create an account on the website to use this plugin?

Hey @Gershon
You can login to the demo server and play around without creating an account.

You need to create a BadgeUp account if you want to run this on your own server so you can make your own achievements and awards for your players, and see what they are doing. There’s a management console at dashboard.badgeup.io

But why not just offer this functionality in the plugin config?

1 Like

Also what would happen if the website goes down? And won’t the plugin need to be constantly pinging the website and grabbing data?

@Gershon Yes, if the API goes down, there will be lots of problems. I’ve got several monitors on the infrastructure and everything is backed up and hosted in multiple availability zones, so downtime should be minimal, but things do indeed fail.

@pie_flavor BadgeUp offers a lot of capability that would be difficult to implement and manage in a single plugin or config. In addition to simple criteria (which is currently being utilized on the demo server), there’s also dynamic criteria that lets you execute JavaScript code on every event, allowing for really flexible criteria (e.g. based on the day/date, the stock market, etc, etc). There’s also analytics features in the pipeline so you can see what your players are doing, who’s earning achievements, etc. There’s a lot of power behind the BadgeUp APIs.

@Zirconium and I have worked really hard on this and look forward to your feedback. Thanks :thumbsup:

You can execute Javascript code through a config; specify a script name and use Multiscripts to load it. And analytics can be done by a plugin as well.

I’m not saying centralized hosting is bad; I’m saying that not offering an alternative is.

1 Like

I had a quick skim of your main website, and while it’s obvious it’s not just Sponge, or even Minecraft you’re targetting (which is interesting!), I noticed this:

It’s free while we are figuring everything out.

That’s all well and good, but my worry would be many server owners would start using this system, and then you’d slap a subscription charge on them, losing time and effort for those who wouldn’t be able to afford a subscription. What are your plans for charging users once you’ve ironed out the system? Will the core system always be free, or do you think that there will be a subscription charge for the use of any part of the system?

Don’t get me wrong, paying for such a system is not a bad thing at all, quite the opposite, you need to meet your costs and a well written system will entice users. I would just rather know, if I was to create a server and use this, what the implications are down the road.

2 Likes

@dualspiral I totally agree and understand! Unfortunantly, I’m in that weird spot when starting a company where it’s too new to start billing and just old enough for people like you to be asking very valid questions around billing.

Here’s my plan. Also feel free to contact me directly at [email protected] if you would like to discuss this.

  1. Any customer who starts using BadgeUp before I add billing will be free, forever. In exchange, I ask for valuable feedback. If your game or application were to grow to thousands of users or start producing large amounts of traffic, I would ask that we would work out a cost-sharing agreement.
  2. I’ll likely add a free tier, limited to the number of achievements that can be created and subjects (players) that can earn them.
  3. I’ll charge for advanced features, such as cross-region replication, (e.g. servers that run in many parts of the world all needing fast performance) and advanced user analytics.
1 Like

Just letting you know; if you make a paid version, you run the risk of someone making a free alternative. Especially since right now your code is MIT open source.

1 Like

I have tried out the website so far, I think its very nice looking and sleek but I am confused on how to create achievements.

For example:
How do I listen on 10 blocks broken, to send that player a command or broadcast to the server? Or any other variables like server connections, blocks traveled etc

Right now you can listen for blocks of a specific type being placed or broken (like watching for 10 logs or 10 dirt), but not any 10 blocks in general (we are currently planning how to implement this for the future).

Our demo “Lumberjack” achievement uses a criterion called “Chop Trees” that does exactly this, watching for 50 logs being broken:

So for breaking blocks, you would want to use changeblock:break:<block> as the key when you create a new criterion. You can read more about the different keys you can use here.

Right now, executing a command is not one of the awards I have implemented (simply because I didn’t think of it). I made an issue on the plugin’s GitHub repository for that.

What kind of broadcast do you want to do? There’s also a configuration option to broadcast player achievements or not.

All of that is possible! If you’re familiar with the Sponge API, you would use the ClientConnectionEvent.Join in your plugin code to listen for a player joining the server. With BadgeUp, you would just use the clientconnection:join key in your criterion.

We also track distance traveled with the distance metric. If you wanted to award an achievement for traveling 1000 blocks, you would just make a criterion with distance as the key, 1000 as the threshold, and an operator of @gte (shows up as the ≥ sign). Then, you would create an achievement and add the criterion you just created by searching for it by name in the “Criteria” section of the “Create an Achievement” page.

We will be publishing a video shortly explaining the whole process in a bit more depth, but in the mean time, I’ll walk you through how to create the achievement for traveling 1000 blocks:

Create the criterion:

Create the achievement:

If you have any other questions, please don’t hesitate to ask! :slight_smile:

Let’s say I create a bunch of achievements:

Travel 1000 blocks
Travel 3000 blocks
and
Travel 10000 blocks

I have these achievements up for awhile and players get the 10,000 blocks achievement. What would happen if I decide to create some more lower distance achievements like 5000 blocks? Will those players be able to get it?

Yes. As soon as another event with the distance key is sent to BadgeUp, it would evaluate the newly created achievement for 5000 blocks, see that the current total exceeds that, and grant the achievement.

Charging for access to your custom achievement system is just gonna spawn a ton of alternative versions of this same thing. It’s not very hard for someone to make a custom system like this without a silly Web API. People have already proven that you can write and run JS code inside of Sponge plugins incredibly easily. If you want to require payment for access to your web service, you’re going to need to make it more significant than “oh, it makes it easy”. Honestly, I’d write a plugin that made some custom achievements for someone’s server for free.

And really, if you seriously want people to be convinced that they should pay for this, make an actual Minecraft client mod that receives the custom achievement notices and makes them actual achievements on the client. Make it actually more than a Text and a simple case structure back end.

Plus, simple configuration is like, braindead simple to write for any somewhat competent server owner, honestly.

Here’s a simple config structure that a simple javascript-powered webpage could generate in a second.

That’s… quite harsh actually - and I don’t think you realise what their service really is. And, before I continue, I have nothing to do with BadgeUp, this is just from browsing their website.

The (closed source) Web API is the whole point of their system, and BadgeUp is not just a Minecraft thing. Their demo on their site specifically shows you that they have a web game that uses their service. Take a look at what they offer, it’s meant to be a convenient, simple way to aggregate data across multiple servers, even multiple games. Yes, I could certainly write a plugin that does achievements too, but a plugin like this does more than just offer achievements, and it’s the web back end that they are actually looking to sell.

Think about the possibilities from a Minecraft server perspective. Whip up a few achievements in a few minutes, let the servers/games run, see what people have done a few days later. If you set up achievements that represent your target goals on the server, you can track what people find easy and not so easy by looking at the achievements. If you have multiple servers with similar achievements, then a web interface makes the comparison and management so much easier.

Players who obtain achievements could then use this to show their achievement across multiple servers, even multiple games, I suspect, though I haven’t looked that far.

I think it’s a nifty service that could work out. I’m interested to see where it goes, and will keep a keen eye. You wouldn’t be paying for the software, you’d be paying for the service it runs on, and if it is executed well, then I see no reason why server owners and other game devs wouldn’t pay for it. It’s all about analytics - something that is of great value to anyone who runs a service, and this is a service that has a lot of time and effort put into it so it could do it well. I wish it great success.

I wouldn’t bother. Outside of the popular mods and modpacks, you don’t want players to be adding mods to the system to join a server. If I was looking for a vanilla server, but had to add a BadgedUp mod to get onto it just so it’d track achievements, I would look elsewhere.

@DrCorporate Thank you for your response. Just a bit of clarity as to your way of thinking helps everyone!

5 Likes

@dualspiral Wow. You absolutely nailed it. :clap:

Thanks for the kind words.

2 Likes

The main alternative to a subscription model would probably be to put advertising on the site. Six of one, half a dozen of the other, there are always trade-offs to be made when you need to pay for hosting of a service. This plugin sounds really interesting, although the lack of clarity about what happens to “grandfathered” accounts is a bit off-putting. That is,

If you can state clear and absolute limitations on all free accounts, that should be easier than having to negotiate when usage grows. Stating your case clearly before money starts changing hands would be best for everyone, IMHO. That would make a clearer picture of what kind of “value-for-money” subscribers would be getting.

3 Likes

You are absolutely correct. I’ll get a pricing page hashed out on the main site to clarify the details. Thanks for bringing this to my attention.

Getting this bad boy on startup:

Edit: and hundreds of these