Hamsda / EmoTrackerPacks

OoT Rando Map Tracker pack for EmoTracker
12 stars 12 forks source link

Add autotracking support #123

Open coavins opened 2 years ago

coavins commented 2 years ago

(See setup guide)

Hi, I use your tracker with OOT because I think it's the best out there, but after playing LTTP with codemann8's autotracker, I found it difficult to return to OOT where I had to check everything off manually.

I wrote these scripts to add autotracking to my preferred tracker so I can enjoy that convenience again. Please review my PR below and let me know what it would take to merge these changes.

Try it yourself:

The zip file located here is based on the latest stable release with the autotracker functionality included. Just right-click the robot and choose "SNES", then "Lua", and make sure the connector.lua that is included with EmoTracker is running in Bizhawk.

You should configure all of your settings before turning on the autotracker.

This branch was developed and tested against the following:

The autotracking has worked great in testing, with only some rare errors related to failed raw byte reads, requiring a restart of EmoTracker and BizHawk. It works simultaneously with Archipelago's Z5 client, and should probably work with TestRunnerSRL/bizhawk-co-op although that hasn't been tested.

PR checklist:

Original commit message copied below:

This commit adds autotracking to Hamsda's ZOOTR map and item tracker. This work is based on codemann8's LTTP autotracking.lua script and takes advantage of the Bizhawk connector.lua that is included with Emotracker.

This branch is tested and known to work great with the following:

Also works simultaneously with Archipelago! (ootMulti.lua 2021-09-11)

To enable autotracking, right-click the robot icon in the lower right corner and select "SNES", then "Lua". You will also need to find the connector.lua included with Emotracker and run it in Bizhawk.

It's always best to reset the tracker and ensure all of your settings are configured correctly prior to activating the autotracker. It can also be reactivated after you load your save file in EmoTracker.

Things that are currently autotracked:

Things that are NOT autotracked:

I couldn't have done this without this amazing list of offsets:

Thank you RiptideSage!

I also heavily referenced the following resources:

Things that should be reviewed prior to merging:

To enable autotracking within EmoTracker for this pack, the platform was changed to "snes" in the manifest. I couldn't get the option to show up without making this change, and I don't know if it has any side effects.

A proof-of-concept "race mode" toggle was added to demonstrate how users might be encouraged to stay honest and obey community racing rules. Autotracking is disabled while race mode is enabled.

A proof-of-concept big poe counter was also added to the settings to allow the user to indicate how many are required. This was necessary in order to automate the big poe turn-in check.

I renamed the 'Deku Scrubs / Sticks' location to remove the forward slash because it was preventing lookup.

I also changed HC Malon's visibility rules to make her disappear when the egg is placed into the inventory. This solved some issues relating to the advancement of the trade sequence.

Wishlist for things I don't feel like working on:

Hamsda commented 2 years ago

Sorry for not responding for a while. First off, thanks for putting in the work to make this function!

I wasn't quite sure what to do with this PR. You may be aware that autotrackers are (sadly) not legal for racing in OoTR. So, at least until that stance changes, I can't really merge it, since the racing aspect definitely is a focus of mine.

If you want to maintain the autotracker though, I am pretty sure there are people who would love to use it.

coavins commented 2 years ago

I understand, I've since been informed of the awkward situation with the community rules. I'm happy to keep this pr branch up to date in the meantime, and isolated from my other divergent changes so that it will be ready to merge whenever they figure out the rules on their end.