Skip to content

Conversation

@lonegraywolf2000
Copy link

This adds the following features for Universal Tracker:

  • Sequence break support: The tracker now recognizes which checks you can get out of sequence without completely breaking the game. Only the checks involving Levels 1-3 of Obscure and Precision are in here: Barrier Skip is not considered a valid sequence break. A unit test demonstrating the basics of how UT interprets sequence breaks is provided.
  • YAML-less Generation: We now have the ability to fully parse the options from the original YAML file and fill the slots as appropriate.
  • Entrance Shuffle Support: You are now told what rooms have items that you can access. If you are unsure of the path, use /get_logical_path or /explain in Universal Tracker.
  • Opt-In Deferred Entrance Support: We parse the game's memory to temporarily disconnect entrances in Universal Tracker. At the bottom of the checks you know you have seen, you will be told of entrances you can access but haven't yet. Once you access them for the first time, the entrances are connected and they behave as before. If you do not wish to have deferred entrances in your games, you can always set your host.yaml file to exclude them.

Additional refactorings were done to make the code more maintainable and pythonic. This includes, but is not limited to:

  • Two enums of often repeated data.
  • A separate Constants file for items used throughout the world.
  • The replacement of Optional to coincide with PEPs 484 and 604.

More cleaning up is possible, but this is hopefully enough for now.

What is this fixing or adding?

This adds the following features for Universal Tracker:

  • Sequence break support: The tracker now recognizes which checks you can get out of sequence without completely breaking the game. Only the checks involving Levels 1-3 of Obscure and Precision are in here: Barrier Skip is not considered a valid sequence break. A unit test demonstrating the basics of how UT interprets sequence breaks is provided.
  • YAML-less Generation: We now have the ability to fully parse the options from the original YAML file and fill the slots as appropriate.
  • Entrance Shuffle Support: You are now told what rooms have items that you can access. If you are unsure of the path, use /get_logical_path or /explain in Universal Tracker.
  • Opt-In Deferred Entrance Support: We parse the game's memory to temporarily disconnect entrances in Universal Tracker. At the bottom of the checks you know you have seen, you will be told of entrances you can access but haven't yet. Once you access them for the first time, the entrances are connected and they behave as before. If you do not wish to have deferred entrances in your games, you can always set your host.yaml file to exclude them.

Additional refactorings were done to make the code more maintainable and pythonic. This includes, but is not limited to:

  • Two enums of often repeated data.
  • A separate Constants file for items used throughout the world.
  • The replacement of Optional to coincide with PEPs 484 and 604.

How was this tested?

Multiple seed generations were created, with each seed being loaded into both Universal Tracker and Dolphin for extensive comparing and contrasting.

Logs were previously present to ensure the data coming through was correct, but these were removed for the production push.

The unit test for sequence break support is based off of one I wrote for the Ship of Harkinian APWorld, and that was verified to work.

If this makes graphical changes, please attach screenshots.

While I didn't make a graphical change directly, I do want to show the result of dungeon entrance shuffle in Universal Tracker.
image

Additional credits go here I guess.

  • Faris for making Universal Tracker.
  • Tanjo for allowing me to give this a shot.
  • lx5 for confirming the missing link to enable deferred entrance shuffle.

This adds the following features for Universal Tracker:
* Sequence break support: The tracker now recognizes which checks you
  can get out of sequence without completely breaking the game. Only the
  checks involving Levels 1-3 of Obscure and Precision are in here:
  Barrier Skip is not considered a valid sequence break. A unit test
  demonstrating the basics of how UT interprets sequence breaks is
  provided.
* YAML-less Generation: We now have the ability to fully parse the
  options from the original YAML file and fill the slots as appropriate.
* Entrance Shuffle Support: You are now told what rooms have items that
  you can access. If you are unsure of the path, use `/get_logical_path`
  or `/explain` in Universal Tracker.
* Opt-In Deferred Entrance Support: We parse the game's memory to
  temporarily disconnect entrances in Universal Tracker. At the bottom
  of the checks you know you have seen, you will be told of entrances
  you can access but haven't yet. Once you access them for the first
  time, the entrances are connected and they behave as before. If you do
  not wish to have deferred entrances in your games, you can always set
  your host.yaml file to exclude them.

Additional refactorings were done to make the code more maintainable and
pythonic. This includes, but is not limited to:
* Two enums of often repeated data.
* A separate Constants file for items used throughout the world.
* The replacement of Optional to coincide with PEPs 484 and 604.

More cleaning up is possible, but this is hopefully enough for now.
@github-actions github-actions bot added the waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. label Jan 4, 2026
@lonegraywolf2000
Copy link
Author

Closing only because it was pointed out that I did too much in one PR. I'll split this into a feature PR and a few pythonic PRs.

@github-actions github-actions bot removed the waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. label Jan 4, 2026
@lonegraywolf2000
Copy link
Author

Replaced with #5818

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant