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

Where to find shrines and locations #11

Open
forthrin opened this issue Oct 19, 2019 · 16 comments
Open

Where to find shrines and locations #11

forthrin opened this issue Oct 19, 2019 · 16 comments

Comments

@forthrin
Copy link

Where in the dataset can I find coordinate data that correspond to the 6000x5000 PNG for:

  1. Shrines
  2. Location names

I can't seem to find these in your BotW repositories, at least not readily available.

For the latter I'm also interested in data that tells whether the location:

  1. Is on the map from the beginning of the game
  2. Produces a minor sound effect when you get there (eg. bridges)
  3. Produces a longer sound jingle when you get there (eg. stables)
@forthrin
Copy link
Author

It's unclear how to make a complete list of all waypoints that give game completion percentage (and therefore also are not on the map when the game starts).

  • tracked_locations.txt contain 200 entries.
  • map_locations.js contains 187 entries.
  • 13 locations are "Not found" by map.py (Gorko Tunnel, Lake Hylia, et. al.)

Then sites like this say "Location Discovery = 0.08% x 226 = 18.08%":

https://segmentnext.com/2017/03/13/zelda-breath-of-the-wild-100-percent-completion-guide/

Could you clear up the confusion between 187 vs 226? Are maybe the 39 other ones not waypoints but other types of finds that add up to the percentage?

@MrCheeze
Copy link
Owner

I think they're using me as the source there, I originally thought there were 226 before correcting myself to 187.

@forthrin
Copy link
Author

Aha :) 187 it is, then. Thanks for the clarification. I'm using the data to create different types of TSP maps for interesting ways to run through the game. This is done with some reservation, though, as TSP obviously doesn't know about the order of which certain game tasks have to be completed.

Hope you (or someone just as clever) will be on the ball when the sequel comes out :)

@forthrin
Copy link
Author

PS! Is there any data that tells whether the shrine is readily available in the landscape, or if it has to be revealed (eg. through a shrine quest)?

PPS! How did you make the list of waypoints that give percentage (ie. tracked_locations.txt)? Is this programmable from other data, or did you have to assemble it manually?

@forthrin forthrin reopened this Oct 27, 2019
@MrCheeze
Copy link
Owner

MrCheeze commented Oct 27, 2019

According to an old comment of mine, I checked the list of save flags in the game (which is in botw-tools) and cross-referenced it with this list of locations.

I'm sure the mubin data can be processed to figure it which shrines start visible and which don't, but you'll have to figure out the details.

@forthrin
Copy link
Author

forthrin commented Oct 27, 2019

Thanks!

The game map and height map are different crops and sizes, making it not-so-intuitive to check the height for a particular point on the map, unless I'm missing something essential here...

How do I map X/Y coordinates from the 6000x5000 map PNG to the 3072x3072 height map PNG?

height_map_x = map_x * A + B;
height_map_y = map_y * C + D;

What are A, B, C and D?

@forthrin
Copy link
Author

forthrin commented Nov 8, 2019

Still waiting for the conversion formula between the maps. (Too bad the maps do not correspond to begin with.) I could do this by eye, but I'd like a precise conversion, therefore asking the author.

@MrCheeze
Copy link
Owner

MrCheeze commented Nov 8, 2019

In fact, the hght (heightmap) format is one I have a fairly limited understanding of. In fact the data is defined at many different levels of detail...

But actually, I guess a complete understanding isn't necessary for the conversion you're asking for. I believe if you pad the top and bottom evenly of the 6000x5000 to make it 6000x6000, they will both have exactly the same crop as each other. At which point converting between the scale of one and the other should be no problem.

@forthrin
Copy link
Author

Oh, it was that easy? Thanks! I tried combining them using ImageMagick, and it looks correct. However, I think there is some height data missing. For example the huge descent to the left of Mount Agaat is simply black in the height map whereas it should have been a gradient. It this because you haven't been able to fully extract the height data due to limited understanding?

@MrCheeze
Copy link
Owner

Multiple possibilities. It could be the gradient only exists at a different LOD, yeah. Alternatively it might be constructed out of actors rather than a heightmap. Anything with an overhang is actually actors out of necessity, and I think most near-vertical slopes also are because vertically stretches heightmap terrain actually looks quite ugly. So heightmap alone is not always going to look correct.

@forthrin
Copy link
Author

forthrin commented Nov 12, 2019

So the in-game elevation colours/rings give the impression that the slope is much less steep than it actually is, because it looks better? Sounds probable for a design-aware company like Nintendo.

Well, the height map comes quite in handy anyway. It can be used for TSP maps where you want to let paths avoid very elevated (ie. hard-to-access) areas.

PS! The height map looks like someone drew it by hand with a Photoshop brush that lightens areas. Is this how you think it was constructed, or is there another explanation for its look?

PPS! What are these "actors" you're referring to?

@MrCheeze
Copy link
Owner

When I talk about looking better, I'm not talking about the map, I mean actually in-game it looks terrible when the land is vertically stretches using hrightmaps - the textures get awkwardly stretched, and you can't have even slight overhangs. So instead they use actors (which is the correct name for what I call objects") that are just lumps of terrain - grass, cliff, whatever.

I have no idea how the heightmap was actually constructed, it would be pretty funny if it was Photoshop as you say.

@forthrin
Copy link
Author

  1. All the labels/names of objects, are they from the binary, or did you create them yourself? (I suppose the prior, since the latter would be an insane amount of work, but why haven't Nintendo removed these prior to launching? I assume these are labels used in the code, that would normally be replaced with ints at compile time)

  2. Switch binaries, are they really mountable file systems (like an .iso or .dmg?) so that Switch games load content using fopen()? (I would assume so since people are doing advanced hacks like replacing Link with Zelda, etc.) Is there software to mount the binary from Linux/Mac?

@MrCheeze
Copy link
Owner

  1. All actors have an internal name and are referred to by string, since the game is 99% data-driven and uses names to reference actor types. Some have player-viewable names also (e.g. everything you can take a picture of, and many other things).

  2. There aren't tools to mount it, but there are tools to unpack/extract it.

@forthrin
Copy link
Author

Strange! It seems that would make for very un-optimized code if thousands of objects has to be looked by up strings all the time, this being a real-time game and all, but there is probably at least some hash table, then. Or maybe they cache the matches with integers once they have been looked up.

Can you post links to these tools? (Preferably command line based ones that work for Linux/macOS).

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

No branches or pull requests

2 participants