Cubitect / cubiomes-viewer

An efficient graphical Minecraft seed finder and map viewer.
GNU General Public License v3.0
976 stars 59 forks source link

Couple of bug reports, and a feature request #242

Closed Nel-S closed 5 months ago

Nel-S commented 1 year ago

For the bug reports:

  1. While the "Generating Protobases" screen is active (while the program is downloading a quad-feature seedlist to one's system for the first time), the Abort search button is still clickable, and clicking it subsequently disables that button for the entirety of the actual search that follows. If the search is outputting results, enabling the Stop on Results checkbox can halt the program, but otherwise there is no way to stop the program outside of force-quitting the app and reopening it.
  2. I mentioned this inside of a Discord server you are in, but in case you didn't see it: the individual octave option for Locate Climate Extreme and the biome map works by setting the nmax parameter of setClimateParaSeed() to the index of the selected octave in either menu. However, that parameter is designed to initialize exactly nmax octaves within the climate, so while the desired octave is indeed initialized, so is every octave that came before it (and thus those are factored into subsequent samples as well). (This can be most easily seen by the fact that the last octave for every climate returns the same output as the full climate itself. ) If this is intended behavior, I feel adding clarification to the two selection menus would be best; otherwise, my personal idea was to replace setClimateParaSeed()'s nmax with a bitarray to specify which octaves should be initialized (which would allow for full customization, and could also be easily implemented in Cubiomes Viewer by setting nmax to 1 << (number of options - selected index)), but for Cubiomes that would require knowing the number of octaves each climate contains in advance, which that library currently doesn't support. Obviously, feel free to fix the bug in whatever way you think is best.

Jereaux also previously found a bug with the getParaDescent function descending in the wrong direction, but given he explicitly pinged you about that in the aforementioned server I am guessing you are probably already aware of that.

In terms of the feature request: it would be useful for me if structure conditions could be set to only test the condition against the theoretical structure seed positions ((i.e. only getStructurePos()) as opposed to also factoring in biomes/terrain as isViableStructurePos() and isViableStructureTerrain() do, similar to how the first half of 48-bit searches function. (I was thinking of using that alongside the custom incremental search range to create lists of structure seeds without receiving duplicates or having to worry about any being disqualified due to the in-game biomes.) I would imagine this would simply require adding another checkbox to the menu (e.g. "Structure seed only") that if enabled returns the result immediately after getStructurePos, but again if you do implement this feel free to do so however you wish.

Cubitect commented 1 year ago

The program doesn't download anything. The protobase generation is done using a function in the cubiomes library that didn't have an abort mechanism and therefore didn't interact too well with Qt. I added a stopping flag, so the search should be interruptible in the next release.

The nmax argument indicates the size of the available buffer for the octaves. When this is less than is needed for the full generation, only the most significant octaves are initialized and the noise becomes a better approximation with increasing octaves. This is intended behavior. I'll try to make this a little more clear.

A new search mode which only runs the 48-bit search pass is probably the easiest way of supporting custom candidate searches. (You'll also be able to save the session after a search, making the results available as a seed list for the 48-bit generator.)

Cubitect commented 5 months ago

There is now a 48-bit only search mode, and the octave descriptions have been updated, including a more informative tooltip. I believe the other issues have been addressed, so I'll close this.