Optimizing TCP/IP load times
3 years ago
Estonia

tldr: Best tcp/ip load time possible is 8.3 seconds and it can be reached consistently every time by not using more than 11 squares of items.

Since our timer doesn't pause during TCP/IP loads I've been recently looking into how to go through it as fast as possible, because the 15 second loading times have been miserable.

Diablo 2 has a hardcoded 250 frames wait during TCP/IP loading (source PhrozenKeep). This has been fixed with mods like BaseMod that reduce the wait to 0 frames.

I don't think bypassing the 250 frames is possible, but we can eliminate other lag that happens during the load.

Menu runs at 30 fps which means 250 frames is 8.3 seconds. When you use TCP/IP with a character that has no items you can reach 8.3 seconds already super consistently. 8.3 seconds is the fastest possible load time due to hardcoded limitations.

Idea was to find a limit of items at which point it's longer than 8.3 seconds. It appears to be 11 squares. When more than 11 squares of items are used the load time goes to 10 seconds already. The more items you have the longer the load time is. It can go over 30 seconds when you fill the character up.

Doesn't matter if you fill the 11 squares in inventory/stash or belt but having a belt equipped does matter. If an item is 3 squares it doesn't seem to use up 3 squares. I think it might be related to the way Diablo stores items starting and ending square. More research is needed here.

Level, skills, stats, gold doesn't seem to impact the load time. Classic or various video settings didn't impact loading times.

8 seconds load time compared to 15 seconds gives you couple more chances each run. With 15 second load times I could maybe pull off 4-5 resets before it was too hopeless, but with the 8 second loads I felt like I could pull off 10 sometimes. Also it feels less frustrating when it goes by twice as fast.

Some TCP/IP research rambling video

Edited by the author 3 years ago
Inv1ve, MacroBioBoi and 3 others like this