Peppy says "wait for an initial implementation, and then provide feedback on it", which I think is totally backwards.
Discuss how notelock should function in Lazer before I or someone else implements it.
Notelock is necessary to prevent objects being hit out-of-order, the goal is to come up with a specification which minimally interferes with your ability to hit a pattern, but also disallows cheese strategies.
I choose to combine "note lock" into one word as I think it is easier to search for, and is less likely to be confused with other concepts.
--------------------------------------------------------------------------------------------
Discuss how notelock should function in Lazer before I or someone else implements it.
Notelock is necessary to prevent objects being hit out-of-order, the goal is to come up with a specification which minimally interferes with your ability to hit a pattern, but also disallows cheese strategies.
I choose to combine "note lock" into one word as I think it is easier to search for, and is less likely to be confused with other concepts.
--------------------------------------------------------------------------------------------
initial proposed specification
At time T, you may click a clickable object with a start time of t1 when:
Slider: no clickable object with a start time after t2+1ms has been clicked
Spinner: any time
note: "start time" is where the circle or slider head is placed on the timeline, not when its 50 window begins. "end time" is where the slider end is on the timeline, the slider tail judgement comes before the end time due to slider lenience.
> example cases
In a 250 bpm stream, objects are separated by 60ms. We have circle A at 100ms and circle B at 160ms.
Trying to click B before A:
If T<100, then there is an unclicked object A where T < tA < tB, condition 1 fails, B can not be clicked.
If T>=100, condition 1 passes because tA is no longer after T, B can be clicked.
Effectively, B can be clicked up to 60ms early (tB-tA), rather than after A's 50 window ends.
Trying to click A after B:
There is a clicked object B with tB > tA, condition 2 fails, A can not be clicked.
Effectively, if a later object has been clicked, prior objects may not be clicked.
Slider score bug on slider C (tail judgement tCt, end time tC2) followed by D (start time tD):
Clicking D before tCt causes the slider condition to fail, and the slider tail will be missed.
Clicking D after tCt but before tC2 should not increase score; the score for C must be decided based on the combo before D was clicked (same applies to spinners).
2B:
The use of "before" and "after" in conditions 1 and 2 mean simultaneous clickable objects may be hit in any order, without special cases being added. In the slider condition, t2+1 allows out-of-order slider holding for clickable objects on the slider body or end (which sometimes lands 1ms before the tick it is snapped to)
At time T, you may click a clickable object with a start time of t1 when:
- all clickable objects with a start time after T and before t1 have been clicked
- no clickable object with a start time after t1 has been clicked
Slider: no clickable object with a start time after t2+1ms has been clicked
Spinner: any time
note: "start time" is where the circle or slider head is placed on the timeline, not when its 50 window begins. "end time" is where the slider end is on the timeline, the slider tail judgement comes before the end time due to slider lenience.
> example cases
In a 250 bpm stream, objects are separated by 60ms. We have circle A at 100ms and circle B at 160ms.
Trying to click B before A:
If T<100, then there is an unclicked object A where T < tA < tB, condition 1 fails, B can not be clicked.
If T>=100, condition 1 passes because tA is no longer after T, B can be clicked.
Effectively, B can be clicked up to 60ms early (tB-tA), rather than after A's 50 window ends.
Trying to click A after B:
There is a clicked object B with tB > tA, condition 2 fails, A can not be clicked.
Effectively, if a later object has been clicked, prior objects may not be clicked.
Slider score bug on slider C (tail judgement tCt, end time tC2) followed by D (start time tD):
Clicking D before tCt causes the slider condition to fail, and the slider tail will be missed.
Clicking D after tCt but before tC2 should not increase score; the score for C must be decided based on the combo before D was clicked (same applies to spinners).
2B:
The use of "before" and "after" in conditions 1 and 2 mean simultaneous clickable objects may be hit in any order, without special cases being added. In the slider condition, t2+1 allows out-of-order slider holding for clickable objects on the slider body or end (which sometimes lands 1ms before the tick it is snapped to)
current proposed specification
Simplified definition:
2. To prevent hitting objects out of order,
More precise definition:
note: "start time" is where the circle or slider head is placed on the timeline, not when its 50 window begins. "end time" is where the slider end is on the timeline, the slider tail judgement comes before the end time due to slider lenience. A circle's end time is equal to its start time.
1. Clicking an object with start time t1 is allowed when:
t0 < t1-1ms is the start time of the last still-clickable object which was skipped.
If the current time is greater than or equal to t0, the object at t1 can be clicked.
2. Clicking an object with start time t1 will cause:
Active objects with end time less than t1-1ms will have their judgments computed:
Simplified definition:
2. To prevent hitting objects out of order,
- Clicking a later object will cause all earlier objects to be missed.
- An object can be clicked starting at the time of the previous still-clickable object.
More precise definition:
note: "start time" is where the circle or slider head is placed on the timeline, not when its 50 window begins. "end time" is where the slider end is on the timeline, the slider tail judgement comes before the end time due to slider lenience. A circle's end time is equal to its start time.
1. Clicking an object with start time t1 is allowed when:
t0 < t1-1ms is the start time of the last still-clickable object which was skipped.
If the current time is greater than or equal to t0, the object at t1 can be clicked.
2. Clicking an object with start time t1 will cause:
Active objects with end time less than t1-1ms will have their judgments computed:
- Circles and slider heads which can still be clicked will be counted as missed, and break combo.
- Remaining slider ticks, reverses and ends will be counted as missed, and break combo if applicable.
- Spinners will only have their score multiplier (based on combo) decided early, they may still be spun and still give a judgement at the original end time.
diagrams made with abraker
The point of interest is where note 3 switches from white to purple. Two OD and object spacing cases are shown, but a range of others are possible.