
# Purpose
This idea is based on improving situations where lag occurs, and causes a horrible mistake due to being in the middle of executing tech, such as a ledgedash. There would also be an additional bonus of stopping people from essentially cheating by seeing a long freeze frame, and then buffering an action that will occur when the game resumes.
# Idea
The idea is to continue polling inputs while the game is freezing frames(presumably because of your opponents PC or the connection between you). For X number of frames where your local game was not advancing, re-send the inputs polled during the freeze after the game resumes. Additionally, until X frames have passed on resume, delay all inputs.
X would likely be whatever number of frames a person takes to notice that a frame drop has occured. The user input those frames before they realized the game was frozen, so we use a bridge to get those inputs over into the frames where a human couldn’t possibly react to the game resuming.
# Example Where X = 12
If the local game gets stuck waiting for 30 frames, the first 12 frames on resume will be replaced with the inputs from the first 12 stuck frames.
If the local game gets stuck waiting for 7 frames(1-7), the first 7 frames on resume(8-14) will be replaced with the inputs from the stuck 7 frames(1-7). Frames 8-12 after resume(15-19) will use the inputs from from frames 1-5 after resume(8-12), essentially a temporary increase of 7 in delay. After this, inputs resume as normal. Essentially inputs from 8-12 on resume(15-19) are sacrificed instead of sacrificing the inputs from the short freeze.
If the local game gets stuck for 1 frame(1), resumes for 1 frame(2), then gets stuck for 1 frame again(3), things are a bit trickier. I think it would be set up so within 12 frames of the first freeze, any active frames will recieve the proper input that was intended for them by the player. However, secondary freezes that occur within the 12 frames will not expand this duration, because it would be expected that the player has noticed the first freeze, and taken steps to avoid doing anything crazy immediately.
# Potential Shortcomings
It might be the case that people really can’t react and adjust to the frame freezing quickly, their muscle memory covers a duration longer than the reaction time, or their muscle memory activates during the bridge and ends after the delay is removed.
One of the longer duration things like this that comes to mind would be Samus super wavedash. I don’t really have ideas I am satisfied with for this case.
# Conceptual Examples
Previously, you drop from ledge and jump, the game lags for a few frames, the game resumes and you air dodge to your death because you are now too early. With the lag bridge, your air-dodge should be properly delayed and you will perform it as you intended.
Previously, you drop from ledge, the game lags for a few frames and eats your jump, the game resumes and you air dodge to your death because you haven’t jumped. With the lag bridge, your jump and likely air dodge gets delayed should ledgedash as intended. Though if the muscle memory straddling happens, it is possible that you still die. Perhaps it would be reasonable to continue the delay a bit longer if a jump input is detected.
Previously, the game lags for a few frames right before you drop from ledge, the game resumes and you ledge-dash as normal, just a few frames later than you intended. With the lag bridge, you may instead only jump, and the air-dodge input is simply lost. This could be a case where muscle memory straddles the end of the bridge and the player can’t react quickly enough to adjust themselves.
Previously, the game lags for a few frames right when you try to drop from ledge and eats your ledge drop, the game resumes and you tournament winner. With lag bridge, you likely perform the ledgedash as intended.
Previously, the game lags for a few frames right when you try to drop from ledge and eats your ledge drop and jump, the game resumes and you roll up from ledge. With lag bridge, you likely perform the ledgedash as intended.
So we have:
VS
These examples probably are a little more complicated in reality than outlined here, but I hope these at least help explain the idea.