Send a PM to me with the commands used to run the program, what error was displayed on the console, and a text log (or picture, text log preferred) using -debug to give me lots more information. Sending the text log to a file is the easiest way to do this.
Example: AlphaVespucci.exe -w1 -obLeft -debug > output.txt
The "> output.txt" part will send all the output to the text file specified.
V.1.10 Nov. 3,2010
-Fixed -fullname/-replacename creating ".png" files (missing variable when cleaning up names).
-Added (-caveRange), works similar to -sliceRange.
-Added (-doublePixel), which adds more texture to blocks that have a better defined thickness. Causes rendering to take more time (50% longer when map is precached by file system). Applies to oblique type maps only. Probably needs more tweaking.
-Can also use (-nether) to select the nether map (maps with have "-nether" name attached for -hell or -nether).
-Reworked cave colors: gray - unlit areas, yellow - lit areas, red - lava, blue - water.
V.1.09 Oct.31,2010 (Halloween)
-Added (-hell) for rendering the hellish-looking dimension that was added for Halloween. The region is basically a large cave, so there isn't an efficient way (yet) to display the features in it without exposing some of the smaller cave areas.
-Hopefully fixed the zoom in/out bug on OpenLayers maps (inconsistency with the picture tiler).
-Removed the border CSS styling for the HTML body of an OpenLayers map, since it conflicts with mouse coordinates in Mozilla Firefox at the moment.
-May have fixed the error with one parameter not making the program work.
-Added (dualmap:) for adding a layer to a map as a base layer and an overlay (uses the same set of tiles)
-Made tile processing text prettier
-Fixed some HTML output for online maps
-Fixed extraction problems when generating online maps (downside is that it's platform dependent, but now all Windows versions should work with this)
-Can add comments at the beginning of a .conf line by using //
V.1.07 Sept.23,2010 Easy Online Maps!
-Added -tilemode parameter, which converts a .png or .conf file into a browsable map using OpenLayers. More instructions are included below
-Dragging a .conf file or a .png file onto the executable will activate -tilemode
-Fixed an error with attempting to access unused portions of a large map.
-Fixed positioning errors in large maps.
-Added option -recover for the rare case that a map does not finish being written to PNG (this command is most likely not applicable to anything before this version, due to the fixes mentioned above).
-Added option -exclude for pruning unusual chunk locations. Currently only acts in a square boundary around the origin (0,0) (not necessarily where you spawn).
-Minor improvement of initial usage of disk memory when rendering a large map.
-Updated some debug messages for clarity.
-Made -cavelimit have a different addon name than -cave
-Fixed an error with parameter processing not seeing some options
-Fixed a bug with trying to read map chunks that contained some file errors (thanks to BreakIt)
-Fixed caves rendering large blocks of map areas affected by the pitch black lighting bug
-Slight optimization of writing unused (blank) areas of the map to PNG
-Changed -debug to -mapDebug
-"-debug" now enables -mapDebug and -memInfo
-Fixed trimming errors that affected -obleft
-Added -lessDither, to reduce the "dithering" effects on oblique maps
-Added -realism (-real), which combines -noHeightColor,-gamma .8, and -lessDither in order to generate a version of the map drawn with a more twilit appearance
-Added a -debug option to show map creation information
-Dragging a folder onto the .exe will also add the -statistics parameter to the renderer
-Added a rough sanity check to the boundaries of the map (for servers that generate map chunks outside of reasonable ranges). Currently bounded between -100,000<=X<=100,000 and -100,000<=Z<=100,000. (Will be improved upon later) (Thanks to [email protected] for finding.)
-Added option -noSanity to disable the exclusion process.
-Added extra warning for excluded chunks and a warning for extreme (20 GB uncompressed PNG) map sizes (Currently, program may crash trying to create maps that need more than 2 billion pixels in a dimension, which is normally unlikely)
-Reworked some of the code
-Map chunk loading is faster (the largest bottleneck is currently loading files from the hard drive)
-Added slicing layers (-slice, -sliceUpto, -sliceRange)
-Added overlay option (-overlay)
-Added whitelists and blacklists (-whitelist, -blacklist)
-Added cave features (-cave, -cavelimit)
-Added some possible support for WINE users in directory finding
-Made output directory display just before rendering starts
-Added option to change output/working directory (-outputDir)
-Dragging a folder onto the program icon itself will now render an oblique-left image to the Desktop if possible.
The program is currently compiled as Windows 32bit. Please report any dependencies or errors/crashes you get while using this program. This has been shown to work in Windows XP, and Windows 7 (and therefore probably Vista as well). According to user 303 (thanks for the help), AlphaVespucci.exe can also be run under WINE (so far in Linux, MacOS is unknown currently):
It might also run on other UNIX-like OS's like Mac OS X with WINE installed, but I cannot confirm it.
You have to have WINE use the native Windows DLL of MSVCR90.dll by doing this:
[*:2ijoggjm]Install WINE. Duh.
[*:2ijoggjm]Install winetricks (http://wiki.winehq.org/winetricks) someway. Maybe it was automatically installed with the WINE package if you use a package manager. Otherwise, download the link given on that page, set the executable bit on a shell
chmod +x winetricks
or using a file manager.
[*:2ijoggjm]Run winetricks. A window should open with a list of actions to perform. Select vcrun2008 (MS Visual C++ 2008 libraries) and click OK.
Following these steps, you should be able to run AlphaVespucci under WINE.
Please note that at the moment, you will need to use the -p (-path) parameter as currently the World selection feature assumes it's looking in Windows directories.
A while ago, I found Minecraft, and another while ago, I was inspired by Cartograph's mapping ability. The result is this command line based renderer (written from scratch, C++), which has the capacity to render maps that may be too large for your computer's memory to work on all at once.
Special thanks to the Aperture Games server and PicSoul for help with testing.
Currently, the largest (personally) known map rendered with this program is ApertureGames' 996 MB SMP server map, back in the beginning of October.
To get started, run AlphaVespucci.exe on the command line (cmd.exe in Windows) or make a batch file and use some of the parameters listed below.
(Example: AlphaVespucci.exe -w1)
(Prints out a flat map of World 1.)
Output files by default are output as "<map folder>-option1-option2-etc.png" (Example: "World1-obliqueleft-day.png")
Note that this group of features are mutually exclusive, and only one will be active at a time, with "-path" taking precedence over the others.
Prints out World 1.
Prints out World 2.
Prints out World 3.
Prints out World 4.
Prints out World 5.
Each of above 5 options will read the appropriate map from the %APPDATA%/.minecraft/saves folder.
-p "<path>", -path "<path>"
This will read the map from the path given in quotes. Forward slashes (/) are __strongly__ preferred as directory separators. The last directory must be the folder containing the map directories (0-z,10-1r etc.) (the same place where level.dat is located).
Example: -p "C:/MyFolder/MyOtherFolders/MyMinecraftWorld/"
Selects the nether map, if it exists, from the map chosen. The nether and main maps will not interact with each other.
-outputDir "<output directory>"
Sets the working and output directory to a different location. If the program can't create a file here or the directory does not exist, the program will print an error.
Example: -outputdir "C:/OutputHere/"
Changing the output name
Note that this group of features are mutually exclusive, and only one will be active for current map render, with "-fullname" taking precedence over the others.
-name "<alternate mapname>"
Normally, the mapper will use the folder's name as the output prefix (example: "World1-flat-day.png"). This option replaces only the part that appears before the options.
Example: -name "Replacement" will output "Replacement-flat-day.png".
-fullName "<alternate mapname>", -replaceName "<alternate mapname>"
Instead of using the folder name and options as the output filename (example: "World1-flat-day.png"), this will replace the whole name before the .PNG extension.
Example: -fullname "Replacement" will output "Replacement.png".
Note that this group of features are mutually exclusive, and only one will be active for current map render, with "-obleft" taking precedence over the others.
This renders a simple overhead (flat) map. This option is active by default.
This renders an oblique (slanted) map. The map will look more textured and more features may be visible.
This renders an oblique (slanted) map with a more textured effect, but the axis will be changed so that "up" will be "up and to the right", and "left" will be "up and to the left". Requires 4x the memory of the simple overhead (flat) map.
This renders an oblique (slanted) map with a more textured effect, but the axis will be changed so that "up" will be "up and to the left", and "right" will be "up and to the right". Requires 4x the memory of the simple overhead (flat) map.
Prints a daytime version of the map. This option is active by default.
Prints a nighttime version of the map. Torches and lava will still be bright in this mode.
Renders water on the map. This option is active by default.
Does not render any water in the map.
Renders areas underground that aren't exposed to sunlight. Blue areas are unlit and yellow areas are lit. Depending on the depth of the cave, unlit areas will range from dark blue to blue, and lit areas from dark red to yellow. Output image will be aligned to the same dimensions of a non-cave map.
Renders areas underground that are up to <integer> depth from the surface. Black-blue areas are unlit, and lit areas are red. Useful for finding cave entrances close to the surface. Output image will be aligned to the same dimensions of a non-cave map.
Example: -cavelimit 15 will render cave spaces that are up to 15 blocks under the ground.
(With image editor and adding cave layer over a regular oblique-left map)
-caveRange <integerLow> <integerHigh>
Renders each layer in the cave image (to one image) in the range <integerLow> to <integerHigh> inclusive.
Slices are aligned to the shape of the original map being rendered.
Renders only the layer at the height specified by <integer> (0-127).
(Sliced layer 64, above water level)
Renders layers starting from the bottom, up to the layer specified by <integer> (0-127).
-sliceRange <integerLow> <integerHigh>
Renders each layer in the range <integerLow> to <integerHigh> inclusive. Will produce an image for each separate layer.
-sliceUptoRange <integerLow> <integerHigh>
Renders each image from the bottom up to the layer specified in the range <integerLow> to <integerHigh> inclusive. Will produce an image for each separate layer.
Disallows only the listed items from being rendered. <integer> represents a Block ID, <name> represents the name of a block (see bottom of readme). Both Block IDs and names can be used interchangably in the list. If a file is specified, it must contain only one block name/ID per line.
Example: -blacklist "Grass,Dirt"
Allows only the listed items to be rendered. <integer> represents a Block ID, <name> represents the name of a block (see bottom of readme). Both Block IDs and names can be used interchangably in the list. If a file is specified, it must contain only one block name/ID per line.
Example: -whitelist "Dirt"
Applies -gamma .8, -lessDither, and -noHeightColor to an oblique map (only -gamma .8 applies to a flat map).
Changes the overall brightness of the picture to be output. Reasonable values range from .2 to 2.0. Default is (1.0).
Removes the brightness factor applied to different altitudes of the map. Recommended to be left on for overhead (flat) maps in order to discern height.
Sets all rendered pixels to 50% opacity, for use in layering with an external editor.
Tones down the "dithering" effect seen in oblique maps.
Adds an extra pixel to the right of an existing picture during drawing. Image may become smoother looking, but increases rendering time.
Image output options
If one of these options causes the map to render multiple images (which is likely), a new folder, named after the map name + configuration, will be created to deposit them. Pixel based parameters will take precedence over others.
Combining the -wsplit and -hsplit settings can get you a rectangular set of cuts as opposed to getting a square grid via -squaresplit.
Files that are split will have the same base name, and _x_y appended to their name for the x,y position they represent.
Splits the image into <integer> pieces along the _width_ of the image. The renderer will try to make all parts equally sized.
x|x|x where x is a subimage.
Splits the image into pieces that are <integer> pixels wide along the _width_ of the image. The renderer will try to make all parts equally sized. (Image borders may prevent this, though.)
Splits the image into <integer> pieces along the _height_ of the image. The renderer will try to make all parts equally sized.
x where x is a subimage.
Splits the image into pieces that are <integer> pixels high along the _height_ of the image. The renderer will try to make all parts equally sized. (Image borders may prevent this, though.)
Splits the image into <integer> pieces along the _width_ and the _height_ of the image. The renderer will try to make all parts equally sized.
x|x|x where x is a subimage.
Splits the image into pieces <integer> pixels wide and high along the _width_ and the _height_ of the image. The renderer will try to make all parts equally sized. (Image borders may prevent this, though.)
Displays the current amount of rows or chunks being rendered. Also contains a small progress bar with completion percentage. This option is active by default.
Only displays the progress bar, extended to the width of the screen. The completion percentage is still present.
Display no indication of progress until rendering is done. No progress bar, percent meter, or timer will appear.
Display the total time spent running the program after rendering is finished. This is also enabled if (-showtimer) is enabled. The time will still display at the end even if -nometer is enabled.
Display a timer showing the amount of time being spent on rendering. The timer will appear to the right of the progress bar (the bar will be shortened slightly). This option is active by default.
Removes the timer display that appears to the right of the progress bar.
Removes almost all notifications except for completion and time elapsed if -time/-showtimer is enabled.
If the map requires more than 200 MB of RAM in order to render an image, the image will be broken down into multiple small images at a default of 10 MB in size. These options will change fragment sizes or remove them altogether. Warning: allocating a large enough chunk of memory in Windows may simply cause the program to crash.
Maps requiring more than 1000 MB of RAM will begin to store fragments on the hard drive as the renderer requires more mapping space, as defined by the maxRAM parameter.
Turns on the notifications of memory allocation. This will print the amount of RAM needed to hold the image, along with the submaps created, stored to disk, and retrieved from disk.
Changes the size of the submap fragments (in MB). Entering 0 will attempt to allocate the whole map as one single block. This may cause crashes as Windows sometimes has trouble allocating very large single blocks of memory.
This option is active by default, the default value is 10.
Sets the minimum size (in MB) the map must allocate in memory before the map is fragmented into submaps. If this is set larger than maxRAM, maxRAM will take precedence. Fragmenting the map memory helps Windows find space for memory allocation.
This option is active by default, the default value is 200.
By default, fragments are compressed (GZIP) when they are sent to the hard drive during very large map rendering. Disabling this may result in a slight speed increase.
Sets the maximum size (in MB) that the program is allowed to allocate while rendering. Large maps may crash if they attempt to allocate too much RAM. Maps that require more than this amount will use the hard drive as a temporary storage for fragments when they are not in use. A temporary folder will be created which will be mostly unique for the current map being rendered.
This option is active by default, the default is 1000. (1 GB)
Disables using the hard drive as a temporary storage location for fragments during rendering. Enabling this effectively disables maxRAM. Large maps may fail to find enough memory to render. -fragmentthreshold will still use -maxRAM's value.
The memory swapper will only hold enough submaps in memory to render the current row of map chunks. For very large maps, using this will not cause a significant performance loss. On average, the mapper will use about <100 MB of RAM.
These options may have value in certain conditions.
Skips the cropping stage that occurs before the image is rendered to a file. The resulting file will have larger areas containing only transparency.
Allows chunks that are outside a reasonable range |x,y|>100000 to be rendered. Such map portions are usually generated via a bug in the SMP server. Map may be insanely sized if allowed.
Shows extra information related to map generation and output.
Equivalent to using -mapDebug and -memInfo.
Prints the total counts for each block found in the world being rendered to a file having the same name as the map, but with "-stat" appended to the name.
Excludes all chunks that have a X or Z coordinate (absolute value) greater than the value of <integer>. Useful for chunks that like appearing over a 1000 units away from your main map.
Example: -exclude 1000 will exclude chunks that are x<-1000,x>1000,z<-1000,z>1000
-recover <temporary directory>
Attempts to redraw a map that failed to be written to file (i.e. rendering completed, but not the PNG file). Keep all arguments used to render the map the same to avoid not seeing the files. Not applicable to maps rendered with V.1.05 and earlier, if they were very large (the output will appear shifted).
Allowed Block Names
A new feature with V.1.07, AlphaVespucci can now automatically tile one or more maps and output necessary files to make a Google Maps-style map using the OpenLayers interface. (Note that the layer switching control is at the top right of the map.)
WARNING: This program assumes that all the input maps are the same size (all generated with the same map parameter (i.e. all -obleft, all -ob, etc.) ). Images will not overlap each other correctly if they are completely different sizes.
-tilemode <.PNG file>, -tilemode <.CONF file>
Generates an online browsable map which is tiled for efficient loading in a web page (small 50kb PNGs are easier for a webpage to handle than one 50 MB PNG).
If a PNG file is used as the parameter, the map's title will be the same name as the PNG file.
Using a .conf file, you can customize the titles of each map, and the title of the page.
All commands must be in the format "command:parameters", with no spaces around the colon.
Commands to use in the .conf file:
Example: AlphaVespucci.exe -tilemode ThisMap.png
Example: AlphaVespucci.exe -tilemode ThisConfigurationFile.conf
Sets the title of the page. If this is not supplied, it will use the same name as the mainmap parameter's file/title. This also serves as the name for the folder to be output.
Example: title:My Map Title (notice there is no space around the colon separating the command from the title phrase)
Sets the output directory of the map. The folder must exist beforehand.
(The program will output into the folder C:\OutputThingsHere\IntoThisFolder\(Title) and place index.html in the (Title) folder.
(Maps) All maps will appear in the layer switching tool in the order that they were listed in the .conf file.
Sets the first map that will be seen when the page loads. Can be set as <PNG file> or <MapTitle;PNG file>. If no MapTitle is supplied, it will be guessed from the PNG file's name. If this command is not supplied, the .conf file will be invalid.
Example: mainmap:Daytime Map;C:\files\etc\firstmap.png
Adds other maps that can be switched to with the layer control. These maps will be part of the "base layer" options (i.e. background)
Example: altmap:This could be a Nighttime Map;C:\files\etc\secondmap.png
Adds maps that can be placed on top of the map that is serving as a base layer. Generally recommended for whitelisted maps that show a few things (caves, diamonds, dungeons, etc.)
Example: overlay:Surface Caves;C:\files\etc\somecaves.png
Adds a map that will be both a base layer and an overlay. Same as using altmap: and overlay: for the same map.
Can comment a line using //
Example Batch File
(You would save this file to something.bat in Windows.)
This would set the -obleft map as the main map, and the base layer can be switched between each of the slices, nighttime, and nowater maps. Overlays would include the cavelimit map, the whitelists, and the caves added again, but this time as an overlay.
Worked great on the first try! I was only mildly disappointed when it rendered World1 instead of the world I dragged and dropped on it. So, I created a shortcut where the Target had -path at the end, problem solved!
I'm REALLY loving the power and control of this tool, and most of all, the reliability. I have two suggestions:
1) Add in similar functionality to cartographer's "Cave-mode"
2) Have both blacklist and whitelist parameters, where blocks with the entered data values are either excluded from the render, or are the only blocks rendered.
Out of interest what's the largest map file you've tried with this program?
Currently running it on our 365mb server map and seems to be working ok. Taking it's time but running steadily, if this works I will give you every diamond i ever find on Minecraft, ever. :biggrin.gif:
Thanks to Aperture Games I had a 290 MB map to work with, and that took one hour to render successfully into a 58.4 MB PNG that needed 1.3 GB of actual pixel space. For me it was rendering 10-25 chunks per second on my 2 GHz 2 GB RAM laptop (depending if it had seen the chunk before for some reason). Most of the testing was done by forcing a small map to be fragmented using the memory swapping system.
Separately, I wasn't actually able to open the PNG from the 290 MB world except via Google Picasa's progress image display thing because it was so large pixelwise, so normally it's recommended to split the image so you can actually view it on your computer.
It might also run on other UNIX-like OS's like Mac OS X with WINE installed, but I cannot confirm it. You might want to add a link to my results to your original post, so you don't scare away potential users when they read that it's compiled for Windows 32bit.
Thanks for your excellent contribution to the community. Keep up the good work!
When you say GUI, do you mean the progress bar and the count of what rows/chunks being rendered? It doesn't have a Windowed-type interface (yet).
I mostly meant it was compiled for Windows as some of the settings (looking for %appdata% containing .minecraft, guessing that dragging a folder gives %UserProfile% as the path) are Windows based. The code itself is otherwise written to be cross-platform (using libpng, zlib, and Boost), but I'd like to fix my program structure before I release source code for it. My first goal was to get it working in Windows first, and then test on a Linux distribution I have.
I'm surprised that it does work in WINE, though. What exactly does -o do (it's not part of the options the program has)?
Oops, sorry. I understood "Dragging a folder onto the program itself" to mean that your program creates a window that you can drop a folder on. Now I see you meant dropping a folder on the executable/shortcut itself.
About the -o part: I had a brainfart and confused the options with another cartography app. Of course I meant -fullname.
So the only issue I can find now is that it can't find the world directory if you use -w. This should be easy to fix, though (IFDEFs or something). The official linux offline client by Notch expects the root folder in ~/.minecraft under linux.
Anyway, there might be problems after all under WINE. I set my WINE configuration up to use some native Windows libraries (dlls) instead of builtin WINE ones (msvcp60, msvcr90), so that may be why it ran for me.
Your effort creating a cross-platform app is commendable.
I'll edit my post now.
Also: remove the -o part from your original post so as not to confuse others.
Actually, AlphaVespucci doesn't run out of the box under WINE. You have to have WINE use the native Windows DLL of MSVCR90.dll by doing this:
[*:169hatdk]Install WINE. Duh.
[*:169hatdk]Install winetricks (http://wiki.winehq.org/winetricks) someway. Maybe it was automatically installed with the WINE package if you use a package manager. Otherwise, download the link given on that page, set the executable bit on a shell
chmod +x winetricks
or using a file manager.
[*:169hatdk]Run winetricks. A window should open with a list of actions to perform. Select vcrun2008 (MS Visual C++ 2008 libraries) and click OK.
Following these steps, you should be able to run AlphaVespucci under WINE.
(By the way, winetricks can do some really neat things, like installing windows fonts, enable font smoothing, installing web browsers etc.)
I've been busy refactoring the code (feature bloat made the program end up passing 20 arguments into each class, which has driven me crazy already) and trying to make it more object-oriented, and looking into making a GUI version for Windows. I noticed 64bit would be way better with memory, but I would also have to look at how my program will work (or crash) depending on how I used my integers.