absolllute / Mega-Hack-Pro-Future

Mega Hack Pro Suggestion & Issue Tracker
40 stars 5 forks source link

Practice Mode Fix | Inaccurate Object Position Resync #1167

Open torzod opened 1 year ago

torzod commented 1 year ago

When botting a level with gameplay based on moving objects, practice mode, even with the bug fix, does not always line up moving structures accurately, and I believe this to be due to a round-trip loss of precision when storing and restoring checkpoint savestates

NewAlexGamer commented 1 year ago

for those not understanding how bad of a problem this is, try botting poocubed

Brittank88 commented 1 year ago

When botting a level with gameplay based on moving objects, practice mode, even with the bug fix, does not always line up moving structures accurately, and I believe this to be due to a round-trip loss of precision when storing and restoring checkpoint savestates

This is part of why I'm really pushing/hoping it's possible to have a version of checkpoint fixes/frame stepper that literally saves/loads the game's entire memory (AKA it will always be PERFECTLY what it was).

Not sure of the difficulty of that though.

torzod commented 1 year ago

storing and loading a snapshot of the game's memory would be extremely intensive and probably be impractical to implement, as you'd have to store and restore 2+GB of ram each time

On Sun, Feb 19, 2023 at 6:20 PM Brittank88 @.***> wrote:

When botting a level with gameplay based on moving objects, practice mode, even with the bug fix, does not always line up moving structures accurately, and I believe this to be due to a round-trip loss of precision when storing and restoring checkpoint savestates

This is part of why I'm really pushing/hoping it's possible to have a version of checkpoint fixes/frame stepper that literally saves/loads the game's entire memory (AKA it will always be PERFECTLY what it was).

Not sure of the difficulty of that though.

— Reply to this email directly, view it on GitHub https://github.com/absolllute/Mega-Hack-Pro-Future/issues/1167#issuecomment-1436145186, or unsubscribe https://github.com/notifications/unsubscribe-auth/AG772KJ7RDGBYRXNSREEFNTWYK2EZANCNFSM6AAAAAAVAVB3ZI . You are receiving this because you authored the thread.Message ID: @.***>

Spidapida commented 1 year ago

I have an idea previously posted here that goes around that issue (especially minigames) by replaying the macro at the beginning up to the checkpoint you placed, then automatically toggling back to record mode.

Brittank88 commented 1 year ago

storing and loading a snapshot of the game's memory would be extremely intensive and probably be impractical to implement, as you'd have to store and restore 2+GB of ram each time On Sun, Feb 19, 2023 at 6:20 PM Brittank88 @.> wrote: When botting a level with gameplay based on moving objects, practice mode, even with the bug fix, does not always line up moving structures accurately, and I believe this to be due to a round-trip loss of precision when storing and restoring checkpoint savestates This is part of why I'm really pushing/hoping it's possible to have a version of checkpoint fixes/frame stepper that literally saves/loads the game's entire memory (AKA it will always be PERFECTLY what it was). Not sure of the difficulty of that though. — Reply to this email directly, view it on GitHub <#1167 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AG772KJ7RDGBYRXNSREEFNTWYK2EZANCNFSM6AAAAAAVAVB3ZI . You are receiving this because you authored the thread.Message ID: @.>

Yes but potentially it may be preferred for those who are botting impossible levels, etc. and are willing to take the extra time.

It seems that one of the techniques is to actually not have frame stepper on the whole time anyways, so maybe in combination this would work well?

I do wonder if there is any way to optimise the storage of memory. Think about hibernation - it doesn't take the computer forever to shut down, despite saving ALL memory contents to disk.

torzod commented 1 year ago

might also be more optimal to rewrite the movement calculation routine/function that determines where objects are when starting from checkpoints or start positions to use a different datatype or just replace it outright