spoutn1k / mcmap

Pixel-art map visualizer for Minecraft. Maps are drawn from an isometric perspective.
GNU General Public License v3.0
312 stars 45 forks source link

Release #55

Closed Nicknaem closed 4 years ago

Nicknaem commented 4 years ago

is there any working release? I don't really have time to dive in, just wondering if there is any simple way to render out large map

spoutn1k commented 4 years ago

Unfortunately not, I am still not satisfied with the program as it is. When memory isn't an issue rendering maps, mcmap produces images with sizes of several gigabytes, that are a pain to visualize.

I am in the process of working on this issue. The branch onDemand cuts the necessary memory in half. I need to re-implement file caching as the original program did as to ensure the memory does not overflow.

As for a simple way, it all depends on the size of your map. mcmap should handle the creation provided it gets enough ram. If the image is too big, maybe use options to render parts.

The legacy version also had a feature to output tiled images. I am pondering as to bringing this back. Would you prefer a bunch of maps or a map cut up in squares ?

M3t0r commented 4 years ago

I had some issues with the way the legacy version named the image tiles. But the partial rendering to limit memory consumption (with the possibility to set a limit with -mem) was necessary for even mid-sized worlds. For tiling I wrote a custom program after even ImageMagick used to much memory (upwards of 15GB) to tile a ~250MB PNG file. I don't think that tiling output is a necessary feature.

spoutn1k commented 4 years ago

I had some issues with the way the legacy version named the image tiles.

Could you elaborate ? What naming scheme would you rather have ?

Right now, the legacy code for writing out the image has been completely scrapped. The memory is used as such: memoryProfile

With a buffer allocated for the final image, a buffer per thread (The big steps on the graph) and the rest used for loading a chunk at a time. This is naive and archaic and must go.

You mentionned an external program, so you'd rather have a single image in output, and then process it to get squares ? I could include code such as yours in the post-processing as well.

M3t0r commented 4 years ago

I don't remember what it was, but it was incompatible with Leaflet/Leaflet. It's been a few years since I used that last. I just know the way that ImageMagick was able to name the files was correct. In the end I had a bunch of files like tile_1_1.png, tile_1_2.png, tile_1_3.png, etc.

I would probably use a different tool for the tiling. a) they exist already, and b) that feels more unixy. And I'd rather not loose the option of having one full image.