DISCLAIMER: Potterworld or Droobledore LLC is not in any way affiliated with Mojang AB, J.K. Rowling, Warner Brothers or any company, copyright or trademark.
PotterworldMC PotterworldMC PotterworldMC

Development Blog - April 2022


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.
  1. Guilds: Complete
  2. Automatic updating leaderboards: Complete
  3. Friends update: In progress right now, the majority is done. The release is expected to be next weekend.
    1. Check out this thread here for more information on what we want to do
  4. Party update
    1. Automatically create a party if you’re not in one and you use /party invite
    2. Make invites clickable in chat
    3. 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)
    4. Remove the party limit completely
    5. Add the option to make your party members glow for only you
    6. Add party information onto the scoreboard so you can see their health (like in gauntlets)
    7. Make party invites expire if a player doesn’t accept it within a certain timeframe
    8. Make /party members show where each party member is (e.g. a minigame, world, etc)
    9. Add the option to play a sound when a message is sent in party chat
    10. Add party member icons in the tab list and next to players’ names
  5. /ignore command, so you can't see their messages in PMs and chat
  6. Fixing hologram flicker, so they look smooth and don't disappear for a split second sometimes (or blink)
  7. Sending gold through mail (and possibly increasing the mail limit too)
  8. 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)
  9. Shop enhancements
    1. More accurate prices
    2. Shop pruning
    3. Time remaining on promoters
    4. Being able to enable/disable or set the price for all items in your shop
    5. Shop discounts (maybe)
  10. Allow trading other currencies in /trade
  11. A command that will allow you to see how many house points you’ve earned
  12. Auto join for minigames
What this list doesn’t account for is changes behind the scenes that players don’t necessarily see. We want to:
  1. 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).
  2. 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:
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 });
    },
All this has been simplified to:
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');
}
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.

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.
So instead, we decided to rewrite the entire backend (thousands of files) in Java! We called this project ‘Mothership’.

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!
 

Comments

Somnambulist

Librarian
Minecraft IGN: Psycho
Phoenix Raven Werewolf
#2
Thanks for the updates! It's really cool to see why you guys are doing certain things with the server and reasons behind them. Can't wait to see what else you guys have in store for the server!

8. 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)
This sounds like it will be convenient especially if you're the type that does /games every minute to see if a game is almost filled up.
12. Auto join for minigames
Unsure about this one though because players may end up abusing this by afking just for the game rewards. If there were things such as afk kicking, maybe redoing the autojoin command every 5 rounds, or an easier way to report abusers that do this then sure.
Allow trading other currencies in /trade
Interested as to why this would be needed? Would this open up to new gameplay related to Guilds?
 

Deniz

Graduate
Minecraft IGN: DenizTM
Auralock Dark Follower Phoenix Serpent Vampire VIP SPEW
#3
Interested as to why this would be needed? Would this open up to new gameplay related to Guilds?
Not necessarily, but maybe- it's generally something that's been suggested throughout the past couple of years, and something we've been considering adding. Once we get further down the list and to this point, we'll re-evaluate the entire idea- so there's still a chance it might get denied.

There's some specifics that definitely need to be figured out for it, but it could bring an interesting twist to the economy if players were able to trade voting, and other types of currencies from your /ac. All this would need to be discussed amongst other departments and stuff like that - so we're still pretty far from doing this :)

Unsure about this one though because players may end up abusing this by afking just for the game rewards. If there were things such as afk kicking, maybe redoing the autojoin command every 5 rounds, or an easier way to report abusers that do this then sure.
Agreed! These are some of the specifics with this idea that'll need to be ironed out before we start with it.

Hope this clears up everything regarding your questions- and happy to see your excitement for the updates :)
 

Deniz

Graduate
Minecraft IGN: DenizTM
Auralock Dark Follower Phoenix Serpent Vampire VIP SPEW
#5
Actual madlads. Are there any plans to rework the backend in Java in the future ?
None as of now, but I realistically don't think it's gonna happen. Our DB currently is in some areas (mostly older stuff) a bit messy. There are documents that have fields of multiple types (sometimes even nested different types), and Java is kind of super bad when it comes to this (because it's all ORM based, so converting all that becomes really messy and annoying to work with).

Coding in JS is riskier (because you have no type-safety) but it also means you can produce code *a lot* faster, because you don't need to make entities, type based repositories/daos, etc. (which is a double edged sword to be fair, but yeah)

So yeah, tons of pros and cons for both languages - but to really put it in perspective for how much we'd have to convert, here's an interesting image
1651700632402.png


Those two folders alone contains thousands of files, and nearly 1000 folders (yes we're very organized :D). This number will decrease as we clean up though, but yeah we have hundreds of handlers/routes

Hope that answers that :)