
Greetings witches, wizards and all magical folk alike!
Welcome to the very first Technology & Development blog! Our goal with these blogs is to shed more light into how the Development Team works behind the scenes, what we’re working on and what we plan on working on in the near future.
It may become technical at times, but we’ll try our best to word it as simply as we can, while still keeping it interesting to read for the majority of you.
APRIL ACHIEVEMENTS
April was a very good month for the Development Team with major milestones finally being achieved. We spent the majority of the month preparing for the maintenance, as well as working on guilds and getting that ready so that after the maintenance, we could start testing it immediately.As a result of the maintenance we held on April 17th, more of our developers are able to work on the backend for the server; which means that hopefully moving forward, updates from the Development team should be a lot more frequent.
What we’ve achieved this month:
- The new backend is here!
- Guilds are here!
- We have added the ability for the Game Design team to have leaderboards on the server that automatically update! You will see the first use of these in the May 4th event, but as time progresses, you’ll see a lot more of them in classes and in the world.
Image: https://prnt.sc/QqNbR_S_nJIz- These leaderboards update every 10 minutes.
- Due to the lack of developers on the backend, it turns out that a lot of errors have been firing off for years. With the increased amount of developers working on it, these errors have been squashed, resulting in a smoother experience for everyone.
- Performance has also significantly increased overall.
FUTURE PLANS
We want to be fully transparent and let you all know what we have planned for the near future. This list is not final, and the order of it may change depending on what we decide to focus on. Things may also be removed, changed, or added. This post will not be updated.- Guilds: Complete
- Automatic updating leaderboards: Complete
- Friends update: In progress right now, the majority is done. The release is expected to be next weekend.
- Check out this thread here for more information on what we want to do
- Party update
- Automatically create a party if you’re not in one and you use /party invite
- Make invites clickable in chat
- Add a command to disable friendly fire of party members (meaning you can’t damage each other). This could make FFA more fun, and perhaps tournaments (this will be up to the arena team to decide)
- Remove the party limit completely
- Add the option to make your party members glow for only you
- Add party information onto the scoreboard so you can see their health (like in gauntlets)
- Make party invites expire if a player doesn’t accept it within a certain timeframe
- Make /party members show where each party member is (e.g. a minigame, world, etc)
- Add the option to play a sound when a message is sent in party chat
- Add party member icons in the tab list and next to players’ names
- /ignore command, so you can't see their messages in PMs and chat
- Fixing hologram flicker, so they look smooth and don't disappear for a split second sometimes (or blink)
- Sending gold through mail (and possibly increasing the mail limit too)
- Send a clickable message when a minigame is about to start that will allow players to immediately queue for it (this should hopefully lead to games with more players)
- Shop enhancements
- More accurate prices
- Shop pruning
- Time remaining on promoters
- Being able to enable/disable or set the price for all items in your shop
- Shop discounts (maybe)
- Allow trading other currencies in /trade
- A command that will allow you to see how many house points you’ve earned
- Auto join for minigames
- Rewrite parts of the backend to be easier to work with and a lot more readable - and so it’s more up to date (we use some libraries that haven’t been updated in years).
- Make the life of our teams a bit easier by making it easier to work with the tools that we’ve created for them. We may also make new stuff that will allow them to do cool gameplay for you all.
Here is what we mean by point 1:
Before, seeing if a player existed when e.g. adding a friend would be like this:
All this has been simplified to:
It suddenly makes the code a lot more readable and easier to work with for anyone. It also uses modern practices to ensure high code quality.
Before, seeing if a player existed when e.g. adding a friend would be like this:
JavaScript:
async.waterfall([
//Get the target
function (cb) {
app.datalayer.players.getByUsername(request.body.target, function (player) {
if(player === null) {
return response.json({
status : false,
error : 'TARGET_NOT_FOUND'
});
}
cb(null, {
target : player
});
}, { uuid : 1, nickname : 1, minecraft_username : 1 });
},
JavaScript:
const target = await PlayersDao.getByUsername(request.body.target, { uuid : 1, nickname : 1, minecraft_username : 1 });
if (target === null) {
return response.error('TARGET_NOT_FOUND');
}
GUILDS DELAY & MOTHERSHIP
Why were Guilds so delayed? Originally before we began creating Guilds, we identified the issues with our backend (that was e.g. preventing us from doing Guilds):- It was written in another language called JavaScript. This language is completely different from Java (the name is very misleading). This meant if a developer only knew Java, they couldn't work on the backend (and vice versa).
- Most of it was written many years ago and is incredibly hard to work with. A typo could crash the entire service, and security preventive measures weren’t there.
- Rewriting everything would take a really long time and wouldn’t be worth it due to the first-mentioned issue.
For a few months, we made a ton of progress, and this is where we decided to do Guilds. The majority of Guilds were finished within 1 week. We felt really proud of this accomplishment and felt confident that we could release it.
However, actually deploying (releasing) Mothership so players could interact with it proved to be more challenging than we thought, and it also made it clear that we were trying to be way too ambitious in a short time span. Instead of taking small steps towards finishing Mothership, we took huge leaps which proved to delay the entire project even further and overall demotivate the team, so progress became stale.
As months went on, it was decided that Mothership wasn’t a viable solution and that the code we had written was no longer going to be used. This is when we decided to rewrite the original backend and get it to a position where it’s safe enough to work on and other developers can work on it, without the fear of the entire server burning from a few typos - hence the maintenance!
Now that the maintenance is over, and the new backend (still in JavaScript) has been deployed, we finished guilds within 2 weeks, and hopefully, more updates should follow from that (the list from above!)
WHAT NOW?
We hope you enjoy Guilds and the updates that we bring in the near future. The majority of these updates (that we have planned) are player suggested, so we would love to hear your ideas. We have already received a lot of suggestions, and are actively trying to get them done while working on the list of planned changes.With this being the first dev blog, we would love to hear what you thought about this blog! Did you think it was good overall? Would you want it to focus more on how we plan on handling future updates, or would you want it to become more technical? Do you want an insight into how each of us works? We’re open to ideas! If this is well received, we’d love to keep this going next month and further on!
Thank you for reading our Development Blog! We hope you enjoyed it, and if you have any questions, please do not hesitate to ask!