Progress
The first week of this sprint, we fixed up just about every currently documented bug related to combat and abilities specifically in multiplayer. Here are a few of them:
The lock-on camera wasn’t working.
Homing attacks were targeting the user instead of the enemy.
There were some issues with animation synchronization, causing some Kinfolk to do an ability animation twice.
If the host player used an ability that caused the reticle to change, the other player’s reticle would change as well.
Buffs and debuffs were not being displayed or calculating damage correctly.
Minion attacks like Stunner Flies weren't moving on the remote player’s side.
Gaia minions and damageable objects like Rock Wall were only showing their health bars on the host side.
There was an issue with Lumala’s passive, Soothing Aura, that made it so you had to press a swap key twice in order to swap to a character other than Lumala.
The remainder of the sprint has been largely focused on improving how our multiplayer systems handle data in order to reduce lag and keep gameplay smooth during multiplayer matches. While it can be complex and tedious work, it will make a massive difference. Here’s how a match looks as of now:
We halved the amount of input data sent from players by changing how NPCs send their inputs. NPCs were a special case that sometimes needed to send twice as many inputs when a Summoner NPC was giving commands to its summoned Kinfolk, meaning they were both moving at the same time with different inputs. By reducing this data, we’ve made the network more efficient since inputs are sent back and forth to the server every frame. We have additional plans to reduce the size of this input data even further.
We combed through much of the data that is networked every frame when a character is running around and animating, and we greatly reduced how much data is sent per frame. For example: In PvP when both players have 4 Kinfolk, there are 8 Kinfolk in total with data that could be networked. But, we actually only need to network the data of the 1 Kinfolk that each player is currently using.
We are also looking into other forms of optimization such as adding priorities to how data is being sent, to ensure that higher priority data is always being sent first, and also limiting certain less important data to be sent less often.
Aside from these optimizations, we made a few other changes to improve the feel of multiplayer.
We've been looking into necessary adjustments to how often the server updates the game on the smallest possible timescale to avoid scenarios where the server and remote clients get too far out of sync.
We've also been looking into adjustments that should allow local inputs (how quickly your machine responds to your own inputs) to feel much more responsive, and networked characters to move more smoothly by making more use of client prediction.
We began work on a new non-arena location that will be accessible in the Beta. Progress on this area is roughly halfway finished so far, and we expect to have the remainder of the visuals for this area complete roughly by the time of our next newsletter.
LEXICON
The full lexicon can be found here.
Host: (In P2P multiplayer) The player whose device manages the game world and sends data to the other player, making sure everyone is in sync. The other player is called the client or the remote player.
Input: Any button press, mouse click, etc. that a player does to tell the game what to do.
Networking: The process of sending data between machines so that people playing a multiplayer game together experience the same things at the same time.
NPC: A non-player character.
Optimization: Making the code run more efficiently, so it takes less processing power to achieve the same effect.
Sprint: A two week period used for organization. Our newsletters are released on the last day of our sprint.
Thanks for stopping by! We’ll see you for our next newsletter on September 6.