The recent changes that we pushed are part of a bigger effort on the ability system that would overall help the development of the project and the player experience in the long run. Thus, we initially refrained from sharing the bigger plan as it’s still in its earliest stage and at this very moment there are no observable benefits from it, but in the future, it opens several doors.
However, before we dig deeper into the global cooldown change, we would like to talk about the reasoning behind the bigger effort on the ability system and how that helps with future development and faster release of content in the future.
- Faster turn around time on ability changes
- Less knowledge required to do ability changes
- More consistent and accurate real world values from game data
- Easier way to recreate dungeon boss abilities, creature abilities and item related abilities
- Accurate ability and character window tooltips (damage and timers)
- Fixing some smaller nuances on how abilities worked
In Age of Reckoning there was a 1.5 second global cooldown, which was pretty standard in MMORPGS and existed in games such as World of Warcraft. There was also the functionality to queue up their next ability so it would fire right as the global cooldown ended. This had the benefit of allowing people to queue the ability and have them fire at the same time with nice wiggle room for latency.
Why was the global cooldown changed to 1.1 seconds on Return of Reckoning?
When the ability system was implemented there was no support for the ability queueing system. The ability system worked by the client sending to the server the next ability to be queued before it was due to be sent, this could occur any time during the global cooldown. Then, because we didn’t support the ability queue system, the ability would be cancelled. So if people wanted to fire abilities exactly 1.5 seconds after the previous they would require impeccable timing and low ping. Therefore a period of 0.4 seconds was introduced, to allow the ability to be fired correctly when queued. This number was chosen because the client would usually send the queued ability around 75% of the way through the global cooldown. However, the drawback of this implementation was that people who had higher latency would fire the ability after someone with low ping and that the global cooldown animation in the client wasn’t the real global cooldown.
Why was the global cooldown changed back to 1.5 seconds?
When the Return of Reckoning ability system was implemented a lot of the design and implementation was based on assumptions. Systems didn’t work exactly how they were supposed to and workarounds had to be made in certain cases. When we originally started we were not able to do client side changes and any ability changes, either due to balancing or workarounds for limitations in our implementation caused the data which is in the client to be different from what we had on our server. Over time we gained the ability to do balance changes and did research on how the ability system on the client worked. However, now we have the burden of having people to understand how to implement ability changes twice and in two systems which work in different ways. This has caused a lot of problems, and the data has only become more and more out of sync over time.
We decided we needed to simplify this and decided to have one system which was used in both the client and server. However, because we do not have the ability to change the client code we have no choice but to implement a new system in the server to match the client. Another benefit of this is that a lot of unworking or bugged abilities would work correctly. One big example is that abilities for use for creatures in, for example dungeons, would be working with very little effort. A lot of work has been done to match the data so that changes we made over the years in the server were represented on the client. Part of this change is that a lot of the values in the client were designed around the 1.5 second global cooldown. Therefore we added support for the ability queues and removed the 0.4 second period in order for all the data to line up correctly. With a 1.5 second global cooldown the scaling on stats and weapon DPS matches, regardless if abilities are instant cast, have a cast time or are channeled abilities. This gives a more solid ground for balance decisions than making them on top of calculations that don’t really add up. Additionally, this would have the added benefit of being able to play nicer with players with higher ping, as we have a global playerbase.
Is it possible to change the GCD/what would be necessary in order to do so properly?
It is a giant can of worms to do it properly when you start thinking about it. We can scale the stat & weapon multipliers to match a different global cooldown duration. But if you scale stat multiplier down, should you also scale base damage down to match/be same portion of the damage? What about cooldowns, if cooldown was equal to 10 global cooldowns before, should it also be scaled down? What about dot/hot tick rates, usually they are 2 global cooldown durations, should they tick faster? What about buff durations, if a buff lasted 10 global cooldowns, should that also scale down? If dot tick rates are scaled to match the global cooldown, you have to adjust buff durations as many are coupled with dots. Then what about cost, should that also scale down? Doing less for the same cost doesn't really make sense.
All of these things really need to be thought about and a proper decision taken before doing that.
We would maybe have chosen a different GCD duration if we designed the game from scratch, but it would be a massive rework of abilities to change it currently.
We hope this gives everyone some insight into our process. We apologise for the delay in this post but be assured we wanted to consider all the factors.