Update 15: New skills, map & UI features


This is Dorian aka pvd coming at you with an another update about our progress on our MMO-RPG titled Project Visionaries! There's lots of neat stuff to talk about so this time I'm having to pick and choose some of the topics that are most likely to be worth your time.

Videos FTW!

For the TLDR people out there, I actually went ahead and made a condensed video update this time. This is my first ever video edit so please give me a bit of a free pass on some of the possibly buggy transitions there..

PS: I noticed after uploading that some of the transitions while browsing the UI got messed up somehow, sorry about that, I'll make sure this doesn't happen in the next videos

PS2: I forgot to credit BludBourne in the video for the placeholder inventory I'm currently using and showing on screen, here's a link: https://github.com/patrickhoey/BludBourne

Despite the video update, I figured I would still take the time to write a little bit more about what we've been doing lately and possibly cover some technical aspects in a bit more depth for my fellow developers out there who may be interested.

New skillz

So first off, I implemented a couple of new skills, including a first AoE called Magnetic Pulse, as you can see on the screenshot below. It's going to take a bit of tweaking still to get it to look completely right but I'm pretty happy with this first pass. For the first time, we were able to cue a client-side visual effect on top of the (default) attack animation, which is nice.

The other new skill is Teleport. I basically reused a server-side system which allows me to force the re-positioning of players, for instance after death or when a Battle Royale cycle expires. Repositioning was initially very tricky to make work properly due to race conditions at the network level when players would keep sending new positions while moving. However - this time - all I had to do was a little bit of wiring to build a skill which would rely on that existing system. The skill effect itself worked immediately but now I still have to fix a few unintended cases such as what happens when people click on an illegal location like a wall or on top of another body.

New map

I also went ahead and redesigned the Battle Royale map around a new set of tiles which Cymmy had been working on lately. This map gives a little bit more breathing room to the players and in my opinion, simply looks better and more polished. Here's what it looks like during design in the editor (called "Tiled"):

This one is the in-game view of the map:

Chat bubbles

On top of adding a brand new chat log to the UI, chat messages are now being displayed in real time over the corresponding player's head, which I always thought was a neat feature for adding to the feeling of immersion as well as just something practical.

We now also display name plates below each player.

Upcoming animations

On the animation front, other than working on new tilesets which you'll be able to enjoy soon, Cymmy has been working on polishing our character and monster animations. These won't quite be ready for v0.0.9 but they should be introduced in our next version, which will most likely release at the end of August. Here's a sample gif demonstrating the new pre-rendered light effects and shadows:

Misc. technical stuff

Now to the technical stuff. I wanted begin with a follow-up on my last post regarding UDP issues. After figuring out that bundling positions into a single, bigger message was causing UDP to malfunction on the k8s stack @ OVH, I did some tests on a more barebone setup (using "docker run" only) at Exoscale. Bigger UDP messages worked well there, proving that the problem was at least to be blamed on the infrastructure. However, I wasn't ready to ditch my k8s stack so what ended up doing was switch over all communications to TCP, which solved the problem. I'm a bit behind on my plans to automate scalability tests but I'll make sure to post some more results and updates on this topic as make progress.

A neat little detail I've added over the last few weeks was real-time "pinging". Not only is it useful in order to diagnose connectivity issues but I'm now using ping updates and values as a way to check client health and trigger an error stage so that the player isn't just stuck in limbo with a dead client. It's pretty effective but I had to tweak a couple of things to ensure the numbers made sense.



The main issue there was that the client and the server are not necessarily set to the same timezone, let alone time. So when performing latency measurements and computing deltas, one may end up with incorrect values (and sometimes negative ones, even!). So I made sure to measure only what could be measured well and only do it WHERE it could be measured accurately. The ping value displayed by default is now the complete round trip to the server, including server loop processing time. However, when debug mode is on, I get to see the detailed values for network time, client processing time and server processing time. This is particularly useful to see what's going on in the different zones (local, regional and remote region).

Releasing v0.0.9

Finally, I'm now in the final stages of preparing the public release of version 0.0.9 and am getting ready to deploy it on the production servers in both EU and NA regions. This will be done within a week or less, maybe even by Sunday (August 1st) if everything goes particularly smoothly over the next couple of days. At this point I'm just working on bug fixing and am not planning on adding any new feature until this new version is deployed. It's been long overdue.


Thanks for tuning in and I'm looking forward to posting new updates soon!

- pvd

Comments

Log in with itch.io to leave a comment.

Bravo!