What constitutes a "load"?
3 years ago
Texas, USA

During the rules discussion today (2020-05-30) I attempted to get anyone in Teo-'s chat to elucidate what constitutes a "load", but no one could tell me a definition that wasn't obviously inconsistent and/or incomplete.

If we want to automatically re-time old runs (that have videos) via a script, this information needs to be known. (And it is known, at least to whoever wrote the autosplitter.)

When and why does the autosplitter stop the timer to remove loads? (What player actions and/or what game states trigger the starting and stopping of the timer?)

Edited by the author 3 years ago
Germany

A load (I believe it came from the -ns discussion) is pretty broad: It's loading the game, entering a new map, clicking ingame items on the map (e.g arreat summit ancients). Unless you want to define when the timer should stop and start. I am not quite 100% clear of what you want defined.

Texas, USA

What do you mean by "loading the game"? What player actions and game states trigger the starting and stopping of the timer? Exactly when and why does the timer start and stop? What is displayed on screen at the time?

What do you mean by "entering a new map"? What player actions and game states trigger the starting and stopping of the timer? Exactly when and why does the timer start and stop? What is displayed on screen at the time?

What do you mean by "clicking ingame items on the map"? What player actions and game states trigger the starting and stopping of the timer? Exactly when and why does the timer start and stop? What is displayed on screen at the time?

Are there any other instances where the timer stops? What player actions and game states trigger the starting and stopping of the timer? Exactly when and why does the timer start and stop? What is displayed on screen at the time?

An autosplitter for Diablo 2 which removes "loads" exists. If we are going to write a script to automatically process old videos that were run without the autosplitter, with the intent to replicate the behavior of the autosplitter, we must know the what, when, where, why, and how of whatever the autosplitter is doing.

Germany

loadtimes between S&E and the opening door sequence pause the timer the first part of the TCP/IP should have a set punishment-time - I wonder how we can implement this in the script also the timer must run when the game is closed

-> the TCP/IP thing will have to be talked about still with Wafu - i am not sure how easy that is to implement.

British Columbia, Canada

The autosplitter works by reading a byte in memory that changes whenever the game enters a loading state and comes out of it, as far as I know. Wafu would know more about it as he wrote it, I only tested it.

Texas, USA

Obviously we can't read a byte in memory for a VOD, but if we can describe how the game looks and/or behaves shortly before, during, and after the autosplitter pauses or unpauses the timer, we should be able to write a script that will very closely mimic that behavior for re-timing old runs.

Unfortunately I still don't understand what constitutes a "load". A good explanation would look something like this:

There are exactly two situations where the game is "loading", and thus the autosplitter pauses the timer:

  1. The player clicks "Save And Exit Game". From the moment of that click until the character selection screen appears, the game is loading and the timer should be paused.

  2. The entire duration of what is commonly known as the "opening door" loading screen, which occurs after you attempt to enter a game with a character. If this loading screen is visible, the game is loading and the timer should be paused.

Please note that the above is just an example of the type of explanation that would be helpful. As I personally don't know what situations are considered "loads", I just wrote something that sounded reasonable to me, but might be incomplete or incorrect in various ways.

If someone with this knowledge can precisely enumerate every situation that constitutes a load, taking care to account for differences that may exist between different game modes, different networks, and anything else that could potentially be relevant, that would be great.

Pretend you are talking to a malevolent AI that is simulating a perfect and catastrophic idiot, who knows nothing but what you tell him, except when the opportunity exists to misunderstand anything, in which case that will be exploited to maximum effect. That is, please make every effort to be as complete, consistent, explicit, and precise as possible. Someone has to turn your explanation into a computer program.

Czech Republic

@DrCliche There can still be changes as to what actually counts as a load. The load removal may still be changed if issues are found, so it's a bit hard to tell exactly right now.

The question is, are you interested in doing this work? Because if not, then it's pointless for me to give you the explanation, because I know how to make the script, it's just not really needed that much from what was told to me.

But anyway, there's 2 things that we count as a load:

  1. When player selects a character, it seems to be from the first frame where the doors start opening (not the frames when the doors are closed). If you'd check the frames where the doors are closed, you'd include the TCP/IP loads, which are only supposed to count as a load after the doors start opening, otherwise there's no punishment.

  2. When player clicks save & exit, you should check if this part of the screen is stuck (basically the center of the pentagram): https://prnt.sc/ss0pva (that happens after clicking the button) once you're in the menu, the timer should continue again.

Texas, USA

@Wafu Yes, my intent is to write this script. I think it's ridiculous to just throw away a decade of historical runs when we can so easily convert the times for most of them. Anyway, so far my understanding of loads is as follows:

  1. Any frame of the "door opening" loading animation is a loading frame, except for at the start of the animation when the door is still fully closed.

  2. As long as "the pentagrams" show that "Save And Exit Game" is highlighted, any frame in which those pentagrams' animation is in the same state that it was in the previous frame is a loading frame.

Are there other situations or exceptions to these rules that you can think of? Does this cover local games, LAN games, TCP/IP games, battle.net games, etc.? Are there differences between Windows and Mac? Don't some of those options have an additional loading bar under the (static?) door picture? Are there situations in which the player can save and exit and induce loading frames without the pentagrams highlighting "Save And Exit Game"? Does the use of a glide wrapper affect the appearance or behavior of any of these UI elements?

Radicalman33 likes this
Estonia

The leaderboard is already looking really awkward. We should go ahead and retime personal best runs at least. I'm all for it.

BokserKabaty likes this
Germany

we could revert back to the 1 column with a variable that says "RTA / IGT" or sth - not really happy with retiming those old runs, because then we have to remove the now "illegal" -ns runs and classic start runs

edit: will only do this if there is more there is a reasonable amount of runners for this option

Edited by the author 3 years ago
Estonia

Why would the illegal runs not get grandfathered if we retime? Could we just not retime illegal runs and set IGT for them same as RTA?

Sirbrute likes this
Germany

that would only work with the API working - not gonna do that with hundreds of runs manually.

1 column -> old times having the Tag "RTA" and new runs getting "IGT" would be doable. No retiming required and the old runs can be grandfathered in. i am against retiming of "now illegal" runs because then we will constantly have to explain the when and why - so they must stay with their RTA time or go away.

this is my opinion, and probably the most consistant with what was decided on saturday

but once again - not doing that without another vote... which we mb can do on saturday or so...

Estonia

Diablo.run has been developing a tool to measure IGT from a video source and I have similar questions as DrCliche did.

I understand that IGT starts after clicking on "save & exit", but where it stops exactly is a bit confusing, because it has black screens between the loads. Does the load end when the black screen appears or after? Example of this situation: https://i.imgur.com/xV5hfUt.png https://i.imgur.com/uC0S2Gv.png

Need to clarify if IGT stops after black screen or before.

British Columbia, Canada

there's also when saving and exiting, there's the lockup between when you click save/quit and before a black screen happens (the spinninng pentagons stop spinning for example), as far as I know that counts as a load and would be hard to read with video detection algorithm