Long time no see. It has been a while since I worked on MQ. To get into the programming mood again I tackled relatively simple features that were missing for a long time.
Buff visualiser:
It
was already possible to trigger buff effects from spells like being
invisible or having a shield around its player but without any clear
indications of the effect remaining time.
To implement this feature in a nice and clean way, I had to refactor the existing buff system a little bit so that I could group all different kind of buff under the same abstraction layer.
After that it was relatively easy to add a visual indicator of a buff remaining time on screen:
Moving NPC:
After creating a pathfinding system in the latest release, I realized that I could make it benefit to the NPC as well. Using the entity component system making them move was just a matter of attaching them a “PathFindingComponent”. Furthermore, it make the game feel better as it bring more life to the game. Before that the NPC were created by the client (since they were always at the same point) now the server is responsible for broadcasting the NPC positions to the players the same way it does for every others entities.
The only thing that I needed to add to the existing system was to make the NPC stop when you talk to them which was basically a one liner in the code due to the heavy usage of behavior tree in the AI system.
I also took the opportunity to update existing NPC spritesheet and to add 2 more NPC into the game. They do not have a specific utility yet but I already have some ideas:
Small UI improvements:
I added the player name and level to its inventory view and I fixed some labels that were moving outside their bounds on very high value: