Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

raidboss: TOP Unlimited Wave Cannon Dodge + Clock #5370

Merged
merged 25 commits into from
May 21, 2023

Conversation

Legends0
Copy link
Contributor

@Legends0 Legends0 commented Apr 28, 2023

I noticed I could use some code I wrote for DSR gigaflares here that should also work for determining the exaflare clock here.

The startsUsing log lines are sometimes incorrect and sometimes correct, so trying to use OverlayPlugin instead but I do not yet know the proper delay needed. This will need 2s delay as that is the time between Wave Cannon exas, but the additional 1s here is for OverlayPlugin delay needed.

Determined that 1.1s is enough (For most of my cases, but 1.2s needed for all my cases). This calls before players even see the exas.

This calls the card/intercard that is safe and next to the first exaflare. In the same output, it calls the direction (clock/counterclock) the exaflares spawned in which is where the player will need to run later.

@Legends0 Legends0 marked this pull request as ready for review April 29, 2023 03:36
@Legends0
Copy link
Contributor Author

As far as I can tell, I was getting accurate OverlayPlugin data at time of casts. Raidemulator seems to work, but I haven't run the cleaned up version in game. I think it can handle both Unlimited Wave Cannons but I don't yet have a log of both.

Need to run with the exaflares here.
@Legends0 Legends0 marked this pull request as draft May 2, 2023 01:39
Data can come after cast start. Tested once with 0.1s worked in one test.
@Legends0
Copy link
Contributor Author

Legends0 commented May 3, 2023

This might need another trigger to collect the exaflare positions... the delay window is too small doing it in one trigger like this and it's not accurate enough at 0.1s

Legends0 added 9 commits May 2, 2023 23:13
cleaner way to ensure we can add arbitrary delay
OverlayPlugin was returning different order of combatants than what was input
What was happening was overlayplugin order was changing the order in which the calculation was happening (sometimes)
@Legends0 Legends0 marked this pull request as ready for review May 4, 2023 05:09
@Legends0
Copy link
Contributor Author

Legends0 commented May 4, 2023

So, in typescript simulation with some data I have from runs the logic works now. Just need to determine the lowest/recommended delay.

Theoretically 1s and some small change is when the casting happens and position data should be available, but historically have had to add .3s to .5s for safety.

EDIT: For reference, 4s and 5s both produced accurate results. I have not yet tested below but will be trying with 1.5s next.
EDIT2: 1.3s is working for me too.
EDIT3: 1.1s also appears to work.
EDIT4: Adjusted to 1.2s as I recorded a miss.
EDIT5: Was able to still see some misses at 1.2s, so added reason to use 1.5s.

Legends0 added 2 commits May 5, 2023 21:37
This keeps the message up until 3rd puddle for clock/clockwise
@Legends0
Copy link
Contributor Author

This may need an additional reminder for clock/clockwise on count of the puddles as a vocal reminder.

1 in 20 pulls seems to fail for me at 1.1s
@quisquous
Copy link
Owner

Has this been pretty reliable for you in practice? I think I had been using a previous version (with 5s delay?? and sometimes incorrect), but I will update to your latest version here and test myself some.

Personally also, I think if things are so tight that 0.1s can cause errors, it's better to add even more delay. The issue is mostly that the delay is client-side but when the information gets to people's computers can depend on latency. So, even if it works for you, it may not work for others. If this is a call that doesn't need to happen immediately, maybe 1.5 (or more?) would be much safer and reliable for more users.

As low as 1.2s works consistently on low latency, but 1.5s will work for more players
@Legends0
Copy link
Contributor Author

Has this been pretty reliable for you in practice? I think I had been using a previous version (with 5s delay?? and sometimes incorrect), but I will update to your latest version here and test myself some.

Personally also, I think if things are so tight that 0.1s can cause errors, it's better to add even more delay. The issue is mostly that the delay is client-side but when the information gets to people's computers can depend on latency. So, even if it works for you, it may not work for others. If this is a call that doesn't need to happen immediately, maybe 1.5 (or more?) would be much safer and reliable for more users.

This has been reliable for me since I changed filter to checking the combatants list for the same id from the collect. Before the issue was overlayPlugin would return results in different orders than I expected. I had assumed it would return a list in the order of IDs I passed in, but that was not the case on later outputs of the lists compared to the collect list so I corrected that which allowed me to verify the rotation and dirs.

The only time I saw a failure at 1.1s was when 7/8 players died, including myself, right before the combatants came out which I think triggered some higher than normal latency and so I upped it to 1.2s on my end. I think 1.5s will be more than enough which I have set it back to.

@quisquous quisquous merged commit 7c0235b into quisquous:main May 21, 2023
github-actions bot pushed a commit that referenced this pull request May 21, 2023
)

I noticed I could use some code I wrote for DSR gigaflares here that
should also work for determining the exaflare clock here.

This calls the card/intercard that is safe and next to the first
exaflare. In the same output, it calls the direction
(clock/counterclock) the exaflares spawned in which is where the player
will need to run later. 7c0235b
github-actions bot pushed a commit that referenced this pull request May 21, 2023
)

I noticed I could use some code I wrote for DSR gigaflares here that
should also work for determining the exaflare clock here.

This calls the card/intercard that is safe and next to the first
exaflare. In the same output, it calls the direction
(clock/counterclock) the exaflares spawned in which is where the player
will need to run later. 7c0235b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants