Tool to calculate shortest path?

First of all, your calculation of the LoZ item acquisition possibilities is crazy. Far, far fewer than 1 in 1,000,000,000 orders for picking the items make any sense at all, and it is very likely that the current routes are pretty close to optimal.

It's also pretty naive to think that you could make a general tool for something like this. Think about Zelda. It has so many movement glitches, items, and interconnected locations that it would be nearly impossible to even gather all the data you need for your program to have any hope of calculating a route. If the program wants to know whether it makes sense to get bombchus before picking up the slingshot, you have to tell it how long it will take Link to go from bombchu acquisition to slingshot acquisition. And after he gets bombchus, he has a whole new range of movement options! Maybe getting the bow immediately after getting the hammer takes 30 minutes if you don't already have bombchus, but 10 minutes if you do. You have to account for a zillion variables that you have to account for.

However, you could probably make something work for games where the content is nicely broken up into levels and the player does not constantly gain new items/abilities.

In Mario 64, it might be reasonable to calculate an optimal route given current strats, but you'd still need a ton of data. Here's what you'd need to calculate an optimal route:

  1. Time to acquire each star on its own, with additional numbers for wing/metal/invis hat time if those apply.
  2. Time to acquire each star in combination with the 100 coin star for that level, with additional numbers for wing/metal/invis hat time if those apply.
  3. Time to move from each level to each other level, including differences based on star count (e.g. getting to Bowser 1 takes a lot of time if you don't have the necessary stars to properly unlock the door) and counting mini-levels like the slide, wing cap red coins, etc as their own levels.

And there's probably more stuff that I'm forgetting.

/r/speedrun Thread