GSoC Week 4: Ready Player One

Written on June 23, 2019

First Evaluation is here and I am (almost) done with the Gameplay Arc Phase of my GSoC! Well, ‘almost’ because there are a few tiny little fixes and adjustments here and there that can be done. As my mentor @skaldarnar states it, "One can spend an (un-)reasonable amount (of time) on fine-tuning".

Handling General Flag Drops

As discussed in last week’s blog, the method implemented in pull request #89 worked only when a player died. We wanted to implement it in such a way that whenever a player drops a flag, due to any reason, we want to teleport it back to the base after a delay. Luckily, I was able to find event DropItemEvent which all items receive on being thrown into the world. I wrote a receiver to check if the item being dropped is flag or not, just add delay event using DelayManager and tada! we are done.

Old PR: Destroy dropped items on death after a delay #89
New PR: Teleport flag after delay on drop #93

Old Statistics

So this minor issue #94 showed up after merging #91 and #92. I was trying push statistics to the widget and not clearing them when the game over screen was closed. Due to this, statistics of previous rounds were still being displayed. Easy fix!

Issue: Old statistics being showed after 2nd round #94
PR: Clear game over screen on close #95

More Updates to Restart System

I added one major improvement to the restart system I added last week. It turns out that when two people had flags and one of them captures it first, if it results in a win, then we teleported all the players back to their bases. So the other player with flag still had it. I checked for all entities with HeldFlagComponent and did the needful.

PR: Teleport Held Flags on Restart #96

Restart Permissions

After merging #91, it was decided to display restart button to only those who could interact with it. It also works only for server-client systems and not on a headless server. So I figured out that we can use the existing PermissionManager to add a custom permission and only display button to those with the permission. We can use the core command givePermission to allow certain users to restart in a headless server setup. However, PermissionManager isn’t whitelisted. Once we add it to whitelist, we are done! The work is currently in progress in branch.

Branch: [WIP]RestartPermission

What’s Next?

I will try to finish RestartPermission once the PermissionManager is whitelisted. We are done with major gameplay features, time to add some weapons and towers!