ArchipelagoMW / Archipelago

Archipelago Multi-Game Randomizer and Server
https://archipelago.gg
Other
469 stars 624 forks source link

AHIT: Fix massive lag spikes in extremely large multiworlds, add extra security to prevent loading the wrong save file for a seed #3718

Open CookieCat45 opened 1 month ago

CookieCat45 commented 1 month ago

What is this fixing or adding?

This fixes an issue that arised in the current big async where on level load or when a player used the !alias command, there would be an extremely large lag spike. The was due to the large list of players being sent to the game, causing an in game freeze lasting several seconds to a minute in length because of the sheer size of the message that the game had to process.

The mod does not actually need this data in the first place, so I've fixed this by preventing the client from sending large lists of players to the game, greatly reducing the size of the messages sent and thereby fixing the lag issue.

The only thing that player data was needed for was shop item names, which I've removed the need for by simply adding the player's name to the item name in the shop itself.

This also adds some extra security against loading the wrong save file for a seed with multiple AHIT slots in the same multiworld by using the slot name to verify whether the correct save file was loaded or not.

How was this tested?

I tested the lag spike fix by giving this version of the client to players who had a slot claimed in the big async. They have told me that the lag issue was gone completely.

The incorrect save file security was tested by me by generating a multiworld with two AHIT slots and trying to connect with the incorrect save file.

If this makes graphical changes, please attach screenshots.