PixelMap is a mapper to efficiently read, parse and output one or a set of top-down images of any Minecraft world. It has been efficiently written for speed and portability.
#############################################
# PixelMap script - BlockColor example file #
#############################################
# Script language created to increase usability
# and future updates of block colors in
# Minecraft.
#
# This line is a comment and can be placed
# anywhere in the file and will ignore all
# characters til next line occurs.
#
# All whitespaces like space and tab, will be ignored.
#
# It currently supports block ids and damage
# values and namespace ids vlues, hexadecimal and
# rgb/argb color.
#
# Usage
# <block_id[:<damage_value>[...]]|namespace_id>[ ...] = <hex_color>|<r g b[ a]> [# comment]
#
# Examples
# 0 = f0ffff
# 1 2 = 69ff00ff
# 3:1 = 127 127 127
# 3:2 = 50 127 128 129
# minecraft:air = 255 255 255 0
#
# Advanced showoff
# 1 2:3 2:4 5:23 67 = 456789 # Assign everything
Licenses
PixelMap, being the library, the CLI and GUI tool, is licensed under GPLv3.
Third-party libraries are bound through their respective licenses, but not directly to PixelMap.
I was unable to provide with comparison, like mcmap, Cartograph or c10t.
mcmap cannot generate top-of-view.(Way too slow too)
Cartograph crashed each time I tried to load the map.
c10t had too much dependences on several libraries that I was unable to find everyone. Therefor, it didn't start at all... And I couldn't find any documentation of how to use the tool.
If you doubt these results, then please provide with your test data here.
Edit: I got Cartograph working by placing the world in the Minecraft folder. First time it took more than 5 minutes, and second time took approximately 2:41(Used a stopwatch). It used 75MB constantly of memory, and in the end went up to about 150MB.
nice!
however; i prefer to use high-quality renderers, which is why i use overview.
I really wish it were faster (i have my server box auto run it every 4 hours) but i guess you cant really get too much faster when your having to process and render that much data! :/
however; i prefer to use high-quality renderers, which is why i use overview.
I could take that as an insult, but due that this mapper have no spreadrate, I don't blame you. If more people could test this and find bugs and suggest features, I would be more than happy to keep this more updated.
For benchmarking, what sort of setup are you using (file caching affecting times)?
I poked your program, and it tried rendering World 1 by itself. The render time is similar to my program when I add the -t 2 option to your program.
I noticed that the program info window flickers a lot while it's rendering. Is there a need to display every single change immediately, or is that your preference? I noticed that I lost a few seconds of time in my program a while ago because the console spent extra time trying to render each number update to the screen.
Also, right-click->Properties for the map folder (chunks only) says 2,996 files (in Windows XP), but your program reports 3001.
You could also make some test pictures for your other rendering modes and place thumbnails on your first post.
For benchmarking, what sort of setup are you using (file caching affecting times)?
AMD 2GHz Dual Core
2GB RAM 800MHz DDR2
PM use no caching. It's pure loaded and stored in RAM, which is why the use of RAM increases slowl
Quote from OrangeXP »
I poked your program, and it tried rendering World 1 by itself. The render time is similar to my program when I add the -t 2 option to your program.
Yes, I've found out that after I tested your program. Although, first time I tested your program it took over 10 minutes, and second time it was below 2 minutes. Same time as mine when I'm using 2 threads, although a tiny bit slower.
Quote from OrangeXP »
I noticed that the program info window flickers a lot while it's rendering. Is there a need to display every single change immediately, or is that your preference? I noticed that I lost a few seconds of time in my program a while ago because the console spent extra time trying to render each number update to the screen.
I use a separate thread for updating those values. It sleeps each loop, so it wont take up any special CPU time.
Quote from OrangeXP »
Also, right-click->Properties for the map folder (chunks only) says 2,996 files (in Windows XP), but your program reports 3001.
I think I'm counting all files, meaning that it also counts files that is not part of the chunks. I'll see what I can do about it.
Edit: This is not critical and it's harder to fix than I thought.
Quote from OrangeXP »
You could also make some test pictures for your other rendering modes and place thumbnails on your first post.
Yes, I've found out that after I tested your program. Although, first time I tested your program it took over 10 minutes, and second time it was below 2 minutes. Same time as mine when I'm using 2 threads, although a tiny bit slower.
I meant file caching as in how NTFS remembers recently accessed files, so the second rendering time is always shorter.
Quote from McTwist »
I use a separate thread for updating those values. It sleeps each loop, so it wont take up any special CPU time.
I kinda meant that the drawing routines may waste a small amount of time from the amount of drawing it does. Earlier, I wasted 4 out of 20 seconds of rendering time on a small map because the console was printing out each number from 1-~3000. I figure if you can't read each number that's on the screen, it's probably unnecessary to update that fast (despite how fancy it looks).
Quote from McTwist »
I think I'm counting all files, meaning that it also counts files that is not part of the chunks. I'll see what I can do about it.
Edit: This is not critical and it's harder to fix than I thought.
My program does the count when it's iterating over the files and finding things that are specifically labeled c.<x>.<z>.dat (Boost library makes directory iterating relatively easy).
I meant file caching as in how NTFS remembers recently accessed files, so the second rendering time is always shorter.
I ran both programs twice, and both was faster on the second run due the filecaching.
Quote from OrangeXP »
I kinda meant that the drawing routines may waste a small amount of time from the amount of drawing it does. Earlier, I wasted 4 out of 20 seconds of rendering time on a small map because the console was printing out each number from 1-~3000. I figure if you can't read each number that's on the screen, it's probably unnecessary to update that fast (despite how fancy it looks).
Oh yeah. Drawing routines are expensive, but as long as it does not conflict with the CPU then it doesn't conflict with other threads. Even though, I should add so it remember last value so it only updates when the value is updated, or just update it 10 times a second. I could also add an another parameter/program for servers that does not display the GUI(I know that the GUI looks like ****, but it is displaying the data at least).
Quote from OrangeXP »
My program does the count when it's iterating over the files and finding things that are specifically labeled c.<x>.<z>.dat (Boost library makes directory iterating relatively easy).
I don't use boost. I know boost are fancy, and I've used it myself. However, I don't need that library to do simple tasks, even if this issue isn't as simple anymore.
Oh! i'm afraid you misunderstood me when i said "High quality mapper"; i did not mean one that was more feature rich or well made. i meant one that rendered a more detailed image!
Overview renders very detailed images, your program is really nice but i just need tons of detail in my images.
Example: http://map.smp.em32.net/map/index.html
My mapper have a lot of features, but does not support isometric nor night. I will make these features later, but need to optimize the loader first, because it seems that the only thing that makes it faster tan other mappers if is you're using the multithreaded feature.
Overview looks like the same output as PM makes, except that it currently does not support Google maps. So when you're telling me "detailed image", what details does you referrer to?
About optimization: I found out that when I'm reading a map normally, it goes by a certain speed, but when I jump with the pointer to skip parts of the file that is unnecessary to read, it does not get optimized, but making the program go slower. I have no idea why this is, but I hope that someone could give me an answer to that question some day.
I'm guessing it's one of those "Use at your own risk" mapping tools?
Sort of. All programs ever created have a license that the usage of the program and the defects it creates does not give any responsibility to the creators. Although, this tool does not modify any map, and the only feature in this program that could at most crash your program is the threading. Although, it's stable enough so you don't have to worry unless you crash each time you test it. Tell me if you encounter problems.
I'm guessing it's one of those "Use at your own risk" mapping tools?
Sort of. All programs ever created have a license that the usage of the program and the defects it creates does not give any responsibility to the creators. Although, this tool does not modify any map, and the only feature in this program that could at most crash your program is the threading. Although, it's stable enough so you don't have to worry unless you crash each time you test it. Tell me if you encounter problems.
Nice screenshots.
Ok,Thats good to know,I'll download it tomorrow.
My mapper have a lot of features, but does not support isometric nor night. I will make these features later, but need to optimize the loader first, because it seems that the only thing that makes it faster tan other mappers if is you're using the multithreaded feature.
Overview looks like the same output as PM makes, except that it currently does not support Google maps. So when you're telling me "detailed image", what details does you referrer to?
About optimization: I found out that when I'm reading a map normally, it goes by a certain speed, but when I jump with the pointer to skip parts of the file that is unnecessary to read, it does not get optimized, but making the program go slower. I have no idea why this is, but I hope that someone could give me an answer to that question some day.
Overview uses actual textures...try zooming in all the way on the map he posted, you'll see the difference.
Pardon me on that one. I think I knew that before, but forgot about it.
And some information about progress: I tried to optimize the parser a bit more, and came up with a new idea that ended in the cleanest way to be up to 350% faster than the original parser. Although, when adding logging and other stuff, it became unclean, and therefor slower. I then instead made a correct continuous NBT parser, which is currently 10% slower, but it reads the data correctly, and the parser can be extended for more uses later on.
And the threading bug is still there, so I will take an even deeper look at it before releasing next update.
Pardon me on that one. I think I knew that before, but forgot about it.
And some information about progress: I tried to optimize the parser a bit more, and came up with a new idea that ended in the cleanest way to be up to 350% faster than the original parser. Although, when adding logging and other stuff, it became unclean, and therefor slower. I then instead made a correct continuous NBT parser, which is currently 10% slower, but it reads the data correctly, and the parser can be extended for more uses later on.
And the threading bug is still there, so I will take an even deeper look at it before releasing next update.
Thats some good progress there.
Do you also need the Mirrior download?
PixelMap is a mapper to efficiently read, parse and output one or a set of top-down images of any Minecraft world. It has been efficiently written for speed and portability.
Downloads
GUI Windows 1.21 64-bit: exe zip
GUI Linux 1.21 64-bit: deb rpm zip
GUI Mac 1.21 x86-64: dmg zip
CLI Windows 1.21 64-bit: zip
CLI Linux 1.21 64-bit: deb rpm zip
CLI Mac 1.21 x86-64: dmg zip
Source: https://git.aposoc.net/McTwist/PixelMap
Features
Example Output
15GB world, 269MB 31232x31232 PNG
Block Color format
Licenses
PixelMap, being the library, the CLI and GUI tool, is licensed under GPLv3.
Third-party libraries are bound through their respective licenses, but not directly to PixelMap.
Help me help you.
Left value is default and right is two threads on dual core processor. Both generated this image:
http://dl.dropbox.com/u/8304300/Minecraft/sl.png
Using this setup on first:
And this setup on second:
Also generated a log afterwards:
Which gave me this log:
http://dl.dropbox.com/u/8304300/Minecraft/log.txt
I was unable to provide with comparison, like mcmap, Cartograph or c10t.
mcmap cannot generate top-of-view.(Way too slow too)
Cartograph crashed each time I tried to load the map.
c10t had too much dependences on several libraries that I was unable to find everyone. Therefor, it didn't start at all... And I couldn't find any documentation of how to use the tool.
If you doubt these results, then please provide with your test data here.
Edit: I got Cartograph working by placing the world in the Minecraft folder. First time it took more than 5 minutes, and second time took approximately 2:41(Used a stopwatch). It used 75MB constantly of memory, and in the end went up to about 150MB.
Help me help you.
however; i prefer to use high-quality renderers, which is why i use overview.
I really wish it were faster (i have my server box auto run it every 4 hours) but i guess you cant really get too much faster when your having to process and render that much data! :/
Livestream
I could take that as an insult, but due that this mapper have no spreadrate, I don't blame you. If more people could test this and find bugs and suggest features, I would be more than happy to keep this more updated.
Help me help you.
I poked your program, and it tried rendering World 1 by itself. The render time is similar to my program when I add the -t 2 option to your program.
I noticed that the program info window flickers a lot while it's rendering. Is there a need to display every single change immediately, or is that your preference? I noticed that I lost a few seconds of time in my program a while ago because the console spent extra time trying to render each number update to the screen.
Also, right-click->Properties for the map folder (chunks only) says 2,996 files (in Windows XP), but your program reports 3001.
You could also make some test pictures for your other rendering modes and place thumbnails on your first post.
AMD 2GHz Dual Core
2GB RAM 800MHz DDR2
PM use no caching. It's pure loaded and stored in RAM, which is why the use of RAM increases slowl
Yes, I've found out that after I tested your program. Although, first time I tested your program it took over 10 minutes, and second time it was below 2 minutes. Same time as mine when I'm using 2 threads, although a tiny bit slower.
I use a separate thread for updating those values. It sleeps each loop, so it wont take up any special CPU time.
I think I'm counting all files, meaning that it also counts files that is not part of the chunks. I'll see what I can do about it.
Edit: This is not critical and it's harder to fix than I thought.
Thank you for suggesting that.
Help me help you.
I meant file caching as in how NTFS remembers recently accessed files, so the second rendering time is always shorter.
I kinda meant that the drawing routines may waste a small amount of time from the amount of drawing it does. Earlier, I wasted 4 out of 20 seconds of rendering time on a small map because the console was printing out each number from 1-~3000. I figure if you can't read each number that's on the screen, it's probably unnecessary to update that fast (despite how fancy it looks).
My program does the count when it's iterating over the files and finding things that are specifically labeled c.<x>.<z>.dat (Boost library makes directory iterating relatively easy).
I ran both programs twice, and both was faster on the second run due the filecaching.
Oh yeah. Drawing routines are expensive, but as long as it does not conflict with the CPU then it doesn't conflict with other threads. Even though, I should add so it remember last value so it only updates when the value is updated, or just update it 10 times a second. I could also add an another parameter/program for servers that does not display the GUI(I know that the GUI looks like ****, but it is displaying the data at least).
I don't use boost. I know boost are fancy, and I've used it myself. However, I don't need that library to do simple tasks, even if this issue isn't as simple anymore.
Help me help you.
Help me help you.
Overview renders very detailed images, your program is really nice but i just need tons of detail in my images.
Example: http://map.smp.em32.net/map/index.html
Livestream
Overview looks like the same output as PM makes, except that it currently does not support Google maps. So when you're telling me "detailed image", what details does you referrer to?
About optimization: I found out that when I'm reading a map normally, it goes by a certain speed, but when I jump with the pointer to skip parts of the file that is unnecessary to read, it does not get optimized, but making the program go slower. I have no idea why this is, but I hope that someone could give me an answer to that question some day.
Help me help you.
Screenshot of what it produces?
I'm guessing it's one of those "Use at your own risk" mapping tools?
Sort of. All programs ever created have a license that the usage of the program and the defects it creates does not give any responsibility to the creators. Although, this tool does not modify any map, and the only feature in this program that could at most crash your program is the threading. Although, it's stable enough so you don't have to worry unless you crash each time you test it. Tell me if you encounter problems.
Help me help you.
Nice screenshots.
Ok,Thats good to know,I'll download it tomorrow.
Overview uses actual textures...try zooming in all the way on the map he posted, you'll see the difference.
And some information about progress: I tried to optimize the parser a bit more, and came up with a new idea that ended in the cleanest way to be up to 350% faster than the original parser. Although, when adding logging and other stuff, it became unclean, and therefor slower. I then instead made a correct continuous NBT parser, which is currently 10% slower, but it reads the data correctly, and the parser can be extended for more uses later on.
And the threading bug is still there, so I will take an even deeper look at it before releasing next update.
Help me help you.
Thats some good progress there.
Do you also need the Mirrior download?
As I also said in the first post:
If you encounter problems, don't hesitate to post here or pm me.
Help me help you.
I mapped a 5.4k chunk world,Took 3:15.
Help me help you.